ETH Price: $2,448.63 (-8.82%)

Token

LinkPay (LINK)
 

Overview

Max Total Supply

100,000,000 LINK

Holders

20

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.110476211255737305 LINK

Value
$0.00
0x811f29e06091213b1fab41fe9deb7277a8e4affb
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:
LinkPay

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-23
*/

// SPDX-License-Identifier: MIT

/**

LINKPAY is a streamlined and secure payment solution that enables effortless one-click transactions. 
With a focus on simplicity, it offers a convenient way for users to make payments with confidence, eliminating the hassle of repetitive data entry. 
By ensuring a seamless and secure experience, LINKPAY redefines how transactions are conducted, making online payments smoother than ever.

BETA TESTING IS NOW LIVE!

Website: https://link.com/
Twitter: https://twitter.com/LINKPAY_coin
TG: https://t.me/linkpay_erc20

**/

pragma solidity 0.8.15;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

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

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

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

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);
    }

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

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

contract Ownable is Context {
    address private _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() external virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

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

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

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

}

interface IDexFactory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

contract LinkPay is ERC20, Ownable {

    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWalletAmount;

    IDexRouter public dexRouter;
    address public lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address taxAddress;

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

     // Anti-sandwithc-bot mappings and variables
    mapping(address => uint256) private _holderLastBuyBlock; // to hold last Buy temporarily
    bool public transferDelayEnabled = true;

    uint256 public buyFee;
    uint256 public sellFee;


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

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

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

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

    event EnabledTrading();

    event RemovedLimits();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedBuyFee(uint256 buyFee);

    event UpdatedSellFee(uint256 sellFee);

    event MaxTransactionExclusion(address _address, bool excluded);

    event BuyBackTriggered(uint256 amount);

    event OwnerForcedSwapBack(uint256 timestamp);

    event CaughtEarlyBuyer(address sniper);

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

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("LinkPay","LINK") {

        address newOwner = msg.sender; // can leave alone if owner is deployer.

        IDexRouter _dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        dexRouter = _dexRouter;

        // create pair
        lpPair = IDexFactory(_dexRouter.factory()).createPair(address(this), _dexRouter.WETH());
        _excludeFromMaxTransaction(address(lpPair), true);
        _excludeFromMaxTransaction(address(dexRouter), true);
        _setAutomatedMarketMakerPair(address(lpPair), true);

        uint256 totalSupply = 1 * 1e8 * 1e18;

        maxBuyAmount = totalSupply * 2 / 100;
        maxSellAmount = totalSupply * 2 / 100;
        maxWalletAmount = totalSupply * 2 / 100;
        swapTokensAtAmount = totalSupply * 5 / 1000;

        buyFee = 5;
        sellFee = 5;

        _excludeFromMaxTransaction(newOwner, true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);

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


        taxAddress = address(newOwner);

        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}

    // only enable if no plan to airdrop

    function enableTrading() external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        tradingActive = true;
        emit EnabledTrading();
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        emit RemovedLimits();
    }

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

    function _excludeFromMaxTransaction(address updAds, bool isExcluded) private {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

    function airdropToWallets(address[] memory wallets, uint256[] memory amountsInTokens) external onlyOwner {
        require(wallets.length == amountsInTokens.length, "arrays must be the same length");
        require(wallets.length < 600, "Can only airdrop 600 wallets per txn due to gas limits"); // allows for airdrop + launch at the same exact time, reducing delays and reducing sniper input.
        for(uint256 i = 0; i < wallets.length; i++){
            address wallet = wallets[i];
            uint256 amount = amountsInTokens[i];
            super._transfer(msg.sender, wallet, amount);
        }
    }

    function excludeFromMaxTransaction(address updAds, bool isEx) external onlyOwner {
        if(!isEx){
            require(updAds != lpPair, "Cannot remove uniswap pair from max txn");
        }
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

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

        _setAutomatedMarketMakerPair(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateBuyFees(uint256 _buyFee) external onlyOwner {
        buyFee = _buyFee;
        emit UpdatedBuyFee(buyFee);
    }

    function updateSellFees(uint256 _sellFee) external onlyOwner {
        sellFee = _sellFee;
        emit UpdatedSellFee(sellFee);
    }

    function returnToNormalTax() external onlyOwner {
        sellFee = 0;
        buyFee = 0;
    }

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

    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");
        require(amount > 0, "amount must be greater than 0");

        if(!tradingActive){
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
        }

        // anti sandwich bot
        if (automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to] && to != address(this) && to != address(dexRouter)){
            _holderLastBuyBlock[to] = block.number;
        }
        require(_holderLastBuyBlock[from] < block.number, "_transfer:: Anti sandwich bot enabled. Please try again later.");

        if(limitsInEffect){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]){
    
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
                        require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");            
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        if(amount > maxSellAmount){
                            amount = maxSellAmount;
                        }
                }
                else if (!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max tokens per wallet");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if(canSwap && tradingActive && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        // only take fees on buys/sells, do not take on wallet transfers
        if(!_isExcludedFromFees[from] && !_isExcludedFromFees[to]){
            uint256 fees = 0;
            // on sell
            if (automatedMarketMakerPairs[to] && sellFee > 0){
                fees = amount * sellFee / 100;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyFee > 0) {
        	    fees = amount * buyFee / 100;
            }
            if(fees > 0){
                super._transfer(from, address(this), fees);
            }
        	amount -= fees;
        }

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

    function swapTokensForEth(uint256 tokenAmount) private {

        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

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

    function sendETHToFee(uint256 amount) private {
        payable(taxAddress).transfer(amount);
    }

    function manualSwap() external {
        require(_msgSender()==taxAddress);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        if(contractBalance == 0) {return;}

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

        bool success;

        swapTokensForEth(contractBalance);

        uint256 ethBalance = address(this).balance;
        
        if(ethBalance > 0){
            (success,) = address(taxAddress).call{value: ethBalance}("");
        }
    }

    function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        require(_token != address(this), "Can't withdraw native tokens");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    // withdraw ETH if stuck or someone sends to the address
    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    // force Swap back if slippage issues.
    function forceSwapBack() external onlyOwner {
        require(balanceOf(address(this)) >= swapTokensAtAmount, "Can only swap when token amount is at or higher than restriction");
        swapping = true;
        swapBack();
        swapping = false;
        emit OwnerForcedSwapBack(block.timestamp);
    }

    // useful for buybacks or to reclaim any ETH on the contract in a way that helps holders.
    function buyBackTokens(uint256 amountInWei) external onlyOwner {
        require(amountInWei <= 10 ether, "May not buy more than 10 ETH in a single buy to reduce sandwich attacks");

        address[] memory path = new address[](2);
        path[0] = dexRouter.WETH();
        path[1] = address(this);

        // make the swap
        dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amountInWei}(
            0, // accept any amount of Ethereum
            path,
            address(0xdead),
            block.timestamp
        );
        emit BuyBackTriggered(amountInWei);
    }
}

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":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniper","type":"address"}],"name":"CaughtEarlyBuyer","type":"event"},{"anonymous":false,"inputs":[],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","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":[],"name":"RemovedLimits","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":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buyFee","type":"uint256"}],"name":"UpdatedBuyFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"UpdatedSellFee","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"amountsInTokens","type":"uint256[]"}],"name":"airdropToWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountInWei","type":"uint256"}],"name":"buyBackTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapBack","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":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"returnToNormalTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","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":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526001600c60146101000a81548160ff0219169083151502179055506000600c60156101000a81548160ff0219169083151502179055506001600e60006101000a81548160ff0219169083151502179055503480156200006257600080fd5b506040518060400160405280600781526020017f4c696e6b506179000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4c494e4b000000000000000000000000000000000000000000000000000000008152508160039081620000e0919062000e15565b508060049081620000f2919062000e15565b505050600062000107620005d960201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060003390506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000251573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000277919062000f66565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000305919062000f66565b6040518363ffffffff1660e01b81526004016200032492919062000fa9565b6020604051808303816000875af115801562000344573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036a919062000f66565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003df600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620005e160201b60201c565b62000414600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620005e160201b60201c565b62000449600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200067760201b60201c565b60006a52b7d2dcc80cd2e4000000905060646002826200046a919062001005565b62000476919062001095565b60068190555060646002826200048d919062001005565b62000499919062001095565b6007819055506064600282620004b0919062001005565b620004bc919062001095565b6008819055506103e8600582620004d4919062001005565b620004e0919062001095565b600b819055506005600f81905550600560108190555062000509836001620005e160201b60201c565b6200051c306001620005e160201b60201c565b6200053161dead6001620005e160201b60201c565b620005448360016200072a60201b60201c565b620005573060016200072a60201b60201c565b6200056c61dead60016200072a60201b60201c565b82600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005bf83826200087760201b60201c565b620005d083620009c760201b60201c565b5050506200134c565b600033905090565b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd674682826040516200066b929190620010ea565b60405180910390a15050565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006e08282620005e160201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6200073a620005d960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620007cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007c39062001178565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200086b91906200119a565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008e9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008e09062001207565b60405180910390fd5b8060026000828254620008fd919062001229565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000954919062001229565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009bb919062001297565b60405180910390a35050565b620009d7620005d960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a609062001178565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000adb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ad2906200132a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000c1d57607f821691505b60208210810362000c335762000c3262000bd5565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c9d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c5e565b62000ca9868362000c5e565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000cf662000cf062000cea8462000cc1565b62000ccb565b62000cc1565b9050919050565b6000819050919050565b62000d128362000cd5565b62000d2a62000d218262000cfd565b84845462000c6b565b825550505050565b600090565b62000d4162000d32565b62000d4e81848462000d07565b505050565b5b8181101562000d765762000d6a60008262000d37565b60018101905062000d54565b5050565b601f82111562000dc55762000d8f8162000c39565b62000d9a8462000c4e565b8101602085101562000daa578190505b62000dc262000db98562000c4e565b83018262000d53565b50505b505050565b600082821c905092915050565b600062000dea6000198460080262000dca565b1980831691505092915050565b600062000e05838362000dd7565b9150826002028217905092915050565b62000e208262000b9b565b67ffffffffffffffff81111562000e3c5762000e3b62000ba6565b5b62000e48825462000c04565b62000e5582828562000d7a565b600060209050601f83116001811462000e8d576000841562000e78578287015190505b62000e84858262000df7565b86555062000ef4565b601f19841662000e9d8662000c39565b60005b8281101562000ec75784890151825560018201915060208501945060208101905062000ea0565b8683101562000ee7578489015162000ee3601f89168262000dd7565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f2e8262000f01565b9050919050565b62000f408162000f21565b811462000f4c57600080fd5b50565b60008151905062000f608162000f35565b92915050565b60006020828403121562000f7f5762000f7e62000efc565b5b600062000f8f8482850162000f4f565b91505092915050565b62000fa38162000f21565b82525050565b600060408201905062000fc0600083018562000f98565b62000fcf602083018462000f98565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620010128262000cc1565b91506200101f8362000cc1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200105b576200105a62000fd6565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010a28262000cc1565b9150620010af8362000cc1565b925082620010c257620010c162001066565b5b828204905092915050565b60008115159050919050565b620010e481620010cd565b82525050565b600060408201905062001101600083018562000f98565b620011106020830184620010d9565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200116060208362001117565b91506200116d8262001128565b602082019050919050565b60006020820190508181036000830152620011938162001151565b9050919050565b6000602082019050620011b16000830184620010d9565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620011ef601f8362001117565b9150620011fc82620011b7565b602082019050919050565b600060208201905081810360008301526200122281620011e0565b9050919050565b6000620012368262000cc1565b9150620012438362000cc1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200127b576200127a62000fd6565b5b828201905092915050565b620012918162000cc1565b82525050565b6000602082019050620012ae600083018462001286565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006200131260268362001117565b91506200131f82620012b4565b604082019050919050565b60006020820190508181036000830152620013458162001303565b9050919050565b615614806200135c6000396000f3fe6080604052600436106102555760003560e01c80638366e79a11610139578063bbc0c742116100b6578063e2cd5fcd1161007a578063e2cd5fcd146108b1578063e2f45605146108c8578063eba4c333146108f3578063f2fde38b1461091c578063f5648a4f14610945578063fc155d1d1461095c5761025c565b8063bbc0c742146107cc578063c0246668146107f7578063c876d0b914610820578063d257b34f1461084b578063dd62ed3e146108745761025c565b80639a7a23d6116100fd5780639a7a23d6146106c1578063a457c2d7146106ea578063a9059cbb14610727578063aa4bde2814610764578063b62496f51461078f5761025c565b80638366e79a146105ec57806388e765ff146106295780638a8c523c146106545780638da5cb5b1461066b57806395d89b41146106965761025c565b8063452ed4f1116101d257806366d602ae1161019657806366d602ae1461050457806370a082311461052f578063715018a61461056c57806371fc468814610583578063751039fc146105ac5780637571336a146105c35761025c565b8063452ed4f11461045557806347062402146104805780634a62bb65146104ab57806351bc3c85146104d657806351f205e4146104ed5761025c565b80632307b441116102195780632307b4411461035c57806323b872dd146103855780632b14ca56146103c2578063313ce567146103ed57806339509351146104185761025c565b806306fdde03146102615780630758d9241461028c578063095ea7b3146102b757806310d5de53146102f457806318160ddd146103315761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b50610276610985565b6040516102839190613cac565b60405180910390f35b34801561029857600080fd5b506102a1610a17565b6040516102ae9190613d4d565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d99190613df0565b610a3d565b6040516102eb9190613e4b565b60405180910390f35b34801561030057600080fd5b5061031b60048036038101906103169190613e66565b610a5b565b6040516103289190613e4b565b60405180910390f35b34801561033d57600080fd5b50610346610a7b565b6040516103539190613ea2565b60405180910390f35b34801561036857600080fd5b50610383600480360381019061037e91906140c8565b610a85565b005b34801561039157600080fd5b506103ac60048036038101906103a79190614140565b610c14565b6040516103b99190613e4b565b60405180910390f35b3480156103ce57600080fd5b506103d7610d0c565b6040516103e49190613ea2565b60405180910390f35b3480156103f957600080fd5b50610402610d12565b60405161040f91906141af565b60405180910390f35b34801561042457600080fd5b5061043f600480360381019061043a9190613df0565b610d1b565b60405161044c9190613e4b565b60405180910390f35b34801561046157600080fd5b5061046a610dc7565b60405161047791906141d9565b60405180910390f35b34801561048c57600080fd5b50610495610ded565b6040516104a29190613ea2565b60405180910390f35b3480156104b757600080fd5b506104c0610df3565b6040516104cd9190613e4b565b60405180910390f35b3480156104e257600080fd5b506104eb610e06565b005b3480156104f957600080fd5b50610502610ea3565b005b34801561051057600080fd5b50610519610ffe565b6040516105269190613ea2565b60405180910390f35b34801561053b57600080fd5b5061055660048036038101906105519190613e66565b611004565b6040516105639190613ea2565b60405180910390f35b34801561057857600080fd5b5061058161104c565b005b34801561058f57600080fd5b506105aa60048036038101906105a591906141f4565b6111a4565b005b3480156105b857600080fd5b506105c161127e565b005b3480156105cf57600080fd5b506105ea60048036038101906105e5919061424d565b61135e565b005b3480156105f857600080fd5b50610613600480360381019061060e919061428d565b6114e6565b6040516106209190613e4b565b60405180910390f35b34801561063557600080fd5b5061063e61179a565b60405161064b9190613ea2565b60405180910390f35b34801561066057600080fd5b506106696117a0565b005b34801561067757600080fd5b506106806118d0565b60405161068d91906141d9565b60405180910390f35b3480156106a257600080fd5b506106ab6118fa565b6040516106b89190613cac565b60405180910390f35b3480156106cd57600080fd5b506106e860048036038101906106e3919061424d565b61198c565b005b3480156106f657600080fd5b50610711600480360381019061070c9190613df0565b611b07565b60405161071e9190613e4b565b60405180910390f35b34801561073357600080fd5b5061074e60048036038101906107499190613df0565b611bf2565b60405161075b9190613e4b565b60405180910390f35b34801561077057600080fd5b50610779611c10565b6040516107869190613ea2565b60405180910390f35b34801561079b57600080fd5b506107b660048036038101906107b19190613e66565b611c16565b6040516107c39190613e4b565b60405180910390f35b3480156107d857600080fd5b506107e1611c36565b6040516107ee9190613e4b565b60405180910390f35b34801561080357600080fd5b5061081e6004803603810190610819919061424d565b611c49565b005b34801561082c57600080fd5b50610835611d89565b6040516108429190613e4b565b60405180910390f35b34801561085757600080fd5b50610872600480360381019061086d91906141f4565b611d9c565b005b34801561088057600080fd5b5061089b6004803603810190610896919061428d565b611f02565b6040516108a89190613ea2565b60405180910390f35b3480156108bd57600080fd5b506108c6611f89565b005b3480156108d457600080fd5b506108dd612032565b6040516108ea9190613ea2565b60405180910390f35b3480156108ff57600080fd5b5061091a600480360381019061091591906141f4565b612038565b005b34801561092857600080fd5b50610943600480360381019061093e9190613e66565b612112565b005b34801561095157600080fd5b5061095a6122d8565b005b34801561096857600080fd5b50610983600480360381019061097e91906141f4565b6123e0565b005b606060038054610994906142fc565b80601f01602080910402602001604051908101604052809291908181526020018280546109c0906142fc565b8015610a0d5780601f106109e257610100808354040283529160200191610a0d565b820191906000526020600020905b8154815290600101906020018083116109f057829003601f168201915b5050505050905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610a51610a4a612710565b8484612718565b6001905092915050565b60126020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b610a8d612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1390614379565b60405180910390fd5b8051825114610b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b57906143e5565b60405180910390fd5b610258825110610ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9c90614477565b60405180910390fd5b60005b8251811015610c0f576000838281518110610bc657610bc5614497565b5b602002602001015190506000838381518110610be557610be4614497565b5b60200260200101519050610bfa3383836128e1565b50508080610c07906144f5565b915050610ba8565b505050565b6000610c21848484612b4a565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c6c612710565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce3906145af565b60405180910390fd5b610d0085610cf8612710565b858403612718565b60019150509392505050565b60105481565b60006012905090565b6000610dbd610d28612710565b848460016000610d36612710565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610db891906145cf565b612718565b6001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b600c60149054906101000a900460ff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e47612710565b73ffffffffffffffffffffffffffffffffffffffff1614610e6757600080fd5b6000610e7230611004565b90506000811115610e8757610e8681613734565b5b60004790506000811115610e9f57610e9e81613977565b5b5050565b610eab612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190614379565b60405180910390fd5b600b54610f4630611004565b1015610f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7e90614697565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550610faa6139e3565b6000600a60146101000a81548160ff0219169083151502179055507f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb3242604051610ff49190613ea2565b60405180910390a1565b60075481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611054612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110da90614379565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6111ac612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461123b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123290614379565b60405180910390fd5b80600f819055507f03cd3090e7c409e4a7ffd2d90ff610979f4a94a87a512188b7b615671bfb772f600f546040516112739190613ea2565b60405180910390a150565b611286612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130c90614379565b60405180910390fd5b6000600c60146101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b611366612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ec90614379565b60405180910390fd5b8061148b57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361148a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148190614729565b60405180910390fd5b5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006114f0612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461157f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157690614379565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e590614795565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361165c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165390614801565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161169791906141d9565b602060405180830381865afa1580156116b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d89190614836565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611715929190614863565b6020604051808303816000875af1158015611734573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175891906148a1565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438848260405161178b929190614863565b60405180910390a15092915050565b60065481565b6117a8612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182e90614379565b60405180910390fd5b600c60159054906101000a900460ff1615611887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187e9061491a565b60405180910390fd5b6001600c60156101000a81548160ff0219169083151502179055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611909906142fc565b80601f0160208091040260200160405190810160405280929190818152602001828054611935906142fc565b80156119825780601f1061195757610100808354040283529160200191611982565b820191906000526020600020905b81548152906001019060200180831161196557829003601f168201915b5050505050905090565b611994612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1a90614379565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aaa906149ac565b60405180910390fd5b611abd8282613ad4565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008060016000611b16612710565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611bd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bca90614a3e565b60405180910390fd5b611be7611bde612710565b85858403612718565b600191505092915050565b6000611c06611bff612710565b8484612b4a565b6001905092915050565b60085481565b60136020528060005260406000206000915054906101000a900460ff1681565b600c60159054906101000a900460ff1681565b611c51612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd790614379565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d7d9190613e4b565b60405180910390a25050565b600e60009054906101000a900460ff1681565b611da4612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2a90614379565b60405180910390fd5b6103e86001611e40610a7b565b611e4a9190614a5e565b611e549190614ae7565b811015611e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8d90614b8a565b60405180910390fd5b60146001611ea2610a7b565b611eac9190614a5e565b611eb69190614ae7565b811115611ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eef90614c1c565b60405180910390fd5b80600b8190555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611f91612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612020576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201790614379565b60405180910390fd5b60006010819055506000600f81905550565b600b5481565b612040612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c690614379565b60405180910390fd5b806010819055507f274faecd49018fb411281f27986b6b4acc86e5db4100735531acd18b7b6d5f936010546040516121079190613ea2565b60405180910390a150565b61211a612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a090614379565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220f90614cae565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6122e0612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461236f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236690614379565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161239590614cff565b60006040518083038185875af1925050503d80600081146123d2576040519150601f19603f3d011682016040523d82523d6000602084013e6123d7565b606091505b50508091505050565b6123e8612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612477576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246e90614379565b60405180910390fd5b678ac7230489e800008111156124c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b990614dac565b60405180910390fd5b6000600267ffffffffffffffff8111156124df576124de613ec2565b5b60405190808252806020026020018201604052801561250d5781602001602082028036833780820191505090505b509050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a19190614de1565b816000815181106125b5576125b4614497565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050308160018151811061260457612603614497565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008461dead426040518663ffffffff1660e01b81526004016126a39493929190614f07565b6000604051808303818588803b1580156126bc57600080fd5b505af11580156126d0573d6000803e3d6000fd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d684820568826040516127049190613ea2565b60405180910390a15050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277e90614fc5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ed90615057565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516128d49190613ea2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612950576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612947906150e9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b69061517b565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3c9061520d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ad891906145cf565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b3c9190613ea2565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612bb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb0906150e9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1f9061517b565b60405180910390fd5b60008111612c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6290615279565b60405180910390fd5b600c60159054906101000a900460ff16612d6057601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d205750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612d5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d56906152e5565b60405180910390fd5b5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e035750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e3b57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e955750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612edf5743600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b43600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612f60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5790615377565b60405180910390fd5b600c60149054906101000a900460ff16156133c457612f7d6118d0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612feb5750612fbb6118d0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156130245750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561305e575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156130b45750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561310a5750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133c357601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131b25750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613259576006548111156131fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131f390615409565b60405180910390fd5b60085461320883611004565b8261321391906145cf565b1115613254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161324b90615475565b60405180910390fd5b6133c2565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132fc5750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613316576007548111156133115760075490505b6133c1565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166133c05760085461337383611004565b8261337e91906145cf565b11156133bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133b690615507565b60405180910390fd5b5b5b5b5b5b60006133cf30611004565b90506000600b5482101590508080156133f45750600c60159054906101000a900460ff165b801561340d5750600a60149054906101000a900460ff16155b80156134635750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134b95750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561350f5750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613553576001600a60146101000a81548160ff0219169083151502179055506135376139e3565b6000600a60146101000a81548160ff0219169083151502179055505b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135f75750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613722576000601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561365957506000601054115b1561367f5760646010548561366e9190614a5e565b6136789190614ae7565b90506136fd565b601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136da57506000600f54115b156136fc576064600f54856136ef9190614a5e565b6136f99190614ae7565b90505b5b6000811115613712576137118630836128e1565b5b808461371e9190615527565b9350505b61372d8585856128e1565b5050505050565b6000600267ffffffffffffffff81111561375157613750613ec2565b5b60405190808252806020026020018201604052801561377f5781602001602082028036833780820191505090505b509050308160008151811061379757613796614497565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561383e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138629190614de1565b8160018151811061387657613875614497565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506138dd30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612718565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161394195949392919061555b565b600060405180830381600087803b15801561395b57600080fd5b505af115801561396f573d6000803e3d6000fd5b505050505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156139df573d6000803e3d6000fd5b5050565b60006139ee30611004565b9050600081036139fe5750613ad2565b6006600b54613a0d9190614a5e565b811115613a26576006600b54613a239190614a5e565b90505b6000613a3182613734565b60004790506000811115613ace57600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613a8590614cff565b60006040518083038185875af1925050503d8060008114613ac2576040519150601f19603f3d011682016040523d82523d6000602084013e613ac7565b606091505b5050809250505b5050505b565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613b358282613b7f565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613c079291906155b5565b60405180910390a15050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613c4d578082015181840152602081019050613c32565b83811115613c5c576000848401525b50505050565b6000601f19601f8301169050919050565b6000613c7e82613c13565b613c888185613c1e565b9350613c98818560208601613c2f565b613ca181613c62565b840191505092915050565b60006020820190508181036000830152613cc68184613c73565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000613d13613d0e613d0984613cce565b613cee565b613cce565b9050919050565b6000613d2582613cf8565b9050919050565b6000613d3782613d1a565b9050919050565b613d4781613d2c565b82525050565b6000602082019050613d626000830184613d3e565b92915050565b6000604051905090565b600080fd5b600080fd5b6000613d8782613cce565b9050919050565b613d9781613d7c565b8114613da257600080fd5b50565b600081359050613db481613d8e565b92915050565b6000819050919050565b613dcd81613dba565b8114613dd857600080fd5b50565b600081359050613dea81613dc4565b92915050565b60008060408385031215613e0757613e06613d72565b5b6000613e1585828601613da5565b9250506020613e2685828601613ddb565b9150509250929050565b60008115159050919050565b613e4581613e30565b82525050565b6000602082019050613e606000830184613e3c565b92915050565b600060208284031215613e7c57613e7b613d72565b5b6000613e8a84828501613da5565b91505092915050565b613e9c81613dba565b82525050565b6000602082019050613eb76000830184613e93565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613efa82613c62565b810181811067ffffffffffffffff82111715613f1957613f18613ec2565b5b80604052505050565b6000613f2c613d68565b9050613f388282613ef1565b919050565b600067ffffffffffffffff821115613f5857613f57613ec2565b5b602082029050602081019050919050565b600080fd5b6000613f81613f7c84613f3d565b613f22565b90508083825260208201905060208402830185811115613fa457613fa3613f69565b5b835b81811015613fcd5780613fb98882613da5565b845260208401935050602081019050613fa6565b5050509392505050565b600082601f830112613fec57613feb613ebd565b5b8135613ffc848260208601613f6e565b91505092915050565b600067ffffffffffffffff8211156140205761401f613ec2565b5b602082029050602081019050919050565b600061404461403f84614005565b613f22565b9050808382526020820190506020840283018581111561406757614066613f69565b5b835b81811015614090578061407c8882613ddb565b845260208401935050602081019050614069565b5050509392505050565b600082601f8301126140af576140ae613ebd565b5b81356140bf848260208601614031565b91505092915050565b600080604083850312156140df576140de613d72565b5b600083013567ffffffffffffffff8111156140fd576140fc613d77565b5b61410985828601613fd7565b925050602083013567ffffffffffffffff81111561412a57614129613d77565b5b6141368582860161409a565b9150509250929050565b60008060006060848603121561415957614158613d72565b5b600061416786828701613da5565b935050602061417886828701613da5565b925050604061418986828701613ddb565b9150509250925092565b600060ff82169050919050565b6141a981614193565b82525050565b60006020820190506141c460008301846141a0565b92915050565b6141d381613d7c565b82525050565b60006020820190506141ee60008301846141ca565b92915050565b60006020828403121561420a57614209613d72565b5b600061421884828501613ddb565b91505092915050565b61422a81613e30565b811461423557600080fd5b50565b60008135905061424781614221565b92915050565b6000806040838503121561426457614263613d72565b5b600061427285828601613da5565b925050602061428385828601614238565b9150509250929050565b600080604083850312156142a4576142a3613d72565b5b60006142b285828601613da5565b92505060206142c385828601613da5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061431457607f821691505b602082108103614327576143266142cd565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614363602083613c1e565b915061436e8261432d565b602082019050919050565b6000602082019050818103600083015261439281614356565b9050919050565b7f617272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b60006143cf601e83613c1e565b91506143da82614399565b602082019050919050565b600060208201905081810360008301526143fe816143c2565b9050919050565b7f43616e206f6e6c792061697264726f70203630302077616c6c6574732070657260008201527f2074786e2064756520746f20676173206c696d69747300000000000000000000602082015250565b6000614461603683613c1e565b915061446c82614405565b604082019050919050565b6000602082019050818103600083015261449081614454565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061450082613dba565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614532576145316144c6565b5b600182019050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614599602883613c1e565b91506145a48261453d565b604082019050919050565b600060208201905081810360008301526145c88161458c565b9050919050565b60006145da82613dba565b91506145e583613dba565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561461a576146196144c6565b5b828201905092915050565b7f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060008201527f6973206174206f7220686967686572207468616e207265737472696374696f6e602082015250565b6000614681604083613c1e565b915061468c82614625565b604082019050919050565b600060208201905081810360008301526146b081614674565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614713602783613c1e565b915061471e826146b7565b604082019050919050565b6000602082019050818103600083015261474281614706565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b600061477f601a83613c1e565b915061478a82614749565b602082019050919050565b600060208201905081810360008301526147ae81614772565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e7300000000600082015250565b60006147eb601c83613c1e565b91506147f6826147b5565b602082019050919050565b6000602082019050818103600083015261481a816147de565b9050919050565b60008151905061483081613dc4565b92915050565b60006020828403121561484c5761484b613d72565b5b600061485a84828501614821565b91505092915050565b600060408201905061487860008301856141ca565b6148856020830184613e93565b9392505050565b60008151905061489b81614221565b92915050565b6000602082840312156148b7576148b6613d72565b5b60006148c58482850161488c565b91505092915050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b6000614904601783613c1e565b915061490f826148ce565b602082019050919050565b60006020820190508181036000830152614933816148f7565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614996603983613c1e565b91506149a18261493a565b604082019050919050565b600060208201905081810360008301526149c581614989565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614a28602583613c1e565b9150614a33826149cc565b604082019050919050565b60006020820190508181036000830152614a5781614a1b565b9050919050565b6000614a6982613dba565b9150614a7483613dba565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614aad57614aac6144c6565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614af282613dba565b9150614afd83613dba565b925082614b0d57614b0c614ab8565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e312520746f74616c20737570706c792e00000000000000000000000000602082015250565b6000614b74603383613c1e565b9150614b7f82614b18565b604082019050919050565b60006020820190508181036000830152614ba381614b67565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20352520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000614c06603283613c1e565b9150614c1182614baa565b604082019050919050565b60006020820190508181036000830152614c3581614bf9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614c98602683613c1e565b9150614ca382614c3c565b604082019050919050565b60006020820190508181036000830152614cc781614c8b565b9050919050565b600081905092915050565b50565b6000614ce9600083614cce565b9150614cf482614cd9565b600082019050919050565b6000614d0a82614cdc565b9150819050919050565b7f4d6179206e6f7420627579206d6f7265207468616e2031302045544820696e2060008201527f612073696e676c652062757920746f207265647563652073616e64776963682060208201527f61747461636b7300000000000000000000000000000000000000000000000000604082015250565b6000614d96604783613c1e565b9150614da182614d14565b606082019050919050565b60006020820190508181036000830152614dc581614d89565b9050919050565b600081519050614ddb81613d8e565b92915050565b600060208284031215614df757614df6613d72565b5b6000614e0584828501614dcc565b91505092915050565b6000819050919050565b6000614e33614e2e614e2984614e0e565b613cee565b613dba565b9050919050565b614e4381614e18565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614e7e81613d7c565b82525050565b6000614e908383614e75565b60208301905092915050565b6000602082019050919050565b6000614eb482614e49565b614ebe8185614e54565b9350614ec983614e65565b8060005b83811015614efa578151614ee18882614e84565b9750614eec83614e9c565b925050600181019050614ecd565b5085935050505092915050565b6000608082019050614f1c6000830187614e3a565b8181036020830152614f2e8186614ea9565b9050614f3d60408301856141ca565b614f4a6060830184613e93565b95945050505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614faf602483613c1e565b9150614fba82614f53565b604082019050919050565b60006020820190508181036000830152614fde81614fa2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615041602283613c1e565b915061504c82614fe5565b604082019050919050565b6000602082019050818103600083015261507081615034565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006150d3602583613c1e565b91506150de82615077565b604082019050919050565b60006020820190508181036000830152615102816150c6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615165602383613c1e565b915061517082615109565b604082019050919050565b6000602082019050818103600083015261519481615158565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006151f7602683613c1e565b91506152028261519b565b604082019050919050565b60006020820190508181036000830152615226816151ea565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b6000615263601d83613c1e565b915061526e8261522d565b602082019050919050565b6000602082019050818103600083015261529281615256565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006152cf601683613c1e565b91506152da82615299565b602082019050919050565b600060208201905081810360008301526152fe816152c2565b9050919050565b7f5f7472616e736665723a3a20416e74692073616e647769636820626f7420656e60008201527f61626c65642e20506c656173652074727920616761696e206c617465722e0000602082015250565b6000615361603e83613c1e565b915061536c82615305565b604082019050919050565b6000602082019050818103600083015261539081615354565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b60006153f3602883613c1e565b91506153fe82615397565b604082019050919050565b60006020820190508181036000830152615422816153e6565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b600061545f601883613c1e565b915061546a82615429565b602082019050919050565b6000602082019050818103600083015261548e81615452565b9050919050565b7f43616e6e6f7420457863656564206d617820746f6b656e73207065722077616c60008201527f6c65740000000000000000000000000000000000000000000000000000000000602082015250565b60006154f1602383613c1e565b91506154fc82615495565b604082019050919050565b60006020820190508181036000830152615520816154e4565b9050919050565b600061553282613dba565b915061553d83613dba565b9250828210156155505761554f6144c6565b5b828203905092915050565b600060a0820190506155706000830188613e93565b61557d6020830187614e3a565b818103604083015261558f8186614ea9565b905061559e60608301856141ca565b6155ab6080830184613e93565b9695505050505050565b60006040820190506155ca60008301856141ca565b6155d76020830184613e3c565b939250505056fea2646970667358221220892d6d87ec599bcdc56c073423bd55c0649f98a575d846c358c4a2b0aa048c6264736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106102555760003560e01c80638366e79a11610139578063bbc0c742116100b6578063e2cd5fcd1161007a578063e2cd5fcd146108b1578063e2f45605146108c8578063eba4c333146108f3578063f2fde38b1461091c578063f5648a4f14610945578063fc155d1d1461095c5761025c565b8063bbc0c742146107cc578063c0246668146107f7578063c876d0b914610820578063d257b34f1461084b578063dd62ed3e146108745761025c565b80639a7a23d6116100fd5780639a7a23d6146106c1578063a457c2d7146106ea578063a9059cbb14610727578063aa4bde2814610764578063b62496f51461078f5761025c565b80638366e79a146105ec57806388e765ff146106295780638a8c523c146106545780638da5cb5b1461066b57806395d89b41146106965761025c565b8063452ed4f1116101d257806366d602ae1161019657806366d602ae1461050457806370a082311461052f578063715018a61461056c57806371fc468814610583578063751039fc146105ac5780637571336a146105c35761025c565b8063452ed4f11461045557806347062402146104805780634a62bb65146104ab57806351bc3c85146104d657806351f205e4146104ed5761025c565b80632307b441116102195780632307b4411461035c57806323b872dd146103855780632b14ca56146103c2578063313ce567146103ed57806339509351146104185761025c565b806306fdde03146102615780630758d9241461028c578063095ea7b3146102b757806310d5de53146102f457806318160ddd146103315761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b50610276610985565b6040516102839190613cac565b60405180910390f35b34801561029857600080fd5b506102a1610a17565b6040516102ae9190613d4d565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d99190613df0565b610a3d565b6040516102eb9190613e4b565b60405180910390f35b34801561030057600080fd5b5061031b60048036038101906103169190613e66565b610a5b565b6040516103289190613e4b565b60405180910390f35b34801561033d57600080fd5b50610346610a7b565b6040516103539190613ea2565b60405180910390f35b34801561036857600080fd5b50610383600480360381019061037e91906140c8565b610a85565b005b34801561039157600080fd5b506103ac60048036038101906103a79190614140565b610c14565b6040516103b99190613e4b565b60405180910390f35b3480156103ce57600080fd5b506103d7610d0c565b6040516103e49190613ea2565b60405180910390f35b3480156103f957600080fd5b50610402610d12565b60405161040f91906141af565b60405180910390f35b34801561042457600080fd5b5061043f600480360381019061043a9190613df0565b610d1b565b60405161044c9190613e4b565b60405180910390f35b34801561046157600080fd5b5061046a610dc7565b60405161047791906141d9565b60405180910390f35b34801561048c57600080fd5b50610495610ded565b6040516104a29190613ea2565b60405180910390f35b3480156104b757600080fd5b506104c0610df3565b6040516104cd9190613e4b565b60405180910390f35b3480156104e257600080fd5b506104eb610e06565b005b3480156104f957600080fd5b50610502610ea3565b005b34801561051057600080fd5b50610519610ffe565b6040516105269190613ea2565b60405180910390f35b34801561053b57600080fd5b5061055660048036038101906105519190613e66565b611004565b6040516105639190613ea2565b60405180910390f35b34801561057857600080fd5b5061058161104c565b005b34801561058f57600080fd5b506105aa60048036038101906105a591906141f4565b6111a4565b005b3480156105b857600080fd5b506105c161127e565b005b3480156105cf57600080fd5b506105ea60048036038101906105e5919061424d565b61135e565b005b3480156105f857600080fd5b50610613600480360381019061060e919061428d565b6114e6565b6040516106209190613e4b565b60405180910390f35b34801561063557600080fd5b5061063e61179a565b60405161064b9190613ea2565b60405180910390f35b34801561066057600080fd5b506106696117a0565b005b34801561067757600080fd5b506106806118d0565b60405161068d91906141d9565b60405180910390f35b3480156106a257600080fd5b506106ab6118fa565b6040516106b89190613cac565b60405180910390f35b3480156106cd57600080fd5b506106e860048036038101906106e3919061424d565b61198c565b005b3480156106f657600080fd5b50610711600480360381019061070c9190613df0565b611b07565b60405161071e9190613e4b565b60405180910390f35b34801561073357600080fd5b5061074e60048036038101906107499190613df0565b611bf2565b60405161075b9190613e4b565b60405180910390f35b34801561077057600080fd5b50610779611c10565b6040516107869190613ea2565b60405180910390f35b34801561079b57600080fd5b506107b660048036038101906107b19190613e66565b611c16565b6040516107c39190613e4b565b60405180910390f35b3480156107d857600080fd5b506107e1611c36565b6040516107ee9190613e4b565b60405180910390f35b34801561080357600080fd5b5061081e6004803603810190610819919061424d565b611c49565b005b34801561082c57600080fd5b50610835611d89565b6040516108429190613e4b565b60405180910390f35b34801561085757600080fd5b50610872600480360381019061086d91906141f4565b611d9c565b005b34801561088057600080fd5b5061089b6004803603810190610896919061428d565b611f02565b6040516108a89190613ea2565b60405180910390f35b3480156108bd57600080fd5b506108c6611f89565b005b3480156108d457600080fd5b506108dd612032565b6040516108ea9190613ea2565b60405180910390f35b3480156108ff57600080fd5b5061091a600480360381019061091591906141f4565b612038565b005b34801561092857600080fd5b50610943600480360381019061093e9190613e66565b612112565b005b34801561095157600080fd5b5061095a6122d8565b005b34801561096857600080fd5b50610983600480360381019061097e91906141f4565b6123e0565b005b606060038054610994906142fc565b80601f01602080910402602001604051908101604052809291908181526020018280546109c0906142fc565b8015610a0d5780601f106109e257610100808354040283529160200191610a0d565b820191906000526020600020905b8154815290600101906020018083116109f057829003601f168201915b5050505050905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610a51610a4a612710565b8484612718565b6001905092915050565b60126020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b610a8d612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1390614379565b60405180910390fd5b8051825114610b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b57906143e5565b60405180910390fd5b610258825110610ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9c90614477565b60405180910390fd5b60005b8251811015610c0f576000838281518110610bc657610bc5614497565b5b602002602001015190506000838381518110610be557610be4614497565b5b60200260200101519050610bfa3383836128e1565b50508080610c07906144f5565b915050610ba8565b505050565b6000610c21848484612b4a565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c6c612710565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce3906145af565b60405180910390fd5b610d0085610cf8612710565b858403612718565b60019150509392505050565b60105481565b60006012905090565b6000610dbd610d28612710565b848460016000610d36612710565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610db891906145cf565b612718565b6001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b600c60149054906101000a900460ff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e47612710565b73ffffffffffffffffffffffffffffffffffffffff1614610e6757600080fd5b6000610e7230611004565b90506000811115610e8757610e8681613734565b5b60004790506000811115610e9f57610e9e81613977565b5b5050565b610eab612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190614379565b60405180910390fd5b600b54610f4630611004565b1015610f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7e90614697565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550610faa6139e3565b6000600a60146101000a81548160ff0219169083151502179055507f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb3242604051610ff49190613ea2565b60405180910390a1565b60075481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611054612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110da90614379565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6111ac612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461123b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123290614379565b60405180910390fd5b80600f819055507f03cd3090e7c409e4a7ffd2d90ff610979f4a94a87a512188b7b615671bfb772f600f546040516112739190613ea2565b60405180910390a150565b611286612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130c90614379565b60405180910390fd5b6000600c60146101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b611366612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ec90614379565b60405180910390fd5b8061148b57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361148a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148190614729565b60405180910390fd5b5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006114f0612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461157f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157690614379565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e590614795565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361165c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165390614801565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161169791906141d9565b602060405180830381865afa1580156116b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d89190614836565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611715929190614863565b6020604051808303816000875af1158015611734573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175891906148a1565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438848260405161178b929190614863565b60405180910390a15092915050565b60065481565b6117a8612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182e90614379565b60405180910390fd5b600c60159054906101000a900460ff1615611887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187e9061491a565b60405180910390fd5b6001600c60156101000a81548160ff0219169083151502179055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611909906142fc565b80601f0160208091040260200160405190810160405280929190818152602001828054611935906142fc565b80156119825780601f1061195757610100808354040283529160200191611982565b820191906000526020600020905b81548152906001019060200180831161196557829003601f168201915b5050505050905090565b611994612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1a90614379565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aaa906149ac565b60405180910390fd5b611abd8282613ad4565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008060016000611b16612710565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611bd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bca90614a3e565b60405180910390fd5b611be7611bde612710565b85858403612718565b600191505092915050565b6000611c06611bff612710565b8484612b4a565b6001905092915050565b60085481565b60136020528060005260406000206000915054906101000a900460ff1681565b600c60159054906101000a900460ff1681565b611c51612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd790614379565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d7d9190613e4b565b60405180910390a25050565b600e60009054906101000a900460ff1681565b611da4612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2a90614379565b60405180910390fd5b6103e86001611e40610a7b565b611e4a9190614a5e565b611e549190614ae7565b811015611e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8d90614b8a565b60405180910390fd5b60146001611ea2610a7b565b611eac9190614a5e565b611eb69190614ae7565b811115611ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eef90614c1c565b60405180910390fd5b80600b8190555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611f91612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612020576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201790614379565b60405180910390fd5b60006010819055506000600f81905550565b600b5481565b612040612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c690614379565b60405180910390fd5b806010819055507f274faecd49018fb411281f27986b6b4acc86e5db4100735531acd18b7b6d5f936010546040516121079190613ea2565b60405180910390a150565b61211a612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a090614379565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220f90614cae565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6122e0612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461236f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236690614379565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161239590614cff565b60006040518083038185875af1925050503d80600081146123d2576040519150601f19603f3d011682016040523d82523d6000602084013e6123d7565b606091505b50508091505050565b6123e8612710565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612477576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246e90614379565b60405180910390fd5b678ac7230489e800008111156124c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b990614dac565b60405180910390fd5b6000600267ffffffffffffffff8111156124df576124de613ec2565b5b60405190808252806020026020018201604052801561250d5781602001602082028036833780820191505090505b509050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a19190614de1565b816000815181106125b5576125b4614497565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050308160018151811061260457612603614497565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008461dead426040518663ffffffff1660e01b81526004016126a39493929190614f07565b6000604051808303818588803b1580156126bc57600080fd5b505af11580156126d0573d6000803e3d6000fd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d684820568826040516127049190613ea2565b60405180910390a15050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277e90614fc5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ed90615057565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516128d49190613ea2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612950576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612947906150e9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b69061517b565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3c9061520d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ad891906145cf565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b3c9190613ea2565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612bb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb0906150e9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1f9061517b565b60405180910390fd5b60008111612c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6290615279565b60405180910390fd5b600c60159054906101000a900460ff16612d6057601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d205750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612d5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d56906152e5565b60405180910390fd5b5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e035750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e3b57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e955750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612edf5743600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b43600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612f60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5790615377565b60405180910390fd5b600c60149054906101000a900460ff16156133c457612f7d6118d0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612feb5750612fbb6118d0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156130245750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561305e575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156130b45750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561310a5750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133c357601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131b25750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613259576006548111156131fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131f390615409565b60405180910390fd5b60085461320883611004565b8261321391906145cf565b1115613254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161324b90615475565b60405180910390fd5b6133c2565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132fc5750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613316576007548111156133115760075490505b6133c1565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166133c05760085461337383611004565b8261337e91906145cf565b11156133bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133b690615507565b60405180910390fd5b5b5b5b5b5b60006133cf30611004565b90506000600b5482101590508080156133f45750600c60159054906101000a900460ff165b801561340d5750600a60149054906101000a900460ff16155b80156134635750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134b95750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561350f5750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613553576001600a60146101000a81548160ff0219169083151502179055506135376139e3565b6000600a60146101000a81548160ff0219169083151502179055505b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135f75750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613722576000601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561365957506000601054115b1561367f5760646010548561366e9190614a5e565b6136789190614ae7565b90506136fd565b601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136da57506000600f54115b156136fc576064600f54856136ef9190614a5e565b6136f99190614ae7565b90505b5b6000811115613712576137118630836128e1565b5b808461371e9190615527565b9350505b61372d8585856128e1565b5050505050565b6000600267ffffffffffffffff81111561375157613750613ec2565b5b60405190808252806020026020018201604052801561377f5781602001602082028036833780820191505090505b509050308160008151811061379757613796614497565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561383e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138629190614de1565b8160018151811061387657613875614497565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506138dd30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612718565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161394195949392919061555b565b600060405180830381600087803b15801561395b57600080fd5b505af115801561396f573d6000803e3d6000fd5b505050505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156139df573d6000803e3d6000fd5b5050565b60006139ee30611004565b9050600081036139fe5750613ad2565b6006600b54613a0d9190614a5e565b811115613a26576006600b54613a239190614a5e565b90505b6000613a3182613734565b60004790506000811115613ace57600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613a8590614cff565b60006040518083038185875af1925050503d8060008114613ac2576040519150601f19603f3d011682016040523d82523d6000602084013e613ac7565b606091505b5050809250505b5050505b565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613b358282613b7f565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613c079291906155b5565b60405180910390a15050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613c4d578082015181840152602081019050613c32565b83811115613c5c576000848401525b50505050565b6000601f19601f8301169050919050565b6000613c7e82613c13565b613c888185613c1e565b9350613c98818560208601613c2f565b613ca181613c62565b840191505092915050565b60006020820190508181036000830152613cc68184613c73565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000613d13613d0e613d0984613cce565b613cee565b613cce565b9050919050565b6000613d2582613cf8565b9050919050565b6000613d3782613d1a565b9050919050565b613d4781613d2c565b82525050565b6000602082019050613d626000830184613d3e565b92915050565b6000604051905090565b600080fd5b600080fd5b6000613d8782613cce565b9050919050565b613d9781613d7c565b8114613da257600080fd5b50565b600081359050613db481613d8e565b92915050565b6000819050919050565b613dcd81613dba565b8114613dd857600080fd5b50565b600081359050613dea81613dc4565b92915050565b60008060408385031215613e0757613e06613d72565b5b6000613e1585828601613da5565b9250506020613e2685828601613ddb565b9150509250929050565b60008115159050919050565b613e4581613e30565b82525050565b6000602082019050613e606000830184613e3c565b92915050565b600060208284031215613e7c57613e7b613d72565b5b6000613e8a84828501613da5565b91505092915050565b613e9c81613dba565b82525050565b6000602082019050613eb76000830184613e93565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613efa82613c62565b810181811067ffffffffffffffff82111715613f1957613f18613ec2565b5b80604052505050565b6000613f2c613d68565b9050613f388282613ef1565b919050565b600067ffffffffffffffff821115613f5857613f57613ec2565b5b602082029050602081019050919050565b600080fd5b6000613f81613f7c84613f3d565b613f22565b90508083825260208201905060208402830185811115613fa457613fa3613f69565b5b835b81811015613fcd5780613fb98882613da5565b845260208401935050602081019050613fa6565b5050509392505050565b600082601f830112613fec57613feb613ebd565b5b8135613ffc848260208601613f6e565b91505092915050565b600067ffffffffffffffff8211156140205761401f613ec2565b5b602082029050602081019050919050565b600061404461403f84614005565b613f22565b9050808382526020820190506020840283018581111561406757614066613f69565b5b835b81811015614090578061407c8882613ddb565b845260208401935050602081019050614069565b5050509392505050565b600082601f8301126140af576140ae613ebd565b5b81356140bf848260208601614031565b91505092915050565b600080604083850312156140df576140de613d72565b5b600083013567ffffffffffffffff8111156140fd576140fc613d77565b5b61410985828601613fd7565b925050602083013567ffffffffffffffff81111561412a57614129613d77565b5b6141368582860161409a565b9150509250929050565b60008060006060848603121561415957614158613d72565b5b600061416786828701613da5565b935050602061417886828701613da5565b925050604061418986828701613ddb565b9150509250925092565b600060ff82169050919050565b6141a981614193565b82525050565b60006020820190506141c460008301846141a0565b92915050565b6141d381613d7c565b82525050565b60006020820190506141ee60008301846141ca565b92915050565b60006020828403121561420a57614209613d72565b5b600061421884828501613ddb565b91505092915050565b61422a81613e30565b811461423557600080fd5b50565b60008135905061424781614221565b92915050565b6000806040838503121561426457614263613d72565b5b600061427285828601613da5565b925050602061428385828601614238565b9150509250929050565b600080604083850312156142a4576142a3613d72565b5b60006142b285828601613da5565b92505060206142c385828601613da5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061431457607f821691505b602082108103614327576143266142cd565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614363602083613c1e565b915061436e8261432d565b602082019050919050565b6000602082019050818103600083015261439281614356565b9050919050565b7f617272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b60006143cf601e83613c1e565b91506143da82614399565b602082019050919050565b600060208201905081810360008301526143fe816143c2565b9050919050565b7f43616e206f6e6c792061697264726f70203630302077616c6c6574732070657260008201527f2074786e2064756520746f20676173206c696d69747300000000000000000000602082015250565b6000614461603683613c1e565b915061446c82614405565b604082019050919050565b6000602082019050818103600083015261449081614454565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061450082613dba565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614532576145316144c6565b5b600182019050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614599602883613c1e565b91506145a48261453d565b604082019050919050565b600060208201905081810360008301526145c88161458c565b9050919050565b60006145da82613dba565b91506145e583613dba565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561461a576146196144c6565b5b828201905092915050565b7f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060008201527f6973206174206f7220686967686572207468616e207265737472696374696f6e602082015250565b6000614681604083613c1e565b915061468c82614625565b604082019050919050565b600060208201905081810360008301526146b081614674565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614713602783613c1e565b915061471e826146b7565b604082019050919050565b6000602082019050818103600083015261474281614706565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b600061477f601a83613c1e565b915061478a82614749565b602082019050919050565b600060208201905081810360008301526147ae81614772565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e7300000000600082015250565b60006147eb601c83613c1e565b91506147f6826147b5565b602082019050919050565b6000602082019050818103600083015261481a816147de565b9050919050565b60008151905061483081613dc4565b92915050565b60006020828403121561484c5761484b613d72565b5b600061485a84828501614821565b91505092915050565b600060408201905061487860008301856141ca565b6148856020830184613e93565b9392505050565b60008151905061489b81614221565b92915050565b6000602082840312156148b7576148b6613d72565b5b60006148c58482850161488c565b91505092915050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b6000614904601783613c1e565b915061490f826148ce565b602082019050919050565b60006020820190508181036000830152614933816148f7565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614996603983613c1e565b91506149a18261493a565b604082019050919050565b600060208201905081810360008301526149c581614989565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614a28602583613c1e565b9150614a33826149cc565b604082019050919050565b60006020820190508181036000830152614a5781614a1b565b9050919050565b6000614a6982613dba565b9150614a7483613dba565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614aad57614aac6144c6565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614af282613dba565b9150614afd83613dba565b925082614b0d57614b0c614ab8565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e312520746f74616c20737570706c792e00000000000000000000000000602082015250565b6000614b74603383613c1e565b9150614b7f82614b18565b604082019050919050565b60006020820190508181036000830152614ba381614b67565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20352520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000614c06603283613c1e565b9150614c1182614baa565b604082019050919050565b60006020820190508181036000830152614c3581614bf9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614c98602683613c1e565b9150614ca382614c3c565b604082019050919050565b60006020820190508181036000830152614cc781614c8b565b9050919050565b600081905092915050565b50565b6000614ce9600083614cce565b9150614cf482614cd9565b600082019050919050565b6000614d0a82614cdc565b9150819050919050565b7f4d6179206e6f7420627579206d6f7265207468616e2031302045544820696e2060008201527f612073696e676c652062757920746f207265647563652073616e64776963682060208201527f61747461636b7300000000000000000000000000000000000000000000000000604082015250565b6000614d96604783613c1e565b9150614da182614d14565b606082019050919050565b60006020820190508181036000830152614dc581614d89565b9050919050565b600081519050614ddb81613d8e565b92915050565b600060208284031215614df757614df6613d72565b5b6000614e0584828501614dcc565b91505092915050565b6000819050919050565b6000614e33614e2e614e2984614e0e565b613cee565b613dba565b9050919050565b614e4381614e18565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614e7e81613d7c565b82525050565b6000614e908383614e75565b60208301905092915050565b6000602082019050919050565b6000614eb482614e49565b614ebe8185614e54565b9350614ec983614e65565b8060005b83811015614efa578151614ee18882614e84565b9750614eec83614e9c565b925050600181019050614ecd565b5085935050505092915050565b6000608082019050614f1c6000830187614e3a565b8181036020830152614f2e8186614ea9565b9050614f3d60408301856141ca565b614f4a6060830184613e93565b95945050505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614faf602483613c1e565b9150614fba82614f53565b604082019050919050565b60006020820190508181036000830152614fde81614fa2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615041602283613c1e565b915061504c82614fe5565b604082019050919050565b6000602082019050818103600083015261507081615034565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006150d3602583613c1e565b91506150de82615077565b604082019050919050565b60006020820190508181036000830152615102816150c6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615165602383613c1e565b915061517082615109565b604082019050919050565b6000602082019050818103600083015261519481615158565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006151f7602683613c1e565b91506152028261519b565b604082019050919050565b60006020820190508181036000830152615226816151ea565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b6000615263601d83613c1e565b915061526e8261522d565b602082019050919050565b6000602082019050818103600083015261529281615256565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006152cf601683613c1e565b91506152da82615299565b602082019050919050565b600060208201905081810360008301526152fe816152c2565b9050919050565b7f5f7472616e736665723a3a20416e74692073616e647769636820626f7420656e60008201527f61626c65642e20506c656173652074727920616761696e206c617465722e0000602082015250565b6000615361603e83613c1e565b915061536c82615305565b604082019050919050565b6000602082019050818103600083015261539081615354565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b60006153f3602883613c1e565b91506153fe82615397565b604082019050919050565b60006020820190508181036000830152615422816153e6565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b600061545f601883613c1e565b915061546a82615429565b602082019050919050565b6000602082019050818103600083015261548e81615452565b9050919050565b7f43616e6e6f7420457863656564206d617820746f6b656e73207065722077616c60008201527f6c65740000000000000000000000000000000000000000000000000000000000602082015250565b60006154f1602383613c1e565b91506154fc82615495565b604082019050919050565b60006020820190508181036000830152615520816154e4565b9050919050565b600061553282613dba565b915061553d83613dba565b9250828210156155505761554f6144c6565b5b828203905092915050565b600060a0820190506155706000830188613e93565b61557d6020830187614e3a565b818103604083015261558f8186614ea9565b905061559e60608301856141ca565b6155ab6080830184613e93565b9695505050505050565b60006040820190506155ca60008301856141ca565b6155d76020830184613e3c565b939250505056fea2646970667358221220892d6d87ec599bcdc56c073423bd55c0649f98a575d846c358c4a2b0aa048c6264736f6c634300080f0033

Deployed Bytecode Sourcemap

10227:12627:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4489:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10379:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5403:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11017:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4810:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14568:618;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5580:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10843:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4709:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6080:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10413:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10815;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10540:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20203:348;;;;;;;;;;;;;:::i;:::-;;21820:312;;;;;;;;;;;;;:::i;:::-;;10305:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4926:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9124:150;;;;;;;;;;;;;:::i;:::-;;16013:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13822:115;;;;;;;;;;;;;:::i;:::-;;15194:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21082:456;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10271:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13594:176;;;;;;;;;;;;;:::i;:::-;;8910:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4597:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15462:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6303:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5061:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10340:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11239:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10580:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16404:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10767:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14007:338;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5244:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16297:99;;;;;;;;;;;;;:::i;:::-;;10471:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16152:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9282:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21608:160;;;;;;;;;;;;;:::i;:::-;;22235:616;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4489:100;4543:13;4576:5;4569:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4489:100;:::o;10379:27::-;;;;;;;;;;;;;:::o;5403:169::-;5486:4;5503:39;5512:12;:10;:12::i;:::-;5526:7;5535:6;5503:8;:39::i;:::-;5560:4;5553:11;;5403:169;;;;:::o;11017:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;4810:108::-;4871:7;4898:12;;4891:19;;4810:108;:::o;14568:618::-;9047:12;:10;:12::i;:::-;9037:22;;:6;;;;;;;;;;;:22;;;9029:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14710:15:::1;:22;14692:7;:14;:40;14684:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;14803:3;14786:7;:14;:20;14778:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;14978:9;14974:205;14997:7;:14;14993:1;:18;14974:205;;;15032:14;15049:7;15057:1;15049:10;;;;;;;;:::i;:::-;;;;;;;;15032:27;;15074:14;15091:15;15107:1;15091:18;;;;;;;;:::i;:::-;;;;;;;;15074:35;;15124:43;15140:10;15152:6;15160;15124:15;:43::i;:::-;15017:162;;15013:3;;;;;:::i;:::-;;;;14974:205;;;;14568:618:::0;;:::o;5580:492::-;5720:4;5737:36;5747:6;5755:9;5766:6;5737:9;:36::i;:::-;5786:24;5813:11;:19;5825:6;5813:19;;;;;;;;;;;;;;;:33;5833:12;:10;:12::i;:::-;5813:33;;;;;;;;;;;;;;;;5786:60;;5885:6;5865:16;:26;;5857:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5972:57;5981:6;5989:12;:10;:12::i;:::-;6022:6;6003:16;:25;5972:8;:57::i;:::-;6060:4;6053:11;;;5580:492;;;;;:::o;10843:22::-;;;;:::o;4709:93::-;4767:5;4792:2;4785:9;;4709:93;:::o;6080:215::-;6168:4;6185:80;6194:12;:10;:12::i;:::-;6208:7;6254:10;6217:11;:25;6229:12;:10;:12::i;:::-;6217:25;;;;;;;;;;;;;;;:34;6243:7;6217:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6185:8;:80::i;:::-;6283:4;6276:11;;6080:215;;;;:::o;10413:21::-;;;;;;;;;;;;;:::o;10815:::-;;;;:::o;10540:33::-;;;;;;;;;;;;;:::o;20203:348::-;20267:10;;;;;;;;;;;20253:24;;:12;:10;:12::i;:::-;:24;;;20245:33;;;;;;20289:20;20310:24;20328:4;20310:9;:24::i;:::-;20289:45;;20361:1;20348:12;:14;20345:73;;;20376:30;20393:12;20376:16;:30::i;:::-;20345:73;20428:18;20447:21;20428:40;;20493:1;20482:10;:12;20479:65;;;20508:24;20521:10;20508:12;:24::i;:::-;20479:65;20234:317;;20203:348::o;21820:312::-;9047:12;:10;:12::i;:::-;9037:22;;:6;;;;;;;;;;;:22;;;9029:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21911:18:::1;;21883:24;21901:4;21883:9;:24::i;:::-;:46;;21875:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;22020:4;22009:8;;:15;;;;;;;;;;;;;;;;;;22035:10;:8;:10::i;:::-;22067:5;22056:8;;:16;;;;;;;;;;;;;;;;;;22088:36;22108:15;22088:36;;;;;;:::i;:::-;;;;;;;;21820:312::o:0;10305:28::-;;;;:::o;4926:127::-;5000:7;5027:9;:18;5037:7;5027:18;;;;;;;;;;;;;;;;5020:25;;4926:127;;;:::o;9124:150::-;9047:12;:10;:12::i;:::-;9037:22;;:6;;;;;;;;;;;:22;;;9029:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9233:1:::1;9196:40;;9217:6;;;;;;;;;;;9196:40;;;;;;;;;;;;9264:1;9247:6;;:19;;;;;;;;;;;;;;;;;;9124:150::o:0;16013:131::-;9047:12;:10;:12::i;:::-;9037:22;;:6;;;;;;;;;;;:22;;;9029:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16092:7:::1;16083:6;:16;;;;16115:21;16129:6;;16115:21;;;;;;:::i;:::-;;;;;;;;16013:131:::0;:::o;13822:115::-;9047:12;:10;:12::i;:::-;9037:22;;:6;;;;;;;;;;;:22;;;9029:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13893:5:::1;13876:14;;:22;;;;;;;;;;;;;;;;;;13914:15;;;;;;;;;;13822:115::o:0;15194:260::-;9047:12;:10;:12::i;:::-;9037:22;;:6;;;;;;;;;;;:22;;;9029:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15290:4:::1;15286:104;;15328:6;;;;;;;;;;;15318:16;;:6;:16;;::::0;15310:68:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15286:104;15442:4;15400:31;:39;15432:6;15400:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;15194:260:::0;;:::o;21082:456::-;21169:10;9047:12;:10;:12::i;:::-;9037:22;;:6;;;;;;;;;;;:22;;;9029:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21218:1:::1;21200:20;;:6;:20;;::::0;21192:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21288:4;21270:23;;:6;:23;;::::0;21262:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21337:24;21371:6;21364:24;;;21397:4;21364:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21337:66;;21429:6;21422:23;;;21446:3;21451:16;21422:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21414:54;;21484:46;21505:6;21513:16;21484:46;;;;;;;:::i;:::-;;;;;;;;21181:357;21082:456:::0;;;;:::o;10271:27::-;;;;:::o;13594:176::-;9047:12;:10;:12::i;:::-;9037:22;;:6;;;;;;;;;;;:22;;;9029:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13658:13:::1;;;;;;;;;;;13657:14;13649:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;13726:4;13710:13;;:20;;;;;;;;;;;;;;;;;;13746:16;;;;;;;;;;13594:176::o:0;8910:79::-;8948:7;8975:6;;;;;;;;;;;8968:13;;8910:79;:::o;4597:104::-;4653:13;4686:7;4679:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4597:104;:::o;15462:295::-;9047:12;:10;:12::i;:::-;9037:22;;:6;;;;;;;;;;;:22;;;9029:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15571:6:::1;;;;;;;;;;;15563:14;;:4;:14;;::::0;15555:84:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15652:41;15681:4;15687:5;15652:28;:41::i;:::-;15743:5;15709:40;;15737:4;15709:40;;;;;;;;;;;;15462:295:::0;;:::o;6303:413::-;6396:4;6413:24;6440:11;:25;6452:12;:10;:12::i;:::-;6440:25;;;;;;;;;;;;;;;:34;6466:7;6440:34;;;;;;;;;;;;;;;;6413:61;;6513:15;6493:16;:35;;6485:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6606:67;6615:12;:10;:12::i;:::-;6629:7;6657:15;6638:16;:34;6606:8;:67::i;:::-;6704:4;6697:11;;;6303:413;;;;:::o;5061:175::-;5147:4;5164:42;5174:12;:10;:12::i;:::-;5188:9;5199:6;5164:9;:42::i;:::-;5224:4;5217:11;;5061:175;;;;:::o;10340:30::-;;;;:::o;11239:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;10580:33::-;;;;;;;;;;;;;:::o;16404:182::-;9047:12;:10;:12::i;:::-;9037:22;;:6;;;;;;;;;;;:22;;;9029:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16520:8:::1;16489:19;:28;16509:7;16489:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16560:7;16544:34;;;16569:8;16544:34;;;;;;:::i;:::-;;;;;;;;16404:182:::0;;:::o;10767:39::-;;;;;;;;;;;;;:::o;14007:338::-;9047:12;:10;:12::i;:::-;9037:22;;:6;;;;;;;;;;;:22;;;9029:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14130:4:::1;14126:1;14110:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;14097:9;:37;;14089:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;14241:2;14237:1;14221:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:22;;;;:::i;:::-;14208:9;:35;;14200:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;14329:9;14308:18;:30;;;;14007:338:::0;:::o;5244:151::-;5333:7;5360:11;:18;5372:5;5360:18;;;;;;;;;;;;;;;:27;5379:7;5360:27;;;;;;;;;;;;;;;;5353:34;;5244:151;;;;:::o;16297:99::-;9047:12;:10;:12::i;:::-;9037:22;;:6;;;;;;;;;;;:22;;;9029:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16366:1:::1;16356:7;:11;;;;16387:1;16378:6;:10;;;;16297:99::o:0;10471:33::-;;;;:::o;16152:137::-;9047:12;:10;:12::i;:::-;9037:22;;:6;;;;;;;;;;;:22;;;9029:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16234:8:::1;16224:7;:18;;;;16258:23;16273:7;;16258:23;;;;;;:::i;:::-;;;;;;;;16152:137:::0;:::o;9282:244::-;9047:12;:10;:12::i;:::-;9037:22;;:6;;;;;;;;;;;:22;;;9029:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9391:1:::1;9371:22;;:8;:22;;::::0;9363:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9481:8;9452:38;;9473:6;;;;;;;;;;;9452:38;;;;;;;;;;;;9510:8;9501:6;;:17;;;;;;;;;;;;;;;;;;9282:244:::0;:::o;21608:160::-;9047:12;:10;:12::i;:::-;9037:22;;:6;;;;;;;;;;;:22;;;9029:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21666:12:::1;21710:10;21702:24;;21734:21;21702:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21689:71;;;;;21655:113;21608:160::o:0;22235:616::-;9047:12;:10;:12::i;:::-;9037:22;;:6;;;;;;;;;;;:22;;;9029:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22332:8:::1;22317:11;:23;;22309:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;22429:21;22467:1;22453:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22429:40;;22490:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22480:4;22485:1;22480:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;::::0;::::1;22535:4;22517;22522:1;22517:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;22579:9;;;;;;;;;;;:60;;;22647:11;22674:1;22723:4;22750:6;22772:15;22579:219;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;22814:29;22831:11;22814:29;;;;;;:::i;:::-;;;;;;;;22298:553;22235:616:::0;:::o;638:98::-;691:7;718:10;711:17;;638:98;:::o;8203:380::-;8356:1;8339:19;;:5;:19;;;8331:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8437:1;8418:21;;:7;:21;;;8410:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8521:6;8491:11;:18;8503:5;8491:18;;;;;;;;;;;;;;;:27;8510:7;8491:27;;;;;;;;;;;;;;;:36;;;;8559:7;8543:32;;8552:5;8543:32;;;8568:6;8543:32;;;;;;:::i;:::-;;;;;;;;8203:380;;;:::o;6724:614::-;6882:1;6864:20;;:6;:20;;;6856:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6966:1;6945:23;;:9;:23;;;6937:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7021:21;7045:9;:17;7055:6;7045:17;;;;;;;;;;;;;;;;7021:41;;7098:6;7081:13;:23;;7073:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7219:6;7203:13;:22;7183:9;:17;7193:6;7183:17;;;;;;;;;;;;;;;:42;;;;7271:6;7247:9;:20;7257:9;7247:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7312:9;7295:35;;7304:6;7295:35;;;7323:6;7295:35;;;;;;:::i;:::-;;;;;;;;6845:493;6724:614;;;:::o;16594:2911::-;16710:1;16694:18;;:4;:18;;;16686:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16787:1;16773:16;;:2;:16;;;16765:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16857:1;16848:6;:10;16840:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;16909:13;;;;;;;;;;;16905:132;;16946:19;:25;16966:4;16946:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;16975:19;:23;16995:2;16975:23;;;;;;;;;;;;;;;;;;;;;;;;;16946:52;16938:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;16905:132;17083:25;:31;17109:4;17083:31;;;;;;;;;;;;;;;;;;;;;;;;;:65;;;;;17119:25;:29;17145:2;17119:29;;;;;;;;;;;;;;;;;;;;;;;;;17118:30;17083:65;:88;;;;;17166:4;17152:19;;:2;:19;;;;17083:88;:116;;;;;17189:9;;;;;;;;;;;17175:24;;:2;:24;;;;17083:116;17079:186;;;17241:12;17215:19;:23;17235:2;17215:23;;;;;;;;;;;;;;;:38;;;;17079:186;17311:12;17283:19;:25;17303:4;17283:25;;;;;;;;;;;;;;;;:40;17275:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;17406:14;;;;;;;;;;;17403:1046;;;17448:7;:5;:7::i;:::-;17440:15;;:4;:15;;;;:32;;;;;17465:7;:5;:7::i;:::-;17459:13;;:2;:13;;;;17440:32;:52;;;;;17490:1;17476:16;;:2;:16;;;;17440:52;:77;;;;;17510:6;17496:21;;:2;:21;;;;17440:77;:107;;;;;17522:19;:25;17542:4;17522:25;;;;;;;;;;;;;;;;;;;;;;;;;17521:26;17440:107;:135;;;;;17552:19;:23;17572:2;17552:23;;;;;;;;;;;;;;;;;;;;;;;;;17551:24;17440:135;17436:1002;;;17633:25;:31;17659:4;17633:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;17669:31;:35;17701:2;17669:35;;;;;;;;;;;;;;;;;;;;;;;;;17668:36;17633:71;17629:794;;;17751:12;;17741:6;:22;;17733:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;17869:15;;17852:13;17862:2;17852:9;:13::i;:::-;17843:6;:22;;;;:::i;:::-;:41;;17835:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;17629:794;;;18001:25;:29;18027:2;18001:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;18035:31;:37;18067:4;18035:37;;;;;;;;;;;;;;;;;;;;;;;;;18034:38;18001:71;17997:426;;;18113:13;;18104:6;:22;18101:107;;;18167:13;;18158:22;;18101:107;17997:426;;;18255:31;:35;18287:2;18255:35;;;;;;;;;;;;;;;;;;;;;;;;;18250:173;;18348:15;;18331:13;18341:2;18331:9;:13::i;:::-;18322:6;:22;;;;:::i;:::-;:41;;18314:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;18250:173;17997:426;17629:794;17436:1002;17403:1046;18461:28;18492:24;18510:4;18492:9;:24::i;:::-;18461:55;;18529:12;18568:18;;18544:20;:42;;18529:57;;18602:7;:24;;;;;18613:13;;;;;;;;;;;18602:24;:37;;;;;18631:8;;;;;;;;;;;18630:9;18602:37;:73;;;;;18644:25;:31;18670:4;18644:31;;;;;;;;;;;;;;;;;;;;;;;;;18643:32;18602:73;:103;;;;;18680:19;:25;18700:4;18680:25;;;;;;;;;;;;;;;;;;;;;;;;;18679:26;18602:103;:131;;;;;18710:19;:23;18730:2;18710:23;;;;;;;;;;;;;;;;;;;;;;;;;18709:24;18602:131;18599:234;;;18761:4;18750:8;;:15;;;;;;;;;;;;;;;;;;18780:10;:8;:10::i;:::-;18816:5;18805:8;;:16;;;;;;;;;;;;;;;;;;18599:234;18923:19;:25;18943:4;18923:25;;;;;;;;;;;;;;;;;;;;;;;;;18922:26;:54;;;;;18953:19;:23;18973:2;18953:23;;;;;;;;;;;;;;;;;;;;;;;;;18952:24;18922:54;18919:533;;;18992:12;19051:25;:29;19077:2;19051:29;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;;19094:1;19084:7;;:11;19051:44;19047:265;;;19141:3;19131:7;;19122:6;:16;;;;:::i;:::-;:22;;;;:::i;:::-;19115:29;;19047:265;;;19205:25;:31;19231:4;19205:31;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;19249:1;19240:6;;:10;19205:45;19202:110;;;19293:3;19284:6;;19275;:15;;;;:::i;:::-;:21;;;;:::i;:::-;19268:28;;19202:110;19047:265;19336:1;19329:4;:8;19326:89;;;19357:42;19373:4;19387;19394;19357:15;:42::i;:::-;19326:89;19436:4;19426:14;;;;;:::i;:::-;;;18977:475;18919:533;19464:33;19480:4;19486:2;19490:6;19464:15;:33::i;:::-;16673:2832;;16594:2911;;;:::o;19513:573::-;19641:21;19679:1;19665:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19641:40;;19710:4;19692;19697:1;19692:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19736:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19726:4;19731:1;19726:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;19765:56;19782:4;19797:9;;;;;;;;;;;19809:11;19765:8;:56::i;:::-;19860:9;;;;;;;;;;;:60;;;19935:11;19961:1;20005:4;20032;20052:15;19860:218;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19568:518;19513:573;:::o;20094:101::-;20159:10;;;;;;;;;;;20151:28;;:36;20180:6;20151:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20094:101;:::o;20559:515::-;20598:23;20624:24;20642:4;20624:9;:24::i;:::-;20598:50;;20681:1;20662:15;:20;20659:34;;20685:7;;;20659:34;20747:1;20726:18;;:22;;;;:::i;:::-;20708:15;:40;20705:111;;;20803:1;20782:18;;:22;;;;:::i;:::-;20764:40;;20705:111;20828:12;20853:33;20870:15;20853:16;:33::i;:::-;20899:18;20920:21;20899:42;;20978:1;20965:10;:14;20962:105;;;21016:10;;;;;;;;;;;21008:24;;21040:10;21008:47;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20995:60;;;;;20962:105;20587:487;;;20559:515;:::o;15765:240::-;15882:5;15848:25;:31;15874:4;15848:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;15900;15927:4;15933:5;15900:26;:39::i;:::-;15991:5;15957:40;;15985:4;15957:40;;;;;;;;;;;;15765:240;;:::o;14353:207::-;14483:10;14441:31;:39;14473:6;14441:39;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;14509:43;14533:6;14541:10;14509:43;;;;;;;:::i;:::-;;;;;;;;14353:207;;:::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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:126::-;1434:7;1474:42;1467:5;1463:54;1452:65;;1397:126;;;:::o;1529:60::-;1557:3;1578:5;1571:12;;1529:60;;;:::o;1595:142::-;1645:9;1678:53;1696:34;1705:24;1723:5;1705:24;:::i;:::-;1696:34;:::i;:::-;1678:53;:::i;:::-;1665:66;;1595:142;;;:::o;1743:126::-;1793:9;1826:37;1857:5;1826:37;:::i;:::-;1813:50;;1743:126;;;:::o;1875:144::-;1943:9;1976:37;2007:5;1976:37;:::i;:::-;1963:50;;1875:144;;;:::o;2025:167::-;2130:55;2179:5;2130:55;:::i;:::-;2125:3;2118:68;2025:167;;:::o;2198:258::-;2309:4;2347:2;2336:9;2332:18;2324:26;;2360:89;2446:1;2435:9;2431:17;2422:6;2360:89;:::i;:::-;2198:258;;;;:::o;2462:75::-;2495:6;2528:2;2522:9;2512:19;;2462:75;:::o;2543:117::-;2652:1;2649;2642:12;2666:117;2775:1;2772;2765:12;2789:96;2826:7;2855:24;2873:5;2855:24;:::i;:::-;2844:35;;2789:96;;;:::o;2891:122::-;2964:24;2982:5;2964:24;:::i;:::-;2957:5;2954:35;2944:63;;3003:1;3000;2993:12;2944:63;2891:122;:::o;3019:139::-;3065:5;3103:6;3090:20;3081:29;;3119:33;3146:5;3119:33;:::i;:::-;3019:139;;;;:::o;3164:77::-;3201:7;3230:5;3219:16;;3164:77;;;:::o;3247:122::-;3320:24;3338:5;3320:24;:::i;:::-;3313:5;3310:35;3300:63;;3359:1;3356;3349:12;3300:63;3247:122;:::o;3375:139::-;3421:5;3459:6;3446:20;3437:29;;3475:33;3502:5;3475:33;:::i;:::-;3375:139;;;;:::o;3520:474::-;3588:6;3596;3645:2;3633:9;3624:7;3620:23;3616:32;3613:119;;;3651:79;;:::i;:::-;3613:119;3771:1;3796:53;3841:7;3832:6;3821:9;3817:22;3796:53;:::i;:::-;3786:63;;3742:117;3898:2;3924:53;3969:7;3960:6;3949:9;3945:22;3924:53;:::i;:::-;3914:63;;3869:118;3520:474;;;;;:::o;4000:90::-;4034:7;4077:5;4070:13;4063:21;4052:32;;4000:90;;;:::o;4096:109::-;4177:21;4192:5;4177:21;:::i;:::-;4172:3;4165:34;4096:109;;:::o;4211:210::-;4298:4;4336:2;4325:9;4321:18;4313:26;;4349:65;4411:1;4400:9;4396:17;4387:6;4349:65;:::i;:::-;4211:210;;;;:::o;4427:329::-;4486:6;4535:2;4523:9;4514:7;4510:23;4506:32;4503:119;;;4541:79;;:::i;:::-;4503:119;4661:1;4686:53;4731:7;4722:6;4711:9;4707:22;4686:53;:::i;:::-;4676:63;;4632:117;4427:329;;;;:::o;4762:118::-;4849:24;4867:5;4849:24;:::i;:::-;4844:3;4837:37;4762:118;;:::o;4886:222::-;4979:4;5017:2;5006:9;5002:18;4994:26;;5030:71;5098:1;5087:9;5083:17;5074:6;5030:71;:::i;:::-;4886:222;;;;:::o;5114:117::-;5223:1;5220;5213:12;5237:180;5285:77;5282:1;5275:88;5382:4;5379:1;5372:15;5406:4;5403:1;5396:15;5423:281;5506:27;5528:4;5506:27;:::i;:::-;5498:6;5494:40;5636:6;5624:10;5621:22;5600:18;5588:10;5585:34;5582:62;5579:88;;;5647:18;;:::i;:::-;5579:88;5687:10;5683:2;5676:22;5466:238;5423:281;;:::o;5710:129::-;5744:6;5771:20;;:::i;:::-;5761:30;;5800:33;5828:4;5820:6;5800:33;:::i;:::-;5710:129;;;:::o;5845:311::-;5922:4;6012:18;6004:6;6001:30;5998:56;;;6034:18;;:::i;:::-;5998:56;6084:4;6076:6;6072:17;6064:25;;6144:4;6138;6134:15;6126:23;;5845:311;;;:::o;6162:117::-;6271:1;6268;6261:12;6302:710;6398:5;6423:81;6439:64;6496:6;6439:64;:::i;:::-;6423:81;:::i;:::-;6414:90;;6524:5;6553:6;6546:5;6539:21;6587:4;6580:5;6576:16;6569:23;;6640:4;6632:6;6628:17;6620:6;6616:30;6669:3;6661:6;6658:15;6655:122;;;6688:79;;:::i;:::-;6655:122;6803:6;6786:220;6820:6;6815:3;6812:15;6786:220;;;6895:3;6924:37;6957:3;6945:10;6924:37;:::i;:::-;6919:3;6912:50;6991:4;6986:3;6982:14;6975:21;;6862:144;6846:4;6841:3;6837:14;6830:21;;6786:220;;;6790:21;6404:608;;6302:710;;;;;:::o;7035:370::-;7106:5;7155:3;7148:4;7140:6;7136:17;7132:27;7122:122;;7163:79;;:::i;:::-;7122:122;7280:6;7267:20;7305:94;7395:3;7387:6;7380:4;7372:6;7368:17;7305:94;:::i;:::-;7296:103;;7112:293;7035:370;;;;:::o;7411:311::-;7488:4;7578:18;7570:6;7567:30;7564:56;;;7600:18;;:::i;:::-;7564:56;7650:4;7642:6;7638:17;7630:25;;7710:4;7704;7700:15;7692:23;;7411:311;;;:::o;7745:710::-;7841:5;7866:81;7882:64;7939:6;7882:64;:::i;:::-;7866:81;:::i;:::-;7857:90;;7967:5;7996:6;7989:5;7982:21;8030:4;8023:5;8019:16;8012:23;;8083:4;8075:6;8071:17;8063:6;8059:30;8112:3;8104:6;8101:15;8098:122;;;8131:79;;:::i;:::-;8098:122;8246:6;8229:220;8263:6;8258:3;8255:15;8229:220;;;8338:3;8367:37;8400:3;8388:10;8367:37;:::i;:::-;8362:3;8355:50;8434:4;8429:3;8425:14;8418:21;;8305:144;8289:4;8284:3;8280:14;8273:21;;8229:220;;;8233:21;7847:608;;7745:710;;;;;:::o;8478:370::-;8549:5;8598:3;8591:4;8583:6;8579:17;8575:27;8565:122;;8606:79;;:::i;:::-;8565:122;8723:6;8710:20;8748:94;8838:3;8830:6;8823:4;8815:6;8811:17;8748:94;:::i;:::-;8739:103;;8555:293;8478:370;;;;:::o;8854:894::-;8972:6;8980;9029:2;9017:9;9008:7;9004:23;9000:32;8997:119;;;9035:79;;:::i;:::-;8997:119;9183:1;9172:9;9168:17;9155:31;9213:18;9205:6;9202:30;9199:117;;;9235:79;;:::i;:::-;9199:117;9340:78;9410:7;9401:6;9390:9;9386:22;9340:78;:::i;:::-;9330:88;;9126:302;9495:2;9484:9;9480:18;9467:32;9526:18;9518:6;9515:30;9512:117;;;9548:79;;:::i;:::-;9512:117;9653:78;9723:7;9714:6;9703:9;9699:22;9653:78;:::i;:::-;9643:88;;9438:303;8854:894;;;;;:::o;9754:619::-;9831:6;9839;9847;9896:2;9884:9;9875:7;9871:23;9867:32;9864:119;;;9902:79;;:::i;:::-;9864:119;10022:1;10047:53;10092:7;10083:6;10072:9;10068:22;10047:53;:::i;:::-;10037:63;;9993:117;10149:2;10175:53;10220:7;10211:6;10200:9;10196:22;10175:53;:::i;:::-;10165:63;;10120:118;10277:2;10303:53;10348:7;10339:6;10328:9;10324:22;10303:53;:::i;:::-;10293:63;;10248:118;9754:619;;;;;:::o;10379:86::-;10414:7;10454:4;10447:5;10443:16;10432:27;;10379:86;;;:::o;10471:112::-;10554:22;10570:5;10554:22;:::i;:::-;10549:3;10542:35;10471:112;;:::o;10589:214::-;10678:4;10716:2;10705:9;10701:18;10693:26;;10729:67;10793:1;10782:9;10778:17;10769:6;10729:67;:::i;:::-;10589:214;;;;:::o;10809:118::-;10896:24;10914:5;10896:24;:::i;:::-;10891:3;10884:37;10809:118;;:::o;10933:222::-;11026:4;11064:2;11053:9;11049:18;11041:26;;11077:71;11145:1;11134:9;11130:17;11121:6;11077:71;:::i;:::-;10933:222;;;;:::o;11161:329::-;11220:6;11269:2;11257:9;11248:7;11244:23;11240:32;11237:119;;;11275:79;;:::i;:::-;11237:119;11395:1;11420:53;11465:7;11456:6;11445:9;11441:22;11420:53;:::i;:::-;11410:63;;11366:117;11161:329;;;;:::o;11496:116::-;11566:21;11581:5;11566:21;:::i;:::-;11559:5;11556:32;11546:60;;11602:1;11599;11592:12;11546:60;11496:116;:::o;11618:133::-;11661:5;11699:6;11686:20;11677:29;;11715:30;11739:5;11715:30;:::i;:::-;11618:133;;;;:::o;11757:468::-;11822:6;11830;11879:2;11867:9;11858:7;11854:23;11850:32;11847:119;;;11885:79;;:::i;:::-;11847:119;12005:1;12030:53;12075:7;12066:6;12055:9;12051:22;12030:53;:::i;:::-;12020:63;;11976:117;12132:2;12158:50;12200:7;12191:6;12180:9;12176:22;12158:50;:::i;:::-;12148:60;;12103:115;11757:468;;;;;:::o;12231:474::-;12299:6;12307;12356:2;12344:9;12335:7;12331:23;12327:32;12324:119;;;12362:79;;:::i;:::-;12324:119;12482:1;12507:53;12552:7;12543:6;12532:9;12528:22;12507:53;:::i;:::-;12497:63;;12453:117;12609:2;12635:53;12680:7;12671:6;12660:9;12656:22;12635:53;:::i;:::-;12625:63;;12580:118;12231:474;;;;;:::o;12711:180::-;12759:77;12756:1;12749:88;12856:4;12853:1;12846:15;12880:4;12877:1;12870:15;12897:320;12941:6;12978:1;12972:4;12968:12;12958:22;;13025:1;13019:4;13015:12;13046:18;13036:81;;13102:4;13094:6;13090:17;13080:27;;13036:81;13164:2;13156:6;13153:14;13133:18;13130:38;13127:84;;13183:18;;:::i;:::-;13127:84;12948:269;12897:320;;;:::o;13223:182::-;13363:34;13359:1;13351:6;13347:14;13340:58;13223:182;:::o;13411:366::-;13553:3;13574:67;13638:2;13633:3;13574:67;:::i;:::-;13567:74;;13650:93;13739:3;13650:93;:::i;:::-;13768:2;13763:3;13759:12;13752:19;;13411:366;;;:::o;13783:419::-;13949:4;13987:2;13976:9;13972:18;13964:26;;14036:9;14030:4;14026:20;14022:1;14011:9;14007:17;14000:47;14064:131;14190:4;14064:131;:::i;:::-;14056:139;;13783:419;;;:::o;14208:180::-;14348:32;14344:1;14336:6;14332:14;14325:56;14208:180;:::o;14394:366::-;14536:3;14557:67;14621:2;14616:3;14557:67;:::i;:::-;14550:74;;14633:93;14722:3;14633:93;:::i;:::-;14751:2;14746:3;14742:12;14735:19;;14394:366;;;:::o;14766:419::-;14932:4;14970:2;14959:9;14955:18;14947:26;;15019:9;15013:4;15009:20;15005:1;14994:9;14990:17;14983:47;15047:131;15173:4;15047:131;:::i;:::-;15039:139;;14766:419;;;:::o;15191:241::-;15331:34;15327:1;15319:6;15315:14;15308:58;15400:24;15395:2;15387:6;15383:15;15376:49;15191:241;:::o;15438:366::-;15580:3;15601:67;15665:2;15660:3;15601:67;:::i;:::-;15594:74;;15677:93;15766:3;15677:93;:::i;:::-;15795:2;15790:3;15786:12;15779:19;;15438:366;;;:::o;15810:419::-;15976:4;16014:2;16003:9;15999:18;15991:26;;16063:9;16057:4;16053:20;16049:1;16038:9;16034:17;16027:47;16091:131;16217:4;16091:131;:::i;:::-;16083:139;;15810:419;;;:::o;16235:180::-;16283:77;16280:1;16273:88;16380:4;16377:1;16370:15;16404:4;16401:1;16394:15;16421:180;16469:77;16466:1;16459:88;16566:4;16563:1;16556:15;16590:4;16587:1;16580:15;16607:233;16646:3;16669:24;16687:5;16669:24;:::i;:::-;16660:33;;16715:66;16708:5;16705:77;16702:103;;16785:18;;:::i;:::-;16702:103;16832:1;16825:5;16821:13;16814:20;;16607:233;;;:::o;16846:227::-;16986:34;16982:1;16974:6;16970:14;16963:58;17055:10;17050:2;17042:6;17038:15;17031:35;16846:227;:::o;17079:366::-;17221:3;17242:67;17306:2;17301:3;17242:67;:::i;:::-;17235:74;;17318:93;17407:3;17318:93;:::i;:::-;17436:2;17431:3;17427:12;17420:19;;17079:366;;;:::o;17451:419::-;17617:4;17655:2;17644:9;17640:18;17632:26;;17704:9;17698:4;17694:20;17690:1;17679:9;17675:17;17668:47;17732:131;17858:4;17732:131;:::i;:::-;17724:139;;17451:419;;;:::o;17876:305::-;17916:3;17935:20;17953:1;17935:20;:::i;:::-;17930:25;;17969:20;17987:1;17969:20;:::i;:::-;17964:25;;18123:1;18055:66;18051:74;18048:1;18045:81;18042:107;;;18129:18;;:::i;:::-;18042:107;18173:1;18170;18166:9;18159:16;;17876:305;;;;:::o;18187:251::-;18327:34;18323:1;18315:6;18311:14;18304:58;18396:34;18391:2;18383:6;18379:15;18372:59;18187:251;:::o;18444:366::-;18586:3;18607:67;18671:2;18666:3;18607:67;:::i;:::-;18600:74;;18683:93;18772:3;18683:93;:::i;:::-;18801:2;18796:3;18792:12;18785:19;;18444:366;;;:::o;18816:419::-;18982:4;19020:2;19009:9;19005:18;18997:26;;19069:9;19063:4;19059:20;19055:1;19044:9;19040:17;19033:47;19097:131;19223:4;19097:131;:::i;:::-;19089:139;;18816:419;;;:::o;19241:226::-;19381:34;19377:1;19369:6;19365:14;19358:58;19450:9;19445:2;19437:6;19433:15;19426:34;19241:226;:::o;19473:366::-;19615:3;19636:67;19700:2;19695:3;19636:67;:::i;:::-;19629:74;;19712:93;19801:3;19712:93;:::i;:::-;19830:2;19825:3;19821:12;19814:19;;19473:366;;;:::o;19845:419::-;20011:4;20049:2;20038:9;20034:18;20026:26;;20098:9;20092:4;20088:20;20084:1;20073:9;20069:17;20062:47;20126:131;20252:4;20126:131;:::i;:::-;20118:139;;19845:419;;;:::o;20270:176::-;20410:28;20406:1;20398:6;20394:14;20387:52;20270:176;:::o;20452:366::-;20594:3;20615:67;20679:2;20674:3;20615:67;:::i;:::-;20608:74;;20691:93;20780:3;20691:93;:::i;:::-;20809:2;20804:3;20800:12;20793:19;;20452:366;;;:::o;20824:419::-;20990:4;21028:2;21017:9;21013:18;21005:26;;21077:9;21071:4;21067:20;21063:1;21052:9;21048:17;21041:47;21105:131;21231:4;21105:131;:::i;:::-;21097:139;;20824:419;;;:::o;21249:178::-;21389:30;21385:1;21377:6;21373:14;21366:54;21249:178;:::o;21433:366::-;21575:3;21596:67;21660:2;21655:3;21596:67;:::i;:::-;21589:74;;21672:93;21761:3;21672:93;:::i;:::-;21790:2;21785:3;21781:12;21774:19;;21433:366;;;:::o;21805:419::-;21971:4;22009:2;21998:9;21994:18;21986:26;;22058:9;22052:4;22048:20;22044:1;22033:9;22029:17;22022:47;22086:131;22212:4;22086:131;:::i;:::-;22078:139;;21805:419;;;:::o;22230:143::-;22287:5;22318:6;22312:13;22303:22;;22334:33;22361:5;22334:33;:::i;:::-;22230:143;;;;:::o;22379:351::-;22449:6;22498:2;22486:9;22477:7;22473:23;22469:32;22466:119;;;22504:79;;:::i;:::-;22466:119;22624:1;22649:64;22705:7;22696:6;22685:9;22681:22;22649:64;:::i;:::-;22639:74;;22595:128;22379:351;;;;:::o;22736:332::-;22857:4;22895:2;22884:9;22880:18;22872:26;;22908:71;22976:1;22965:9;22961:17;22952:6;22908:71;:::i;:::-;22989:72;23057:2;23046:9;23042:18;23033:6;22989:72;:::i;:::-;22736:332;;;;;:::o;23074:137::-;23128:5;23159:6;23153:13;23144:22;;23175:30;23199:5;23175:30;:::i;:::-;23074:137;;;;:::o;23217:345::-;23284:6;23333:2;23321:9;23312:7;23308:23;23304:32;23301:119;;;23339:79;;:::i;:::-;23301:119;23459:1;23484:61;23537:7;23528:6;23517:9;23513:22;23484:61;:::i;:::-;23474:71;;23430:125;23217:345;;;;:::o;23568:173::-;23708:25;23704:1;23696:6;23692:14;23685:49;23568:173;:::o;23747:366::-;23889:3;23910:67;23974:2;23969:3;23910:67;:::i;:::-;23903:74;;23986:93;24075:3;23986:93;:::i;:::-;24104:2;24099:3;24095:12;24088:19;;23747:366;;;:::o;24119:419::-;24285:4;24323:2;24312:9;24308:18;24300:26;;24372:9;24366:4;24362:20;24358:1;24347:9;24343:17;24336:47;24400:131;24526:4;24400:131;:::i;:::-;24392:139;;24119:419;;;:::o;24544:244::-;24684:34;24680:1;24672:6;24668:14;24661:58;24753:27;24748:2;24740:6;24736:15;24729:52;24544:244;:::o;24794:366::-;24936:3;24957:67;25021:2;25016:3;24957:67;:::i;:::-;24950:74;;25033:93;25122:3;25033:93;:::i;:::-;25151:2;25146:3;25142:12;25135:19;;24794:366;;;:::o;25166:419::-;25332:4;25370:2;25359:9;25355:18;25347:26;;25419:9;25413:4;25409:20;25405:1;25394:9;25390:17;25383:47;25447:131;25573:4;25447:131;:::i;:::-;25439:139;;25166:419;;;:::o;25591:224::-;25731:34;25727:1;25719:6;25715:14;25708:58;25800:7;25795:2;25787:6;25783:15;25776:32;25591:224;:::o;25821:366::-;25963:3;25984:67;26048:2;26043:3;25984:67;:::i;:::-;25977:74;;26060:93;26149:3;26060:93;:::i;:::-;26178:2;26173:3;26169:12;26162:19;;25821:366;;;:::o;26193:419::-;26359:4;26397:2;26386:9;26382:18;26374:26;;26446:9;26440:4;26436:20;26432:1;26421:9;26417:17;26410:47;26474:131;26600:4;26474:131;:::i;:::-;26466:139;;26193:419;;;:::o;26618:348::-;26658:7;26681:20;26699:1;26681:20;:::i;:::-;26676:25;;26715:20;26733:1;26715:20;:::i;:::-;26710:25;;26903:1;26835:66;26831:74;26828:1;26825:81;26820:1;26813:9;26806:17;26802:105;26799:131;;;26910:18;;:::i;:::-;26799:131;26958:1;26955;26951:9;26940:20;;26618:348;;;;:::o;26972:180::-;27020:77;27017:1;27010:88;27117:4;27114:1;27107:15;27141:4;27138:1;27131:15;27158:185;27198:1;27215:20;27233:1;27215:20;:::i;:::-;27210:25;;27249:20;27267:1;27249:20;:::i;:::-;27244:25;;27288:1;27278:35;;27293:18;;:::i;:::-;27278:35;27335:1;27332;27328:9;27323:14;;27158:185;;;;:::o;27349:238::-;27489:34;27485:1;27477:6;27473:14;27466:58;27558:21;27553:2;27545:6;27541:15;27534:46;27349:238;:::o;27593:366::-;27735:3;27756:67;27820:2;27815:3;27756:67;:::i;:::-;27749:74;;27832:93;27921:3;27832:93;:::i;:::-;27950:2;27945:3;27941:12;27934:19;;27593:366;;;:::o;27965:419::-;28131:4;28169:2;28158:9;28154:18;28146:26;;28218:9;28212:4;28208:20;28204:1;28193:9;28189:17;28182:47;28246:131;28372:4;28246:131;:::i;:::-;28238:139;;27965:419;;;:::o;28390:237::-;28530:34;28526:1;28518:6;28514:14;28507:58;28599:20;28594:2;28586:6;28582:15;28575:45;28390:237;:::o;28633:366::-;28775:3;28796:67;28860:2;28855:3;28796:67;:::i;:::-;28789:74;;28872:93;28961:3;28872:93;:::i;:::-;28990:2;28985:3;28981:12;28974:19;;28633:366;;;:::o;29005:419::-;29171:4;29209:2;29198:9;29194:18;29186:26;;29258:9;29252:4;29248:20;29244:1;29233:9;29229:17;29222:47;29286:131;29412:4;29286:131;:::i;:::-;29278:139;;29005:419;;;:::o;29430:225::-;29570:34;29566:1;29558:6;29554:14;29547:58;29639:8;29634:2;29626:6;29622:15;29615:33;29430:225;:::o;29661:366::-;29803:3;29824:67;29888:2;29883:3;29824:67;:::i;:::-;29817:74;;29900:93;29989:3;29900:93;:::i;:::-;30018:2;30013:3;30009:12;30002:19;;29661:366;;;:::o;30033:419::-;30199:4;30237:2;30226:9;30222:18;30214:26;;30286:9;30280:4;30276:20;30272:1;30261:9;30257:17;30250:47;30314:131;30440:4;30314:131;:::i;:::-;30306:139;;30033:419;;;:::o;30458:147::-;30559:11;30596:3;30581:18;;30458:147;;;;:::o;30611:114::-;;:::o;30731:398::-;30890:3;30911:83;30992:1;30987:3;30911:83;:::i;:::-;30904:90;;31003:93;31092:3;31003:93;:::i;:::-;31121:1;31116:3;31112:11;31105:18;;30731:398;;;:::o;31135:379::-;31319:3;31341:147;31484:3;31341:147;:::i;:::-;31334:154;;31505:3;31498:10;;31135:379;;;:::o;31520:295::-;31660:34;31656:1;31648:6;31644:14;31637:58;31729:34;31724:2;31716:6;31712:15;31705:59;31798:9;31793:2;31785:6;31781:15;31774:34;31520:295;:::o;31821:366::-;31963:3;31984:67;32048:2;32043:3;31984:67;:::i;:::-;31977:74;;32060:93;32149:3;32060:93;:::i;:::-;32178:2;32173:3;32169:12;32162:19;;31821:366;;;:::o;32193:419::-;32359:4;32397:2;32386:9;32382:18;32374:26;;32446:9;32440:4;32436:20;32432:1;32421:9;32417:17;32410:47;32474:131;32600:4;32474:131;:::i;:::-;32466:139;;32193:419;;;:::o;32618:143::-;32675:5;32706:6;32700:13;32691:22;;32722:33;32749:5;32722:33;:::i;:::-;32618:143;;;;:::o;32767:351::-;32837:6;32886:2;32874:9;32865:7;32861:23;32857:32;32854:119;;;32892:79;;:::i;:::-;32854:119;33012:1;33037:64;33093:7;33084:6;33073:9;33069:22;33037:64;:::i;:::-;33027:74;;32983:128;32767:351;;;;:::o;33124:85::-;33169:7;33198:5;33187:16;;33124:85;;;:::o;33215:158::-;33273:9;33306:61;33324:42;33333:32;33359:5;33333:32;:::i;:::-;33324:42;:::i;:::-;33306:61;:::i;:::-;33293:74;;33215:158;;;:::o;33379:147::-;33474:45;33513:5;33474:45;:::i;:::-;33469:3;33462:58;33379:147;;:::o;33532:114::-;33599:6;33633:5;33627:12;33617:22;;33532:114;;;:::o;33652:184::-;33751:11;33785:6;33780:3;33773:19;33825:4;33820:3;33816:14;33801:29;;33652:184;;;;:::o;33842:132::-;33909:4;33932:3;33924:11;;33962:4;33957:3;33953:14;33945:22;;33842:132;;;:::o;33980:108::-;34057:24;34075:5;34057:24;:::i;:::-;34052:3;34045:37;33980:108;;:::o;34094:179::-;34163:10;34184:46;34226:3;34218:6;34184:46;:::i;:::-;34262:4;34257:3;34253:14;34239:28;;34094:179;;;;:::o;34279:113::-;34349:4;34381;34376:3;34372:14;34364:22;;34279:113;;;:::o;34428:732::-;34547:3;34576:54;34624:5;34576:54;:::i;:::-;34646:86;34725:6;34720:3;34646:86;:::i;:::-;34639:93;;34756:56;34806:5;34756:56;:::i;:::-;34835:7;34866:1;34851:284;34876:6;34873:1;34870:13;34851:284;;;34952:6;34946:13;34979:63;35038:3;35023:13;34979:63;:::i;:::-;34972:70;;35065:60;35118:6;35065:60;:::i;:::-;35055:70;;34911:224;34898:1;34895;34891:9;34886:14;;34851:284;;;34855:14;35151:3;35144:10;;34552:608;;;34428:732;;;;:::o;35166:720::-;35401:4;35439:3;35428:9;35424:19;35416:27;;35453:79;35529:1;35518:9;35514:17;35505:6;35453:79;:::i;:::-;35579:9;35573:4;35569:20;35564:2;35553:9;35549:18;35542:48;35607:108;35710:4;35701:6;35607:108;:::i;:::-;35599:116;;35725:72;35793:2;35782:9;35778:18;35769:6;35725:72;:::i;:::-;35807;35875:2;35864:9;35860:18;35851:6;35807:72;:::i;:::-;35166:720;;;;;;;:::o;35892:223::-;36032:34;36028:1;36020:6;36016:14;36009:58;36101:6;36096:2;36088:6;36084:15;36077:31;35892:223;:::o;36121:366::-;36263:3;36284:67;36348:2;36343:3;36284:67;:::i;:::-;36277:74;;36360:93;36449:3;36360:93;:::i;:::-;36478:2;36473:3;36469:12;36462:19;;36121:366;;;:::o;36493:419::-;36659:4;36697:2;36686:9;36682:18;36674:26;;36746:9;36740:4;36736:20;36732:1;36721:9;36717:17;36710:47;36774:131;36900:4;36774:131;:::i;:::-;36766:139;;36493:419;;;:::o;36918:221::-;37058:34;37054:1;37046:6;37042:14;37035:58;37127:4;37122:2;37114:6;37110:15;37103:29;36918:221;:::o;37145:366::-;37287:3;37308:67;37372:2;37367:3;37308:67;:::i;:::-;37301:74;;37384:93;37473:3;37384:93;:::i;:::-;37502:2;37497:3;37493:12;37486:19;;37145:366;;;:::o;37517:419::-;37683:4;37721:2;37710:9;37706:18;37698:26;;37770:9;37764:4;37760:20;37756:1;37745:9;37741:17;37734:47;37798:131;37924:4;37798:131;:::i;:::-;37790:139;;37517:419;;;:::o;37942:224::-;38082:34;38078:1;38070:6;38066:14;38059:58;38151:7;38146:2;38138:6;38134:15;38127:32;37942:224;:::o;38172:366::-;38314:3;38335:67;38399:2;38394:3;38335:67;:::i;:::-;38328:74;;38411:93;38500:3;38411:93;:::i;:::-;38529:2;38524:3;38520:12;38513:19;;38172:366;;;:::o;38544:419::-;38710:4;38748:2;38737:9;38733:18;38725:26;;38797:9;38791:4;38787:20;38783:1;38772:9;38768:17;38761:47;38825:131;38951:4;38825:131;:::i;:::-;38817:139;;38544:419;;;:::o;38969:222::-;39109:34;39105:1;39097:6;39093:14;39086:58;39178:5;39173:2;39165:6;39161:15;39154:30;38969:222;:::o;39197:366::-;39339:3;39360:67;39424:2;39419:3;39360:67;:::i;:::-;39353:74;;39436:93;39525:3;39436:93;:::i;:::-;39554:2;39549:3;39545:12;39538:19;;39197:366;;;:::o;39569:419::-;39735:4;39773:2;39762:9;39758:18;39750:26;;39822:9;39816:4;39812:20;39808:1;39797:9;39793:17;39786:47;39850:131;39976:4;39850:131;:::i;:::-;39842:139;;39569:419;;;:::o;39994:225::-;40134:34;40130:1;40122:6;40118:14;40111:58;40203:8;40198:2;40190:6;40186:15;40179:33;39994:225;:::o;40225:366::-;40367:3;40388:67;40452:2;40447:3;40388:67;:::i;:::-;40381:74;;40464:93;40553:3;40464:93;:::i;:::-;40582:2;40577:3;40573:12;40566:19;;40225:366;;;:::o;40597:419::-;40763:4;40801:2;40790:9;40786:18;40778:26;;40850:9;40844:4;40840:20;40836:1;40825:9;40821:17;40814:47;40878:131;41004:4;40878:131;:::i;:::-;40870:139;;40597:419;;;:::o;41022:179::-;41162:31;41158:1;41150:6;41146:14;41139:55;41022:179;:::o;41207:366::-;41349:3;41370:67;41434:2;41429:3;41370:67;:::i;:::-;41363:74;;41446:93;41535:3;41446:93;:::i;:::-;41564:2;41559:3;41555:12;41548:19;;41207:366;;;:::o;41579:419::-;41745:4;41783:2;41772:9;41768:18;41760:26;;41832:9;41826:4;41822:20;41818:1;41807:9;41803:17;41796:47;41860:131;41986:4;41860:131;:::i;:::-;41852:139;;41579:419;;;:::o;42004:172::-;42144:24;42140:1;42132:6;42128:14;42121:48;42004:172;:::o;42182:366::-;42324:3;42345:67;42409:2;42404:3;42345:67;:::i;:::-;42338:74;;42421:93;42510:3;42421:93;:::i;:::-;42539:2;42534:3;42530:12;42523:19;;42182:366;;;:::o;42554:419::-;42720:4;42758:2;42747:9;42743:18;42735:26;;42807:9;42801:4;42797:20;42793:1;42782:9;42778:17;42771:47;42835:131;42961:4;42835:131;:::i;:::-;42827:139;;42554:419;;;:::o;42979:249::-;43119:34;43115:1;43107:6;43103:14;43096:58;43188:32;43183:2;43175:6;43171:15;43164:57;42979:249;:::o;43234:366::-;43376:3;43397:67;43461:2;43456:3;43397:67;:::i;:::-;43390:74;;43473:93;43562:3;43473:93;:::i;:::-;43591:2;43586:3;43582:12;43575:19;;43234:366;;;:::o;43606:419::-;43772:4;43810:2;43799:9;43795:18;43787:26;;43859:9;43853:4;43849:20;43845:1;43834:9;43830:17;43823:47;43887:131;44013:4;43887:131;:::i;:::-;43879:139;;43606:419;;;:::o;44031:227::-;44171:34;44167:1;44159:6;44155:14;44148:58;44240:10;44235:2;44227:6;44223:15;44216:35;44031:227;:::o;44264:366::-;44406:3;44427:67;44491:2;44486:3;44427:67;:::i;:::-;44420:74;;44503:93;44592:3;44503:93;:::i;:::-;44621:2;44616:3;44612:12;44605:19;;44264:366;;;:::o;44636:419::-;44802:4;44840:2;44829:9;44825:18;44817:26;;44889:9;44883:4;44879:20;44875:1;44864:9;44860:17;44853:47;44917:131;45043:4;44917:131;:::i;:::-;44909:139;;44636:419;;;:::o;45061:174::-;45201:26;45197:1;45189:6;45185:14;45178:50;45061:174;:::o;45241:366::-;45383:3;45404:67;45468:2;45463:3;45404:67;:::i;:::-;45397:74;;45480:93;45569:3;45480:93;:::i;:::-;45598:2;45593:3;45589:12;45582:19;;45241:366;;;:::o;45613:419::-;45779:4;45817:2;45806:9;45802:18;45794:26;;45866:9;45860:4;45856:20;45852:1;45841:9;45837:17;45830:47;45894:131;46020:4;45894:131;:::i;:::-;45886:139;;45613:419;;;:::o;46038:222::-;46178:34;46174:1;46166:6;46162:14;46155:58;46247:5;46242:2;46234:6;46230:15;46223:30;46038:222;:::o;46266:366::-;46408:3;46429:67;46493:2;46488:3;46429:67;:::i;:::-;46422:74;;46505:93;46594:3;46505:93;:::i;:::-;46623:2;46618:3;46614:12;46607:19;;46266:366;;;:::o;46638:419::-;46804:4;46842:2;46831:9;46827:18;46819:26;;46891:9;46885:4;46881:20;46877:1;46866:9;46862:17;46855:47;46919:131;47045:4;46919:131;:::i;:::-;46911:139;;46638:419;;;:::o;47063:191::-;47103:4;47123:20;47141:1;47123:20;:::i;:::-;47118:25;;47157:20;47175:1;47157:20;:::i;:::-;47152:25;;47196:1;47193;47190:8;47187:34;;;47201:18;;:::i;:::-;47187:34;47246:1;47243;47239:9;47231:17;;47063:191;;;;:::o;47260:831::-;47523:4;47561:3;47550:9;47546:19;47538:27;;47575:71;47643:1;47632:9;47628:17;47619:6;47575:71;:::i;:::-;47656:80;47732:2;47721:9;47717:18;47708:6;47656:80;:::i;:::-;47783:9;47777:4;47773:20;47768:2;47757:9;47753:18;47746:48;47811:108;47914:4;47905:6;47811:108;:::i;:::-;47803:116;;47929:72;47997:2;47986:9;47982:18;47973:6;47929:72;:::i;:::-;48011:73;48079:3;48068:9;48064:19;48055:6;48011:73;:::i;:::-;47260:831;;;;;;;;:::o;48097:320::-;48212:4;48250:2;48239:9;48235:18;48227:26;;48263:71;48331:1;48320:9;48316:17;48307:6;48263:71;:::i;:::-;48344:66;48406:2;48395:9;48391:18;48382:6;48344:66;:::i;:::-;48097:320;;;;;:::o

Swarm Source

ipfs://892d6d87ec599bcdc56c073423bd55c0649f98a575d846c358c4a2b0aa048c62
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.