ETH Price: $3,106.40 (+0.27%)
Gas: 3 Gwei

Token

Village Protocol (VLPRO)
 

Overview

Max Total Supply

10,000,000,000 VLPRO

Holders

274

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,099,633 VLPRO

Value
$0.00
0x39ccc0175abbc1599dac58226a4a8be395bee79b
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:
Village

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-10
*/

/*
██╗   ██╗██╗██╗     ██╗      █████╗  ██████╗ ███████╗    ██████╗ ██████╗  ██████╗ ████████╗ ██████╗  ██████╗ ██████╗ ██╗     
██║   ██║██║██║     ██║     ██╔══██╗██╔════╝ ██╔════╝    ██╔══██╗██╔══██╗██╔═══██╗╚══██╔══╝██╔═══██╗██╔════╝██╔═══██╗██║     
██║   ██║██║██║     ██║     ███████║██║  ███╗█████╗      ██████╔╝██████╔╝██║   ██║   ██║   ██║   ██║██║     ██║   ██║██║     
╚██╗ ██╔╝██║██║     ██║     ██╔══██║██║   ██║██╔══╝      ██╔═══╝ ██╔══██╗██║   ██║   ██║   ██║   ██║██║     ██║   ██║██║     
 ╚████╔╝ ██║███████╗███████╗██║  ██║╚██████╔╝███████╗    ██║     ██║  ██║╚██████╔╝   ██║   ╚██████╔╝╚██████╗╚██████╔╝███████╗
  ╚═══╝  ╚═╝╚══════╝╚══════╝╚═╝  ╚═╝ ╚═════╝ ╚══════╝    ╚═╝     ╚═╝  ╚═╝ ╚═════╝    ╚═╝    ╚═════╝  ╚═════╝ ╚═════╝ ╚══════╝

DISCLAIMER: We are not registered investment, legal advisors, tax advisors or broker / dealer / licensed financial advisors. 
All investment and financial opinions expressed here are from personal research and experience of the team and occasional unintended errors and misprints may occur. 
You should know that in general, investing carries extreme risks and you take on the full responsibility of evaluating the merits and risks of your investments. 
This is not trading or financial advice and we are in no way liable for any losses incurred.

WEBSITE : VillageProtocol.net
TELEGRAM : t.me/VillageProtocol                                                                                                                            
*/

// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.11;

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

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

interface IERC20 {
  function totalSupply() external view returns (uint256);
  function decimals() external view returns (uint8);
  function symbol() external view returns (string memory);
  function name() external view returns (string memory);
  function getOwner() external view returns (address);
  function balanceOf(address account) external view returns (uint256);
  function transfer(address recipient, uint256 amount) external returns (bool);
  function allowance(address _owner, address spender) external view returns (uint256);
  function approve(address spender, uint256 amount) external returns (bool);
  function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function factory() external view returns (address);
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        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;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract Village is Context, IERC20 {
    // Ownership moved to in-contract for customizability.
    address private _owner;

    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public isExcludedFromMaxWalletRestrictions;

    mapping (address => bool) private _isSniperOrBlacklisted;
    
    bool private sameBlockActive = false;
    mapping (address => uint256) private lastTrade;    

    uint256 private startingSupply = 10_000_000_000;

    string private _name = "Village Protocol";
    string private _symbol = "VLPRO";
//==========================
    // FEES
    struct taxes {
    uint buyFee;
    uint sellFee;
    uint transferFee;
    }

    taxes public Fees = taxes(
    {buyFee: 0, sellFee: 900, transferFee: 0});
//==========================
    // Maxima

    struct Maxima {
    uint maxBuy;
    uint maxSell;
    uint maxTransfer;
    }

    Maxima public maxFees = Maxima(
    {maxBuy: 1000, maxSell: 1000, maxTransfer: 2000});
//==========================    
    //Proportions of Taxes
    struct feeProportions {
    uint liquidity;
    uint tokenFee;
    uint operationsFee;
    uint teamFee;
    }

    feeProportions public Ratios = feeProportions(
    { liquidity: 0, tokenFee: 100, operationsFee: 500, teamFee: 300});

    uint256 private constant masterTaxDivisor = 10000;
    uint256 private constant MAX = ~uint256(0);
    uint8 constant private _decimals = 9;
 
    uint256 private _tTotal = startingSupply * 10**_decimals;
    uint256 private _tFeeTotal;

    IUniswapV2Router02 public dexRouter;
    address public lpPair;

    // UNI ROUTER
    address constant private _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    
    address payable public _operationsWallet = payable(0xC4Db883f25805dbE13E2274F72EF00A3Fe68eff5);
    address payable public _teamWallet = payable(0x75e43A8801755c8Da579186DB81e9595EECe46AA);
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    
    uint256 private maxTxPercent = 5;
    uint256 private maxTxDivisor = 1000;
    uint256 private _maxTxAmount = (_tTotal * maxTxPercent) / maxTxDivisor;
    
    uint256 private maxWalletPercent = 1;
    uint256 private maxWalletDivisor = 100;
    uint256 private _maxWalletSize = (_tTotal * maxWalletPercent) / maxWalletDivisor;
    
    uint256 private swapThreshold = (_tTotal * 5) / 10_000;
    uint256 private swapAmount = (_tTotal * 5) / 1_000;

    bool private sniperProtection = true;
    bool public _hasLiqBeenAdded = false;
    uint256 private _liqAddStatus = 0;
    uint256 private _liqAddBlock = 0;
    uint256 private _liqAddStamp = 0;
    uint256 private _initialLiquidityAmount = 0; // make constant
    uint256 private snipeBlockAmt = 0;
    uint256 public snipersCaught = 0;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    event SniperCaught(address sniperAddress);
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Caller != owner.");
        _;
    }
    
    constructor () payable {
        _tOwned[_msgSender()] = _tTotal;

        // Set the owner.
        _owner = msg.sender;

        dexRouter = IUniswapV2Router02(_routerAddress);
        lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;
        _allowances[address(this)][address(dexRouter)] = type(uint256).max;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[_operationsWallet] = true;
        _isExcludedFromFees[DEAD] = true;

        _liquidityHolders[owner()] = true;
        _liquidityHolders[_operationsWallet] = true;

        _isSniperOrBlacklisted[0x0Ff5F706A99BE785B35dF6788ED698290ab56ac0] = true; // AnySniper cucked

        // Approve the owner for Uniswap, timesaver.
        _approve(_msgSender(), _routerAddress, _tTotal);

        // Event regarding the tTotal transferred to the _msgSender.
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and recnouncements.
    // This allows for removal of ownership privelages from the owner once renounced or transferred.
    function owner() public view returns (address) {
        return _owner;
    }

    function transferOwner(address newOwner) external onlyOwner() {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        

        _allowances[_owner][newOwner] = balanceOf(_owner);
        if(balanceOf(_owner) > 0) {
            _transfer(_owner, newOwner, balanceOf(_owner));
        }
        
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
        
    }

    function renounceOwnership() public virtual onlyOwner() {
        setExcludedFromFees(_owner, false);
        _owner = address(0);
        emit OwnershipTransferred(_owner, address(0));
    }
    
//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

    function totalSupply() external view override returns (uint256) { return _tTotal; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external view override returns (string memory) { return _symbol; }
    function name() external view override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner(); }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

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

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

    function _approve(address sender, address spender, uint256 amount) private {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

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

    function approveMax(address spender) public returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] -= amount;
        }

        return _transfer(sender, recipient, amount);
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }

    function setNewRouter(address newRouter) public onlyOwner() {
        IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter);
        address get_pair = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (enabled == false) {
            lpPairs[pair] = false;
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 1 weeks, "One week cooldown.");
            }
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
        }
    }

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

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


    function excludeFromWalletRestrictions(address excludedAddress) public onlyOwner{
        isExcludedFromMaxWalletRestrictions[excludedAddress] = true;
    }

    function revokeExcludedFromWalletRestrictions(address excludedAddress) public onlyOwner{
        isExcludedFromMaxWalletRestrictions[excludedAddress] = false;
    }

    function isSniperOrBlacklisted(address account) public view returns (bool) {
        return _isSniperOrBlacklisted[account];
    }

    function isProtected(uint256 rInitializer) external onlyOwner {
        require (_liqAddStatus == 0, "Error.");
        _liqAddStatus = rInitializer;
        snipeBlockAmt = 2;
    }

    function setBlacklistEnabled(address account, bool enabled) external onlyOwner() {
        _isSniperOrBlacklisted[account] = enabled;
    }

    function setRatios(uint _liquidity, uint _operationsFee, uint _teamFee , uint _tokenFee) external onlyOwner {
        require ( (_liquidity+_operationsFee+_tokenFee+_teamFee) == 1000, "!1K");
        Ratios.liquidity = _liquidity;
        Ratios.operationsFee = _operationsFee;
        Ratios.tokenFee = _tokenFee;
        Ratios.teamFee = _teamFee;}

    function setTaxes(uint _buyFee, uint _sellFee, uint _transferFee) external onlyOwner {
        require(_buyFee <= maxFees.maxBuy
                && _sellFee <= maxFees.maxSell
                && _transferFee <= maxFees.maxTransfer,
                "Cannot exceed maximums.");
         Fees.buyFee = _buyFee;
         Fees.sellFee = _sellFee;
         Fees.transferFee = _transferFee;
    }

    function setMaxTxPercent(uint percent, uint divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 300), "Must be above 0.33~% of total supply.");
        _maxTxAmount = check;
    }

    function setMaxWalletSize(uint percent, uint divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 300), "Must be above 0.33~% of total supply.");
        _maxWalletSize = check;

    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
    }

    function setWallets(address payable operationsWallet, address payable teamWallet) external onlyOwner {
        _operationsWallet = payable(operationsWallet);
        _teamWallet = payable(teamWallet);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function _hasLimits(address from, address to) private view returns (bool) {
        return from != owner()
            && to != owner()
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this)
            && from != _operationsWallet
            && to != _operationsWallet;
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: Zero address.");
        require(to != address(0), "ERC20: Zero address.");
        require(amount > 0, "Must >0.");
        if(_hasLimits(from, to)) {
            if (sameBlockActive) {
                if (lpPairs[from]){
                    require(lastTrade[to] != block.number);
                    lastTrade[to] = block.number;
                    } 
                else {
                    require(lastTrade[from] != block.number);
                    lastTrade[from] = block.number;
                    }
            }
            if(!(isExcludedFromMaxWalletRestrictions[from] || isExcludedFromMaxWalletRestrictions[to])) {
                if(lpPairs[from] || lpPairs[to]){
                require(amount <= _maxTxAmount, "Exceeds the maxTxAmount.");
                }
                if(to != _routerAddress && !lpPairs[to]) {
                    require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                }

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

        if (lpPairs[to]) {
            if (!inSwapAndLiquify
                && swapAndLiquifyEnabled
            ) {
                uint256 contractTokenBalance = balanceOf(address(this));
                if (contractTokenBalance >= swapThreshold) {
                    if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                    swapAndLiquify(contractTokenBalance);
                }
            }      
        } 
        return _finalizeTransfer(from, to, amount, takeFee);
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        if (Ratios.liquidity + Ratios.operationsFee + Ratios.teamFee == 0)
            return;
        uint256 toLiquify = ((contractTokenBalance * Ratios.liquidity) / (Ratios.liquidity + Ratios.operationsFee + Ratios.teamFee) ) / 2;

        uint256 toSwapForEth = contractTokenBalance - toLiquify;
        swapTokensForEth(toSwapForEth);

        uint256 currentBalance = address(this).balance;
        uint256 liquidityBalance = ((currentBalance * Ratios.liquidity) / (Ratios.liquidity + Ratios.operationsFee + Ratios.teamFee) ) / 2;

        if (toLiquify > 0) {
            addLiquidity(toLiquify, liquidityBalance);
            emit SwapAndLiquify(toLiquify, liquidityBalance, toLiquify);
        }
        if (contractTokenBalance - toLiquify > 0) {
            uint ethBal = address(this).balance;
            uint ethBalForOperations = ((ethBal * Ratios.operationsFee) / (Ratios.operationsFee + Ratios.teamFee));
            _operationsWallet.transfer(ethBalForOperations);
            _teamWallet.transfer(address(this).balance);
        }
    }

    function swapTokensForEth(uint256 tokenAmount) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            _operationsWallet,
            block.timestamp
        );
    }

    function _checkLiquidityAdd(address from, address to) private {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            if (snipeBlockAmt != 2) {
                _liqAddBlock = block.number + 5000;
            } else {
                _liqAddBlock = block.number;
            }
            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            _liqAddStamp = block.timestamp;

            swapAndLiquifyEnabled = true;
            emit SwapAndLiquifyEnabledUpdated(true);
        }
    }

    function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee) private returns (bool) {
        if (sniperProtection){
            if (isSniperOrBlacklisted(from) || isSniperOrBlacklisted(to)) {
                revert("Sniper rejected.");
            }

            if (!_hasLiqBeenAdded) {
                _checkLiquidityAdd(from, to);
                if (!_hasLiqBeenAdded && _hasLimits(from, to)) {
                    revert("Only owner can transfer at this time.");
                }
            } else {
                if (_liqAddBlock > 0 
                    && lpPairs[from] 
                    && _hasLimits(from, to)
                ) {
                    if (block.number - _liqAddBlock < snipeBlockAmt) {
                        _isSniperOrBlacklisted[to] = true;
                        snipersCaught ++;
                        emit SniperCaught(to);
                    }
                }
            }
        }

        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, to, amount) : amount; //A
        _tOwned[to] += amountReceived;

        emit Transfer(from, to, amountReceived);
        return true;
    }

    function takeTaxes(address from, address to, uint256 amount) internal returns (uint256) {
        uint256 currentFee;

        if (to == lpPair) {currentFee = Fees.sellFee;}

        else if (from == lpPair) {currentFee = Fees.buyFee;} 

        else {currentFee = Fees.transferFee;}

        if (_hasLimits(from, to)){
            if (_liqAddStatus == 0 || _liqAddStatus != (_decimals)) {
                revert();
            }
        }
        uint256 tokenFeeAmt = (amount * currentFee * Ratios.tokenFee) / (Ratios.tokenFee + Ratios.liquidity + Ratios.operationsFee + Ratios.teamFee ) / masterTaxDivisor;
        uint256 feeAmount = (amount * currentFee / masterTaxDivisor) - tokenFeeAmt;
        _tOwned[_operationsWallet] += tokenFeeAmt;
        _tOwned[address(this)] += (feeAmount);
        emit Transfer(from, _operationsWallet, tokenFeeAmt);
        emit Transfer(from, address(this), feeAmount);
        return amount - feeAmount - tokenFeeAmt;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniperAddress","type":"address"}],"name":"SniperCaught","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":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Fees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"},{"internalType":"uint256","name":"transferFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Ratios","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"tokenFee","type":"uint256"},{"internalType":"uint256","name":"operationsFee","type":"uint256"},{"internalType":"uint256","name":"teamFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_operationsWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"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 IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"excludedAddress","type":"address"}],"name":"excludeFromWalletRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxWalletRestrictions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rInitializer","type":"uint256"}],"name":"isProtected","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isSniperOrBlacklisted","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":"maxFees","outputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"},{"internalType":"uint256","name":"maxTransfer","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"excludedAddress","type":"address"}],"name":"revokeExcludedFromWalletRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_tokenFee","type":"uint256"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"},{"internalType":"uint256","name":"_transferFee","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"operationsWallet","type":"address"},{"internalType":"address payable","name":"teamWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipersCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260006003556000600960006101000a81548160ff0219169083151502179055506402540be400600b556040518060400160405280601081526020017f56696c6c6167652050726f746f636f6c00000000000000000000000000000000815250600c90805190602001906200007a92919062000d29565b506040518060400160405280600581526020017f564c50524f000000000000000000000000000000000000000000000000000000815250600d9080519060200190620000c892919062000d29565b5060405180606001604052806000815260200161038481526020016000815250600e600082015181600001556020820151816001015560408201518160020155505060405180606001604052806103e881526020016103e881526020016107d081525060116000820151816000015560208201518160010155604082015181600201555050604051806080016040528060008152602001606481526020016101f4815260200161012c81525060146000820151816000015560208201518160010155604082015181600201556060820151816003015550506009600a620001b0919062000f73565b600b54620001bf919062000fc4565b60185573c4db883f25805dbe13e2274f72ef00a3fe68eff5601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507375e43a8801755c8da579186db81e9595eece46aa601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601d60156101000a81548160ff0219169083151502179055506005601e556103e8601f55601f54601e54601854620002a7919062000fc4565b620002b3919062001054565b60205560016021556064602255602254602154601854620002d5919062000fc4565b620002e1919062001054565b6023556127106005601854620002f8919062000fc4565b62000304919062001054565b6024556103e860056018546200031b919062000fc4565b62000327919062001054565b6025556001602660006101000a81548160ff0219169083151502179055506000602660016101000a81548160ff0219169083151502179055506000602755600060285560006029556000602a556000602b556000602c55601854600160006200039562000b2560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004fc9190620010f6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000585573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005ab9190620010f6565b306040518363ffffffff1660e01b8152600401620005cb92919062001139565b6020604051808303816000875af1158015620005eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006119190620010f6565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160026000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160066000620007a462000b2d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560006200093762000b2d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000730ff5f706a99be785b35df6788ed698290ab56ac073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000aa662000a8262000b2560201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d60185462000b5660201b60201c565b62000ab662000b2560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60185460405162000b17919062001177565b60405180910390a36200127c565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562000bc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bc090620011f5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000c3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c3390620011f5565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000d1c919062001177565b60405180910390a3505050565b82805462000d379062001246565b90600052602060002090601f01602090048101928262000d5b576000855562000da7565b82601f1062000d7657805160ff191683800117855562000da7565b8280016001018555821562000da7579182015b8281111562000da657825182559160200191906001019062000d89565b5b50905062000db6919062000dba565b5090565b5b8082111562000dd557600081600090555060010162000dbb565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000e675780860481111562000e3f5762000e3e62000dd9565b5b600185161562000e4f5780820291505b808102905062000e5f8562000e08565b945062000e1f565b94509492505050565b60008262000e82576001905062000f55565b8162000e92576000905062000f55565b816001811462000eab576002811462000eb65762000eec565b600191505062000f55565b60ff84111562000ecb5762000eca62000dd9565b5b8360020a91508482111562000ee55762000ee462000dd9565b5b5062000f55565b5060208310610133831016604e8410600b841016171562000f265782820a90508381111562000f205762000f1f62000dd9565b5b62000f55565b62000f35848484600162000e15565b9250905081840481111562000f4f5762000f4e62000dd9565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000f808262000f5c565b915062000f8d8362000f66565b925062000fbc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000e70565b905092915050565b600062000fd18262000f5c565b915062000fde8362000f5c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200101a576200101962000dd9565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010618262000f5c565b91506200106e8362000f5c565b92508262001081576200108062001025565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620010be8262001091565b9050919050565b620010d081620010b1565b8114620010dc57600080fd5b50565b600081519050620010f081620010c5565b92915050565b6000602082840312156200110f576200110e6200108c565b5b60006200111f84828501620010df565b91505092915050565b6200113381620010b1565b82525050565b600060408201905062001150600083018562001128565b6200115f602083018462001128565b9392505050565b620011718162000f5c565b82525050565b60006020820190506200118e600083018462001166565b92915050565b600082825260208201905092915050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b6000620011dd60138362001194565b9150620011ea82620011a5565b602082019050919050565b600060208201905081810360008301526200121081620011ce565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200125f57607f821691505b6020821081141562001276576200127562001217565b5b50919050565b6154e0806200128c6000396000f3fe60806040526004361061026b5760003560e01c8063715018a611610144578063bc1323e8116100b6578063e79d41601161007a578063e79d41601461097a578063e83e34b1146109a5578063e9dae5ed146109d2578063eafb5a3c146109fb578063eec2744e14610a24578063fb78680d14610a4d57610272565b8063bc1323e814610899578063c49b9a80146108c2578063ce8b79c9146108eb578063d3f6a15714610914578063dd62ed3e1461093d57610272565b80638c7321ad116101085780638c7321ad1461075e5780638da5cb5b1461079b57806395d89b41146107c6578063a457c2d7146107f1578063a9059cbb1461082e578063b5f7bfa21461086b57610272565b8063715018a61461068d57806380c581d1146106a457806381c6f11b146106cd578063893d20e8146106f657806389fd9bc11461072157610272565b80633aaa36e6116101dd5780634fb2e45d116101a15780634fb2e45d146105595780634fbee1931461058257806350a8e016146105bf578063571ac8b0146105ea578063590ffdce1461062757806370a082311461065057610272565b80633aaa36e6146104825780633da87806146104af5780633f3cf56c146104da578063452ed4f1146105035780634a74bb021461052e57610272565b806318160ddd1161022f57806318160ddd1461035e57806323b872dd1461038957806326003957146103c6578063313ce567146103ef57806337e294d51461041a578063395093511461044557610272565b806303fd2a451461027757806306fdde03146102a25780630758d924146102cd578063095ea7b3146102f85780631793fe4e1461033557610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c610a76565b6040516102999190614269565b60405180910390f35b3480156102ae57600080fd5b506102b7610a7c565b6040516102c4919061431d565b60405180910390f35b3480156102d957600080fd5b506102e2610b0e565b6040516102ef919061439e565b60405180910390f35b34801561030457600080fd5b5061031f600480360381019061031a9190614420565b610b34565b60405161032c919061447b565b60405180910390f35b34801561034157600080fd5b5061035c60048036038101906103579190614496565b610b52565b005b34801561036a57600080fd5b50610373610c7a565b604051610380919061450c565b60405180910390f35b34801561039557600080fd5b506103b060048036038101906103ab9190614527565b610c84565b6040516103bd919061447b565b60405180910390f35b3480156103d257600080fd5b506103ed60048036038101906103e8919061457a565b610dd1565b005b3480156103fb57600080fd5b50610404610ee1565b60405161041191906145d6565b60405180910390f35b34801561042657600080fd5b5061042f610eea565b60405161043c9190614612565b60405180910390f35b34801561045157600080fd5b5061046c60048036038101906104679190614420565b610f10565b604051610479919061447b565b60405180910390f35b34801561048e57600080fd5b50610497610fbc565b6040516104a69392919061462d565b60405180910390f35b3480156104bb57600080fd5b506104c4610fd4565b6040516104d19190614612565b60405180910390f35b3480156104e657600080fd5b5061050160048036038101906104fc919061457a565b610ffa565b005b34801561050f57600080fd5b5061051861110a565b6040516105259190614269565b60405180910390f35b34801561053a57600080fd5b50610543611130565b604051610550919061447b565b60405180910390f35b34801561056557600080fd5b50610580600480360381019061057b9190614664565b611143565b005b34801561058e57600080fd5b506105a960048036038101906105a49190614664565b6114fc565b6040516105b6919061447b565b60405180910390f35b3480156105cb57600080fd5b506105d4611552565b6040516105e1919061447b565b60405180910390f35b3480156105f657600080fd5b50610611600480360381019061060c9190614664565b611565565b60405161061e919061447b565b60405180910390f35b34801561063357600080fd5b5061064e600480360381019061064991906146bd565b611598565b005b34801561065c57600080fd5b5061067760048036038101906106729190614664565b611688565b604051610684919061450c565b60405180910390f35b34801561069957600080fd5b506106a26116d1565b005b3480156106b057600080fd5b506106cb60048036038101906106c691906146bd565b61184f565b005b3480156106d957600080fd5b506106f460048036038101906106ef91906146fd565b611a0f565b005b34801561070257600080fd5b5061070b611afb565b6040516107189190614269565b60405180910390f35b34801561072d57600080fd5b5061074860048036038101906107439190614664565b611b0a565b604051610755919061447b565b60405180910390f35b34801561076a57600080fd5b5061078560048036038101906107809190614664565b611b60565b604051610792919061447b565b60405180910390f35b3480156107a757600080fd5b506107b0611b80565b6040516107bd9190614269565b60405180910390f35b3480156107d257600080fd5b506107db611ba9565b6040516107e8919061431d565b60405180910390f35b3480156107fd57600080fd5b5061081860048036038101906108139190614420565b611c3b565b604051610825919061447b565b60405180910390f35b34801561083a57600080fd5b5061085560048036038101906108509190614420565b611ce7565b604051610862919061447b565b60405180910390f35b34801561087757600080fd5b50610880611d06565b604051610890949392919061472a565b60405180910390f35b3480156108a557600080fd5b506108c060048036038101906108bb9190614664565b611d24565b005b3480156108ce57600080fd5b506108e960048036038101906108e4919061476f565b611e14565b005b3480156108f757600080fd5b50610912600480360381019061090d9190614664565b611efd565b005b34801561092057600080fd5b5061093b600480360381019061093691906147c8565b611fed565b005b34801561094957600080fd5b50610964600480360381019061095f9190614808565b612108565b604051610971919061450c565b60405180910390f35b34801561098657600080fd5b5061098f61218f565b60405161099c919061450c565b60405180910390f35b3480156109b157600080fd5b506109ba612195565b6040516109c99392919061462d565b60405180910390f35b3480156109de57600080fd5b506109f960048036038101906109f49190614848565b6121ad565b005b348015610a0757600080fd5b50610a226004803603810190610a1d9190614664565b6122cf565b005b348015610a3057600080fd5b50610a4b6004803603810190610a4691906146bd565b612721565b005b348015610a5957600080fd5b50610a746004803603810190610a6f9190614496565b612811565b005b61dead81565b6060600c8054610a8b906148ca565b80601f0160208091040260200160405190810160405280929190818152602001828054610ab7906148ca565b8015610b045780601f10610ad957610100808354040283529160200191610b04565b820191906000526020600020905b815481529060010190602001808311610ae757829003601f168201915b5050505050905090565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610b48610b416128ea565b84846128f2565b6001905092915050565b610b5a6128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bde90614948565b60405180910390fd5b6103e882828587610bf89190614997565b610c029190614997565b610c0c9190614997565b14610c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4390614a39565b60405180910390fd5b8360146000018190555082601460020181905550806014600101819055508160146003018190555050505050565b6000601854905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610dbd5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610db59190614a59565b925050819055505b610dc8848484612abd565b90509392505050565b610dd96128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5d90614948565b60405180910390fd5b60008183601854610e779190614a8d565b610e819190614b16565b905061012c601854610e939190614b16565b811015610ed5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecc90614bb9565b60405180910390fd5b80602381905550505050565b60006009905090565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610fb2610f1d6128ea565b848460046000610f2b6128ea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fad9190614997565b6128f2565b6001905092915050565b600e8060000154908060010154908060020154905083565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110026128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461108f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108690614948565b60405180910390fd5b600081836018546110a09190614a8d565b6110aa9190614b16565b905061012c6018546110bc9190614b16565b8110156110fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f590614bb9565b60405180910390fd5b80602081905550505050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d60159054906101000a900460ff1681565b61114b6128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cf90614948565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123f90614c4b565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b090614c4b565b60405180910390fd5b6112e460008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611598565b6112ef816001611598565b61131860008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611688565b600460008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006113e460008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611688565b111561143f5761143d60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261143860008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611688565b612abd565b505b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b602660019054906101000a900460ff1681565b6000611591827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b34565b9050919050565b6115a06128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461162d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162490614948565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116d96128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d90614948565b60405180910390fd5b61179160008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611598565b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b6118576128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118db90614948565b60405180910390fd5b60001515811515141561194e576000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611a0b565b6000600354146119ab5762093a806003544261196a9190614a59565b116119aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a190614cb7565b60405180910390fd5b5b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550426003819055505b5050565b611a176128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9b90614948565b60405180910390fd5b600060275414611ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae090614d23565b60405180910390fd5b806027819055506002602b8190555050565b6000611b05611b80565b905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60076020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600d8054611bb8906148ca565b80601f0160208091040260200160405190810160405280929190818152602001828054611be4906148ca565b8015611c315780601f10611c0657610100808354040283529160200191611c31565b820191906000526020600020905b815481529060010190602001808311611c1457829003601f168201915b5050505050905090565b6000611cdd611c486128ea565b848460046000611c566128ea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cd89190614a59565b6128f2565b6001905092915050565b6000611cfb611cf46128ea565b8484612abd565b506001905092915050565b60148060000154908060010154908060020154908060030154905084565b611d2c6128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611db9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db090614948565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611e1c6128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea090614948565b60405180910390fd5b80601d60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611ef2919061447b565b60405180910390a150565b611f056128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8990614948565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611ff56128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207990614948565b60405180910390fd5b81601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b602c5481565b60118060000154908060010154908060020154905083565b6121b56128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612242576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223990614948565b60405180910390fd5b601160000154831115801561225c57506011600101548211155b801561226d57506011600201548111155b6122ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a390614d8f565b60405180910390fd5b82600e6000018190555081600e6001018190555080600e60020181905550505050565b6122d76128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235b90614948565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123da9190614dc4565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612441573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124659190614dc4565b6040518363ffffffff1660e01b8152600401612482929190614df1565b602060405180830381865afa15801561249f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c39190614dc4565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612699578173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612545573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125699190614dc4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f49190614dc4565b6040518363ffffffff1660e01b8152600401612611929190614df1565b6020604051808303816000875af1158015612630573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126549190614dc4565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506126db565b80601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6127296128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ad90614948565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6128196128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289d90614948565b60405180910390fd5b82846018546128b59190614a8d565b6128bf9190614b16565b60248190555080826018546128d49190614a8d565b6128de9190614b16565b60258190555050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612962576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295990614e66565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c990614e66565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612ab0919061450c565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2590614ed2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9590614ed2565b60405180910390fd5b60008211612be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd890614f3e565b60405180910390fd5b612beb8484613182565b1561300957600960009054906101000a900460ff1615612d7e57600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612cec5743600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612ca357600080fd5b43600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d7d565b43600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612d3857600080fd5b43600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e1f5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61300857600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ec45750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612f0f57602054821115612f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0590614faa565b60405180910390fd5b5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612fa95750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130075760235482612fbb85611688565b612fc59190614997565b1115613006576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ffd90615016565b60405180910390fd5b5b5b5b600060019050600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130b05750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130ba57600090505b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561316c57601d60149054906101000a900460ff161580156131355750601d60159054906101000a900460ff165b1561316b57600061314530611688565b9050602454811061316957602554811061315f5760255490505b6131688161340d565b5b505b5b613178858585846136b0565b9150509392505050565b600061318c611b80565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156131fa57506131ca611b80565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156132505750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132a65750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132e0575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156133195750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561335157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156133ab5750601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156134055750601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b6001601d60146101000a81548160ff02191690831515021790555060006014600301546014600201546014600001546134469190614997565b6134509190614997565b141561345b57613692565b6000600260146003015460146002015460146000015461347b9190614997565b6134859190614997565b601460000154846134969190614a8d565b6134a09190614b16565b6134aa9190614b16565b9050600081836134ba9190614a59565b90506134c581613a13565b6000479050600060026014600301546014600201546014600001546134ea9190614997565b6134f49190614997565b601460000154846135059190614a8d565b61350f9190614b16565b6135199190614b16565b9050600084111561356a5761352e8482613c29565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482866040516135619392919061462d565b60405180910390a15b600084866135789190614a59565b111561368d576000479050600060146003015460146002015461359b9190614997565b601460020154836135ac9190614a8d565b6135b69190614b16565b9050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613620573d6000803e3d6000fd5b50601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015613689573d6000803e3d6000fd5b5050505b505050505b6000601d60146101000a81548160ff02191690831515021790555050565b6000602660009054906101000a900460ff16156138da576136d085611b0a565b806136e057506136df84611b0a565b5b15613720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161371790615082565b60405180910390fd5b602660019054906101000a900460ff166137a65761373e8585613cfc565b602660019054906101000a900460ff1615801561376157506137608585613182565b5b156137a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161379890615114565b60405180910390fd5b6138d9565b60006028541180156138015750600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561381357506138128585613182565b5b156138d857602b54602854436138299190614a59565b10156138d7576001600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550602c600081548092919061389a90615134565b91905055507f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e5846040516138ce9190614269565b60405180910390a15b5b5b5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546139299190614a59565b9250508190555060008261393d5783613949565b613948868686613eb2565b5b905080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461399a9190614997565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516139fe919061450c565b60405180910390a36001915050949350505050565b6000600267ffffffffffffffff811115613a3057613a2f61517d565b5b604051908082528060200260200182016040528015613a5e5781602001602082028036833780820191505090505b5090503081600081518110613a7657613a756151ac565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b419190614dc4565b81600181518110613b5557613b546151ac565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613bf39594939291906152d4565b600060405180830381600087803b158015613c0d57600080fd5b505af1158015613c21573d6000803e3d6000fd5b505050505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613cb29695949392919061534f565b60606040518083038185885af1158015613cd0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613cf591906153c5565b5050505050565b602660019054906101000a900460ff1615613d4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d439061548a565b60405180910390fd5b613d568282613182565b158015613db05750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15613eae576002602b5414613dd85761138843613dcd9190614997565b602881905550613de0565b436028819055505b6001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602660016101000a81548160ff021916908315150217905550426029819055506001601d60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1596001604051613ea5919061447b565b60405180910390a15b5050565b600080601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613f1857600e600101549050613f85565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415613f7b57600e600001549050613f84565b600e6002015490505b5b613f8f8585613182565b15613fb65760006027541480613fab5750600960ff1660275414155b15613fb557600080fd5b5b6000612710601460030154601460020154601460000154601460010154613fdd9190614997565b613fe79190614997565b613ff19190614997565b60146001015484876140039190614a8d565b61400d9190614a8d565b6140179190614b16565b6140219190614b16565b905060008161271084876140359190614a8d565b61403f9190614b16565b6140499190614a59565b90508160016000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546140bc9190614997565b9250508190555080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546141129190614997565b92505081905550601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051614198919061450c565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516141fd919061450c565b60405180910390a38181866142129190614a59565b61421c9190614a59565b93505050509392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061425382614228565b9050919050565b61426381614248565b82525050565b600060208201905061427e600083018461425a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156142be5780820151818401526020810190506142a3565b838111156142cd576000848401525b50505050565b6000601f19601f8301169050919050565b60006142ef82614284565b6142f9818561428f565b93506143098185602086016142a0565b614312816142d3565b840191505092915050565b6000602082019050818103600083015261433781846142e4565b905092915050565b6000819050919050565b600061436461435f61435a84614228565b61433f565b614228565b9050919050565b600061437682614349565b9050919050565b60006143888261436b565b9050919050565b6143988161437d565b82525050565b60006020820190506143b3600083018461438f565b92915050565b600080fd5b6143c781614248565b81146143d257600080fd5b50565b6000813590506143e4816143be565b92915050565b6000819050919050565b6143fd816143ea565b811461440857600080fd5b50565b60008135905061441a816143f4565b92915050565b60008060408385031215614437576144366143b9565b5b6000614445858286016143d5565b92505060206144568582860161440b565b9150509250929050565b60008115159050919050565b61447581614460565b82525050565b6000602082019050614490600083018461446c565b92915050565b600080600080608085870312156144b0576144af6143b9565b5b60006144be8782880161440b565b94505060206144cf8782880161440b565b93505060406144e08782880161440b565b92505060606144f18782880161440b565b91505092959194509250565b614506816143ea565b82525050565b600060208201905061452160008301846144fd565b92915050565b6000806000606084860312156145405761453f6143b9565b5b600061454e868287016143d5565b935050602061455f868287016143d5565b92505060406145708682870161440b565b9150509250925092565b60008060408385031215614591576145906143b9565b5b600061459f8582860161440b565b92505060206145b08582860161440b565b9150509250929050565b600060ff82169050919050565b6145d0816145ba565b82525050565b60006020820190506145eb60008301846145c7565b92915050565b60006145fc82614228565b9050919050565b61460c816145f1565b82525050565b60006020820190506146276000830184614603565b92915050565b600060608201905061464260008301866144fd565b61464f60208301856144fd565b61465c60408301846144fd565b949350505050565b60006020828403121561467a576146796143b9565b5b6000614688848285016143d5565b91505092915050565b61469a81614460565b81146146a557600080fd5b50565b6000813590506146b781614691565b92915050565b600080604083850312156146d4576146d36143b9565b5b60006146e2858286016143d5565b92505060206146f3858286016146a8565b9150509250929050565b600060208284031215614713576147126143b9565b5b60006147218482850161440b565b91505092915050565b600060808201905061473f60008301876144fd565b61474c60208301866144fd565b61475960408301856144fd565b61476660608301846144fd565b95945050505050565b600060208284031215614785576147846143b9565b5b6000614793848285016146a8565b91505092915050565b6147a5816145f1565b81146147b057600080fd5b50565b6000813590506147c28161479c565b92915050565b600080604083850312156147df576147de6143b9565b5b60006147ed858286016147b3565b92505060206147fe858286016147b3565b9150509250929050565b6000806040838503121561481f5761481e6143b9565b5b600061482d858286016143d5565b925050602061483e858286016143d5565b9150509250929050565b600080600060608486031215614861576148606143b9565b5b600061486f8682870161440b565b93505060206148808682870161440b565b92505060406148918682870161440b565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806148e257607f821691505b602082108114156148f6576148f561489b565b5b50919050565b7f43616c6c657220213d206f776e65722e00000000000000000000000000000000600082015250565b600061493260108361428f565b915061493d826148fc565b602082019050919050565b6000602082019050818103600083015261496181614925565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006149a2826143ea565b91506149ad836143ea565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156149e2576149e1614968565b5b828201905092915050565b7f21314b0000000000000000000000000000000000000000000000000000000000600082015250565b6000614a2360038361428f565b9150614a2e826149ed565b602082019050919050565b60006020820190508181036000830152614a5281614a16565b9050919050565b6000614a64826143ea565b9150614a6f836143ea565b925082821015614a8257614a81614968565b5b828203905092915050565b6000614a98826143ea565b9150614aa3836143ea565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614adc57614adb614968565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614b21826143ea565b9150614b2c836143ea565b925082614b3c57614b3b614ae7565b5b828204905092915050565b7f4d7573742062652061626f766520302e33337e25206f6620746f74616c20737560008201527f70706c792e000000000000000000000000000000000000000000000000000000602082015250565b6000614ba360258361428f565b9150614bae82614b47565b604082019050919050565b60006020820190508181036000830152614bd281614b96565b9050919050565b7f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660008201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000602082015250565b6000614c35603d8361428f565b9150614c4082614bd9565b604082019050919050565b60006020820190508181036000830152614c6481614c28565b9050919050565b7f4f6e65207765656b20636f6f6c646f776e2e0000000000000000000000000000600082015250565b6000614ca160128361428f565b9150614cac82614c6b565b602082019050919050565b60006020820190508181036000830152614cd081614c94565b9050919050565b7f4572726f722e0000000000000000000000000000000000000000000000000000600082015250565b6000614d0d60068361428f565b9150614d1882614cd7565b602082019050919050565b60006020820190508181036000830152614d3c81614d00565b9050919050565b7f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000600082015250565b6000614d7960178361428f565b9150614d8482614d43565b602082019050919050565b60006020820190508181036000830152614da881614d6c565b9050919050565b600081519050614dbe816143be565b92915050565b600060208284031215614dda57614dd96143b9565b5b6000614de884828501614daf565b91505092915050565b6000604082019050614e06600083018561425a565b614e13602083018461425a565b9392505050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b6000614e5060138361428f565b9150614e5b82614e1a565b602082019050919050565b60006020820190508181036000830152614e7f81614e43565b9050919050565b7f45524332303a205a65726f20616464726573732e000000000000000000000000600082015250565b6000614ebc60148361428f565b9150614ec782614e86565b602082019050919050565b60006020820190508181036000830152614eeb81614eaf565b9050919050565b7f4d757374203e302e000000000000000000000000000000000000000000000000600082015250565b6000614f2860088361428f565b9150614f3382614ef2565b602082019050919050565b60006020820190508181036000830152614f5781614f1b565b9050919050565b7f4578636565647320746865206d61785478416d6f756e742e0000000000000000600082015250565b6000614f9460188361428f565b9150614f9f82614f5e565b602082019050919050565b60006020820190508181036000830152614fc381614f87565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000615000601a8361428f565b915061500b82614fca565b602082019050919050565b6000602082019050818103600083015261502f81614ff3565b9050919050565b7f536e697065722072656a65637465642e00000000000000000000000000000000600082015250565b600061506c60108361428f565b915061507782615036565b602082019050919050565b6000602082019050818103600083015261509b8161505f565b9050919050565b7f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060008201527f74696d652e000000000000000000000000000000000000000000000000000000602082015250565b60006150fe60258361428f565b9150615109826150a2565b604082019050919050565b6000602082019050818103600083015261512d816150f1565b9050919050565b600061513f826143ea565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561517257615171614968565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b60006152006151fb6151f6846151db565b61433f565b6143ea565b9050919050565b615210816151e5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61524b81614248565b82525050565b600061525d8383615242565b60208301905092915050565b6000602082019050919050565b600061528182615216565b61528b8185615221565b935061529683615232565b8060005b838110156152c75781516152ae8882615251565b97506152b983615269565b92505060018101905061529a565b5085935050505092915050565b600060a0820190506152e960008301886144fd565b6152f66020830187615207565b81810360408301526153088186615276565b9050615317606083018561425a565b61532460808301846144fd565b9695505050505050565b60006153398261436b565b9050919050565b6153498161532e565b82525050565b600060c082019050615364600083018961425a565b61537160208301886144fd565b61537e6040830187615207565b61538b6060830186615207565b6153986080830185615340565b6153a560a08301846144fd565b979650505050505050565b6000815190506153bf816143f4565b92915050565b6000806000606084860312156153de576153dd6143b9565b5b60006153ec868287016153b0565b93505060206153fd868287016153b0565b925050604061540e868287016153b0565b9150509250925092565b7f4c697175696469747920616c726561647920616464656420616e64206d61726b60008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b600061547460238361428f565b915061547f82615418565b604082019050919050565b600060208201905081810360008301526154a381615467565b905091905056fea26469706673582212203e470ce07f3b1a48295e0a1056767c012469cfffcc7ccefc056ef9d5c55793bc64736f6c634300080b0033

Deployed Bytecode

0x60806040526004361061026b5760003560e01c8063715018a611610144578063bc1323e8116100b6578063e79d41601161007a578063e79d41601461097a578063e83e34b1146109a5578063e9dae5ed146109d2578063eafb5a3c146109fb578063eec2744e14610a24578063fb78680d14610a4d57610272565b8063bc1323e814610899578063c49b9a80146108c2578063ce8b79c9146108eb578063d3f6a15714610914578063dd62ed3e1461093d57610272565b80638c7321ad116101085780638c7321ad1461075e5780638da5cb5b1461079b57806395d89b41146107c6578063a457c2d7146107f1578063a9059cbb1461082e578063b5f7bfa21461086b57610272565b8063715018a61461068d57806380c581d1146106a457806381c6f11b146106cd578063893d20e8146106f657806389fd9bc11461072157610272565b80633aaa36e6116101dd5780634fb2e45d116101a15780634fb2e45d146105595780634fbee1931461058257806350a8e016146105bf578063571ac8b0146105ea578063590ffdce1461062757806370a082311461065057610272565b80633aaa36e6146104825780633da87806146104af5780633f3cf56c146104da578063452ed4f1146105035780634a74bb021461052e57610272565b806318160ddd1161022f57806318160ddd1461035e57806323b872dd1461038957806326003957146103c6578063313ce567146103ef57806337e294d51461041a578063395093511461044557610272565b806303fd2a451461027757806306fdde03146102a25780630758d924146102cd578063095ea7b3146102f85780631793fe4e1461033557610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c610a76565b6040516102999190614269565b60405180910390f35b3480156102ae57600080fd5b506102b7610a7c565b6040516102c4919061431d565b60405180910390f35b3480156102d957600080fd5b506102e2610b0e565b6040516102ef919061439e565b60405180910390f35b34801561030457600080fd5b5061031f600480360381019061031a9190614420565b610b34565b60405161032c919061447b565b60405180910390f35b34801561034157600080fd5b5061035c60048036038101906103579190614496565b610b52565b005b34801561036a57600080fd5b50610373610c7a565b604051610380919061450c565b60405180910390f35b34801561039557600080fd5b506103b060048036038101906103ab9190614527565b610c84565b6040516103bd919061447b565b60405180910390f35b3480156103d257600080fd5b506103ed60048036038101906103e8919061457a565b610dd1565b005b3480156103fb57600080fd5b50610404610ee1565b60405161041191906145d6565b60405180910390f35b34801561042657600080fd5b5061042f610eea565b60405161043c9190614612565b60405180910390f35b34801561045157600080fd5b5061046c60048036038101906104679190614420565b610f10565b604051610479919061447b565b60405180910390f35b34801561048e57600080fd5b50610497610fbc565b6040516104a69392919061462d565b60405180910390f35b3480156104bb57600080fd5b506104c4610fd4565b6040516104d19190614612565b60405180910390f35b3480156104e657600080fd5b5061050160048036038101906104fc919061457a565b610ffa565b005b34801561050f57600080fd5b5061051861110a565b6040516105259190614269565b60405180910390f35b34801561053a57600080fd5b50610543611130565b604051610550919061447b565b60405180910390f35b34801561056557600080fd5b50610580600480360381019061057b9190614664565b611143565b005b34801561058e57600080fd5b506105a960048036038101906105a49190614664565b6114fc565b6040516105b6919061447b565b60405180910390f35b3480156105cb57600080fd5b506105d4611552565b6040516105e1919061447b565b60405180910390f35b3480156105f657600080fd5b50610611600480360381019061060c9190614664565b611565565b60405161061e919061447b565b60405180910390f35b34801561063357600080fd5b5061064e600480360381019061064991906146bd565b611598565b005b34801561065c57600080fd5b5061067760048036038101906106729190614664565b611688565b604051610684919061450c565b60405180910390f35b34801561069957600080fd5b506106a26116d1565b005b3480156106b057600080fd5b506106cb60048036038101906106c691906146bd565b61184f565b005b3480156106d957600080fd5b506106f460048036038101906106ef91906146fd565b611a0f565b005b34801561070257600080fd5b5061070b611afb565b6040516107189190614269565b60405180910390f35b34801561072d57600080fd5b5061074860048036038101906107439190614664565b611b0a565b604051610755919061447b565b60405180910390f35b34801561076a57600080fd5b5061078560048036038101906107809190614664565b611b60565b604051610792919061447b565b60405180910390f35b3480156107a757600080fd5b506107b0611b80565b6040516107bd9190614269565b60405180910390f35b3480156107d257600080fd5b506107db611ba9565b6040516107e8919061431d565b60405180910390f35b3480156107fd57600080fd5b5061081860048036038101906108139190614420565b611c3b565b604051610825919061447b565b60405180910390f35b34801561083a57600080fd5b5061085560048036038101906108509190614420565b611ce7565b604051610862919061447b565b60405180910390f35b34801561087757600080fd5b50610880611d06565b604051610890949392919061472a565b60405180910390f35b3480156108a557600080fd5b506108c060048036038101906108bb9190614664565b611d24565b005b3480156108ce57600080fd5b506108e960048036038101906108e4919061476f565b611e14565b005b3480156108f757600080fd5b50610912600480360381019061090d9190614664565b611efd565b005b34801561092057600080fd5b5061093b600480360381019061093691906147c8565b611fed565b005b34801561094957600080fd5b50610964600480360381019061095f9190614808565b612108565b604051610971919061450c565b60405180910390f35b34801561098657600080fd5b5061098f61218f565b60405161099c919061450c565b60405180910390f35b3480156109b157600080fd5b506109ba612195565b6040516109c99392919061462d565b60405180910390f35b3480156109de57600080fd5b506109f960048036038101906109f49190614848565b6121ad565b005b348015610a0757600080fd5b50610a226004803603810190610a1d9190614664565b6122cf565b005b348015610a3057600080fd5b50610a4b6004803603810190610a4691906146bd565b612721565b005b348015610a5957600080fd5b50610a746004803603810190610a6f9190614496565b612811565b005b61dead81565b6060600c8054610a8b906148ca565b80601f0160208091040260200160405190810160405280929190818152602001828054610ab7906148ca565b8015610b045780601f10610ad957610100808354040283529160200191610b04565b820191906000526020600020905b815481529060010190602001808311610ae757829003601f168201915b5050505050905090565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610b48610b416128ea565b84846128f2565b6001905092915050565b610b5a6128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bde90614948565b60405180910390fd5b6103e882828587610bf89190614997565b610c029190614997565b610c0c9190614997565b14610c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4390614a39565b60405180910390fd5b8360146000018190555082601460020181905550806014600101819055508160146003018190555050505050565b6000601854905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610dbd5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610db59190614a59565b925050819055505b610dc8848484612abd565b90509392505050565b610dd96128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5d90614948565b60405180910390fd5b60008183601854610e779190614a8d565b610e819190614b16565b905061012c601854610e939190614b16565b811015610ed5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecc90614bb9565b60405180910390fd5b80602381905550505050565b60006009905090565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610fb2610f1d6128ea565b848460046000610f2b6128ea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fad9190614997565b6128f2565b6001905092915050565b600e8060000154908060010154908060020154905083565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110026128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461108f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108690614948565b60405180910390fd5b600081836018546110a09190614a8d565b6110aa9190614b16565b905061012c6018546110bc9190614b16565b8110156110fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f590614bb9565b60405180910390fd5b80602081905550505050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d60159054906101000a900460ff1681565b61114b6128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cf90614948565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123f90614c4b565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b090614c4b565b60405180910390fd5b6112e460008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611598565b6112ef816001611598565b61131860008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611688565b600460008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006113e460008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611688565b111561143f5761143d60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261143860008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611688565b612abd565b505b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b602660019054906101000a900460ff1681565b6000611591827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b34565b9050919050565b6115a06128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461162d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162490614948565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116d96128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d90614948565b60405180910390fd5b61179160008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611598565b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b6118576128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118db90614948565b60405180910390fd5b60001515811515141561194e576000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611a0b565b6000600354146119ab5762093a806003544261196a9190614a59565b116119aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a190614cb7565b60405180910390fd5b5b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550426003819055505b5050565b611a176128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9b90614948565b60405180910390fd5b600060275414611ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae090614d23565b60405180910390fd5b806027819055506002602b8190555050565b6000611b05611b80565b905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60076020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600d8054611bb8906148ca565b80601f0160208091040260200160405190810160405280929190818152602001828054611be4906148ca565b8015611c315780601f10611c0657610100808354040283529160200191611c31565b820191906000526020600020905b815481529060010190602001808311611c1457829003601f168201915b5050505050905090565b6000611cdd611c486128ea565b848460046000611c566128ea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cd89190614a59565b6128f2565b6001905092915050565b6000611cfb611cf46128ea565b8484612abd565b506001905092915050565b60148060000154908060010154908060020154908060030154905084565b611d2c6128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611db9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db090614948565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611e1c6128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea090614948565b60405180910390fd5b80601d60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611ef2919061447b565b60405180910390a150565b611f056128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8990614948565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611ff56128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207990614948565b60405180910390fd5b81601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b602c5481565b60118060000154908060010154908060020154905083565b6121b56128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612242576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223990614948565b60405180910390fd5b601160000154831115801561225c57506011600101548211155b801561226d57506011600201548111155b6122ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a390614d8f565b60405180910390fd5b82600e6000018190555081600e6001018190555080600e60020181905550505050565b6122d76128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235b90614948565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123da9190614dc4565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612441573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124659190614dc4565b6040518363ffffffff1660e01b8152600401612482929190614df1565b602060405180830381865afa15801561249f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c39190614dc4565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612699578173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612545573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125699190614dc4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f49190614dc4565b6040518363ffffffff1660e01b8152600401612611929190614df1565b6020604051808303816000875af1158015612630573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126549190614dc4565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506126db565b80601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6127296128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ad90614948565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6128196128ea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289d90614948565b60405180910390fd5b82846018546128b59190614a8d565b6128bf9190614b16565b60248190555080826018546128d49190614a8d565b6128de9190614b16565b60258190555050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612962576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295990614e66565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c990614e66565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612ab0919061450c565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2590614ed2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9590614ed2565b60405180910390fd5b60008211612be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd890614f3e565b60405180910390fd5b612beb8484613182565b1561300957600960009054906101000a900460ff1615612d7e57600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612cec5743600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612ca357600080fd5b43600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d7d565b43600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612d3857600080fd5b43600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e1f5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61300857600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ec45750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612f0f57602054821115612f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0590614faa565b60405180910390fd5b5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612fa95750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130075760235482612fbb85611688565b612fc59190614997565b1115613006576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ffd90615016565b60405180910390fd5b5b5b5b600060019050600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130b05750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130ba57600090505b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561316c57601d60149054906101000a900460ff161580156131355750601d60159054906101000a900460ff165b1561316b57600061314530611688565b9050602454811061316957602554811061315f5760255490505b6131688161340d565b5b505b5b613178858585846136b0565b9150509392505050565b600061318c611b80565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156131fa57506131ca611b80565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156132505750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132a65750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132e0575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156133195750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561335157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156133ab5750601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156134055750601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b6001601d60146101000a81548160ff02191690831515021790555060006014600301546014600201546014600001546134469190614997565b6134509190614997565b141561345b57613692565b6000600260146003015460146002015460146000015461347b9190614997565b6134859190614997565b601460000154846134969190614a8d565b6134a09190614b16565b6134aa9190614b16565b9050600081836134ba9190614a59565b90506134c581613a13565b6000479050600060026014600301546014600201546014600001546134ea9190614997565b6134f49190614997565b601460000154846135059190614a8d565b61350f9190614b16565b6135199190614b16565b9050600084111561356a5761352e8482613c29565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482866040516135619392919061462d565b60405180910390a15b600084866135789190614a59565b111561368d576000479050600060146003015460146002015461359b9190614997565b601460020154836135ac9190614a8d565b6135b69190614b16565b9050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613620573d6000803e3d6000fd5b50601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015613689573d6000803e3d6000fd5b5050505b505050505b6000601d60146101000a81548160ff02191690831515021790555050565b6000602660009054906101000a900460ff16156138da576136d085611b0a565b806136e057506136df84611b0a565b5b15613720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161371790615082565b60405180910390fd5b602660019054906101000a900460ff166137a65761373e8585613cfc565b602660019054906101000a900460ff1615801561376157506137608585613182565b5b156137a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161379890615114565b60405180910390fd5b6138d9565b60006028541180156138015750600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561381357506138128585613182565b5b156138d857602b54602854436138299190614a59565b10156138d7576001600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550602c600081548092919061389a90615134565b91905055507f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e5846040516138ce9190614269565b60405180910390a15b5b5b5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546139299190614a59565b9250508190555060008261393d5783613949565b613948868686613eb2565b5b905080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461399a9190614997565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516139fe919061450c565b60405180910390a36001915050949350505050565b6000600267ffffffffffffffff811115613a3057613a2f61517d565b5b604051908082528060200260200182016040528015613a5e5781602001602082028036833780820191505090505b5090503081600081518110613a7657613a756151ac565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b419190614dc4565b81600181518110613b5557613b546151ac565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613bf39594939291906152d4565b600060405180830381600087803b158015613c0d57600080fd5b505af1158015613c21573d6000803e3d6000fd5b505050505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613cb29695949392919061534f565b60606040518083038185885af1158015613cd0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613cf591906153c5565b5050505050565b602660019054906101000a900460ff1615613d4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d439061548a565b60405180910390fd5b613d568282613182565b158015613db05750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15613eae576002602b5414613dd85761138843613dcd9190614997565b602881905550613de0565b436028819055505b6001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602660016101000a81548160ff021916908315150217905550426029819055506001601d60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1596001604051613ea5919061447b565b60405180910390a15b5050565b600080601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613f1857600e600101549050613f85565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415613f7b57600e600001549050613f84565b600e6002015490505b5b613f8f8585613182565b15613fb65760006027541480613fab5750600960ff1660275414155b15613fb557600080fd5b5b6000612710601460030154601460020154601460000154601460010154613fdd9190614997565b613fe79190614997565b613ff19190614997565b60146001015484876140039190614a8d565b61400d9190614a8d565b6140179190614b16565b6140219190614b16565b905060008161271084876140359190614a8d565b61403f9190614b16565b6140499190614a59565b90508160016000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546140bc9190614997565b9250508190555080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546141129190614997565b92505081905550601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051614198919061450c565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516141fd919061450c565b60405180910390a38181866142129190614a59565b61421c9190614a59565b93505050509392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061425382614228565b9050919050565b61426381614248565b82525050565b600060208201905061427e600083018461425a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156142be5780820151818401526020810190506142a3565b838111156142cd576000848401525b50505050565b6000601f19601f8301169050919050565b60006142ef82614284565b6142f9818561428f565b93506143098185602086016142a0565b614312816142d3565b840191505092915050565b6000602082019050818103600083015261433781846142e4565b905092915050565b6000819050919050565b600061436461435f61435a84614228565b61433f565b614228565b9050919050565b600061437682614349565b9050919050565b60006143888261436b565b9050919050565b6143988161437d565b82525050565b60006020820190506143b3600083018461438f565b92915050565b600080fd5b6143c781614248565b81146143d257600080fd5b50565b6000813590506143e4816143be565b92915050565b6000819050919050565b6143fd816143ea565b811461440857600080fd5b50565b60008135905061441a816143f4565b92915050565b60008060408385031215614437576144366143b9565b5b6000614445858286016143d5565b92505060206144568582860161440b565b9150509250929050565b60008115159050919050565b61447581614460565b82525050565b6000602082019050614490600083018461446c565b92915050565b600080600080608085870312156144b0576144af6143b9565b5b60006144be8782880161440b565b94505060206144cf8782880161440b565b93505060406144e08782880161440b565b92505060606144f18782880161440b565b91505092959194509250565b614506816143ea565b82525050565b600060208201905061452160008301846144fd565b92915050565b6000806000606084860312156145405761453f6143b9565b5b600061454e868287016143d5565b935050602061455f868287016143d5565b92505060406145708682870161440b565b9150509250925092565b60008060408385031215614591576145906143b9565b5b600061459f8582860161440b565b92505060206145b08582860161440b565b9150509250929050565b600060ff82169050919050565b6145d0816145ba565b82525050565b60006020820190506145eb60008301846145c7565b92915050565b60006145fc82614228565b9050919050565b61460c816145f1565b82525050565b60006020820190506146276000830184614603565b92915050565b600060608201905061464260008301866144fd565b61464f60208301856144fd565b61465c60408301846144fd565b949350505050565b60006020828403121561467a576146796143b9565b5b6000614688848285016143d5565b91505092915050565b61469a81614460565b81146146a557600080fd5b50565b6000813590506146b781614691565b92915050565b600080604083850312156146d4576146d36143b9565b5b60006146e2858286016143d5565b92505060206146f3858286016146a8565b9150509250929050565b600060208284031215614713576147126143b9565b5b60006147218482850161440b565b91505092915050565b600060808201905061473f60008301876144fd565b61474c60208301866144fd565b61475960408301856144fd565b61476660608301846144fd565b95945050505050565b600060208284031215614785576147846143b9565b5b6000614793848285016146a8565b91505092915050565b6147a5816145f1565b81146147b057600080fd5b50565b6000813590506147c28161479c565b92915050565b600080604083850312156147df576147de6143b9565b5b60006147ed858286016147b3565b92505060206147fe858286016147b3565b9150509250929050565b6000806040838503121561481f5761481e6143b9565b5b600061482d858286016143d5565b925050602061483e858286016143d5565b9150509250929050565b600080600060608486031215614861576148606143b9565b5b600061486f8682870161440b565b93505060206148808682870161440b565b92505060406148918682870161440b565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806148e257607f821691505b602082108114156148f6576148f561489b565b5b50919050565b7f43616c6c657220213d206f776e65722e00000000000000000000000000000000600082015250565b600061493260108361428f565b915061493d826148fc565b602082019050919050565b6000602082019050818103600083015261496181614925565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006149a2826143ea565b91506149ad836143ea565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156149e2576149e1614968565b5b828201905092915050565b7f21314b0000000000000000000000000000000000000000000000000000000000600082015250565b6000614a2360038361428f565b9150614a2e826149ed565b602082019050919050565b60006020820190508181036000830152614a5281614a16565b9050919050565b6000614a64826143ea565b9150614a6f836143ea565b925082821015614a8257614a81614968565b5b828203905092915050565b6000614a98826143ea565b9150614aa3836143ea565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614adc57614adb614968565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614b21826143ea565b9150614b2c836143ea565b925082614b3c57614b3b614ae7565b5b828204905092915050565b7f4d7573742062652061626f766520302e33337e25206f6620746f74616c20737560008201527f70706c792e000000000000000000000000000000000000000000000000000000602082015250565b6000614ba360258361428f565b9150614bae82614b47565b604082019050919050565b60006020820190508181036000830152614bd281614b96565b9050919050565b7f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660008201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000602082015250565b6000614c35603d8361428f565b9150614c4082614bd9565b604082019050919050565b60006020820190508181036000830152614c6481614c28565b9050919050565b7f4f6e65207765656b20636f6f6c646f776e2e0000000000000000000000000000600082015250565b6000614ca160128361428f565b9150614cac82614c6b565b602082019050919050565b60006020820190508181036000830152614cd081614c94565b9050919050565b7f4572726f722e0000000000000000000000000000000000000000000000000000600082015250565b6000614d0d60068361428f565b9150614d1882614cd7565b602082019050919050565b60006020820190508181036000830152614d3c81614d00565b9050919050565b7f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000600082015250565b6000614d7960178361428f565b9150614d8482614d43565b602082019050919050565b60006020820190508181036000830152614da881614d6c565b9050919050565b600081519050614dbe816143be565b92915050565b600060208284031215614dda57614dd96143b9565b5b6000614de884828501614daf565b91505092915050565b6000604082019050614e06600083018561425a565b614e13602083018461425a565b9392505050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b6000614e5060138361428f565b9150614e5b82614e1a565b602082019050919050565b60006020820190508181036000830152614e7f81614e43565b9050919050565b7f45524332303a205a65726f20616464726573732e000000000000000000000000600082015250565b6000614ebc60148361428f565b9150614ec782614e86565b602082019050919050565b60006020820190508181036000830152614eeb81614eaf565b9050919050565b7f4d757374203e302e000000000000000000000000000000000000000000000000600082015250565b6000614f2860088361428f565b9150614f3382614ef2565b602082019050919050565b60006020820190508181036000830152614f5781614f1b565b9050919050565b7f4578636565647320746865206d61785478416d6f756e742e0000000000000000600082015250565b6000614f9460188361428f565b9150614f9f82614f5e565b602082019050919050565b60006020820190508181036000830152614fc381614f87565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000615000601a8361428f565b915061500b82614fca565b602082019050919050565b6000602082019050818103600083015261502f81614ff3565b9050919050565b7f536e697065722072656a65637465642e00000000000000000000000000000000600082015250565b600061506c60108361428f565b915061507782615036565b602082019050919050565b6000602082019050818103600083015261509b8161505f565b9050919050565b7f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060008201527f74696d652e000000000000000000000000000000000000000000000000000000602082015250565b60006150fe60258361428f565b9150615109826150a2565b604082019050919050565b6000602082019050818103600083015261512d816150f1565b9050919050565b600061513f826143ea565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561517257615171614968565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b60006152006151fb6151f6846151db565b61433f565b6143ea565b9050919050565b615210816151e5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61524b81614248565b82525050565b600061525d8383615242565b60208301905092915050565b6000602082019050919050565b600061528182615216565b61528b8185615221565b935061529683615232565b8060005b838110156152c75781516152ae8882615251565b97506152b983615269565b92505060018101905061529a565b5085935050505092915050565b600060a0820190506152e960008301886144fd565b6152f66020830187615207565b81810360408301526153088186615276565b9050615317606083018561425a565b61532460808301846144fd565b9695505050505050565b60006153398261436b565b9050919050565b6153498161532e565b82525050565b600060c082019050615364600083018961425a565b61537160208301886144fd565b61537e6040830187615207565b61538b6060830186615207565b6153986080830185615340565b6153a560a08301846144fd565b979650505050505050565b6000815190506153bf816143f4565b92915050565b6000806000606084860312156153de576153dd6143b9565b5b60006153ec868287016153b0565b93505060206153fd868287016153b0565b925050604061540e868287016153b0565b9150509250925092565b7f4c697175696469747920616c726561647920616464656420616e64206d61726b60008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b600061547460238361428f565b915061547f82615418565b604082019050919050565b600060208201905081810360008301526154a381615467565b905091905056fea26469706673582212203e470ce07f3b1a48295e0a1056767c012469cfffcc7ccefc056ef9d5c55793bc64736f6c634300080b0033

Deployed Bytecode Sourcemap

6245:20108:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8292:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13321:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8104:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13934:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17345:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13056:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14548:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18373:257;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13145:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8479:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14862:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7233:74;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;8378:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18113:252;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8146:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8608:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11842:652;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16245:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9170:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14420:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16378:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13634:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12502:195;;;;;;;;;;;;;:::i;:::-;;15827:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17002:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13407:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16862:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6710:68;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11755:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13231:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15085:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13759:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7729:117;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;16688:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19152:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16522:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18935:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13493:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9438:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7451:86;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;17708:397;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15318:501;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17196:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18638:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8292:73;8323:42;8292:73;:::o;13321:80::-;13369:13;13393:5;13386:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13321:80;:::o;8104:35::-;;;;;;;;;;;;;:::o;13934:161::-;14009:4;14026:39;14035:12;:10;:12::i;:::-;14049:7;14058:6;14026:8;:39::i;:::-;14083:4;14076:11;;13934:161;;;;:::o;17345:355::-;10047:12;:10;:12::i;:::-;10037:22;;:6;;;;;;;;;;:22;;;10029:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;17524:4:::1;17511:8;17501:9;17486:14;17475:10;:25;;;;:::i;:::-;:35;;;;:::i;:::-;:44;;;;:::i;:::-;17474:54;17464:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;17566:10;17547:6;:16;;:29;;;;17610:14;17587:6;:20;;:37;;;;17653:9;17635:6;:15;;:27;;;;17690:8;17673:6;:14;;:25;;;;17345:355:::0;;;;:::o;13056:83::-;13111:7;13129;;13122:14;;13056:83;:::o;14548:306::-;14648:4;14704:17;14669:11;:19;14681:6;14669:19;;;;;;;;;;;;;;;:31;14689:10;14669:31;;;;;;;;;;;;;;;;:52;14665:126;;14773:6;14738:11;:19;14750:6;14738:19;;;;;;;;;;;;;;;:31;14758:10;14738:31;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;14665:126;14810:36;14820:6;14828:9;14839:6;14810:9;:36::i;:::-;14803:43;;14548:306;;;;;:::o;18373:257::-;10047:12;:10;:12::i;:::-;10037:22;;:6;;;;;;;;;;:22;;;10029:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;18457:13:::1;18495:7;18484;18474;;:17;;;;:::i;:::-;18473:29;;;;:::i;:::-;18457:45;;18541:3;18531:7;;:13;;;;:::i;:::-;18521:5;:24;;18513:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;18615:5;18598:14;:22;;;;18446:184;18373:257:::0;;:::o;13145:80::-;13197:5;7995:1;13206:16;;13145:80;:::o;8479:88::-;;;;;;;;;;;;;:::o;14862:215::-;14950:4;14967:80;14976:12;:10;:12::i;:::-;14990:7;15036:10;14999:11;:25;15011:12;:10;:12::i;:::-;14999:25;;;;;;;;;;;;;;;:34;15025:7;14999:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;14967:8;:80::i;:::-;15065:4;15058:11;;14862:215;;;;:::o;7233:74::-;;;;;;;;;;;;;;;;;;;:::o;8378:94::-;;;;;;;;;;;;;:::o;18113:252::-;10047:12;:10;:12::i;:::-;10037:22;;:6;;;;;;;;;;:22;;;10029:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;18196:13:::1;18234:7;18223;18213;;:17;;;;:::i;:::-;18212:29;;;;:::i;:::-;18196:45;;18280:3;18270:7;;:13;;;;:::i;:::-;18260:5;:24;;18252:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;18352:5;18337:12;:20;;;;18185:180;18113:252:::0;;:::o;8146:21::-;;;;;;;;;;;;;:::o;8608:41::-;;;;;;;;;;;;;:::o;11842:652::-;10047:12;:10;:12::i;:::-;10037:22;;:6;;;;;;;;;;:22;;;10029:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;11943:1:::1;11923:22;;:8;:22;;;;11915:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;8323:42;12030:16;;:8;:16;;;;12022:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;12123:34;12143:6;::::0;::::1;;;;;;;;12151:5;12123:19;:34::i;:::-;12168:35;12188:8;12198:4;12168:19;:35::i;:::-;12258:17;12268:6;::::0;::::1;;;;;;;;12258:9;:17::i;:::-;12226:11;:19;12238:6:::0;::::1;;;;;;;;;;12226:19;;;;;;;;;;;;;;;:29;12246:8;12226:29;;;;;;;;;;;;;;;:49;;;;12309:1;12289:17;12299:6;::::0;::::1;;;;;;;;12289:9;:17::i;:::-;:21;12286:99;;;12327:46;12337:6;::::0;::::1;;;;;;;;12345:8;12355:17;12365:6;::::0;::::1;;;;;;;;12355:9;:17::i;:::-;12327:9;:46::i;:::-;;12286:99;12414:8;12405:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;12467:8;12438:38;;12459:6;::::0;::::1;;;;;;;;12438:38;;;;;;;;;;;;11842:652:::0;:::o;16245:125::-;16310:4;16334:19;:28;16354:7;16334:28;;;;;;;;;;;;;;;;;;;;;;;;;16327:35;;16245:125;;;:::o;9170:36::-;;;;;;;;;;;;;:::o;14420:120::-;14473:4;14497:35;14505:7;14514:17;14497:7;:35::i;:::-;14490:42;;14420:120;;;:::o;16378:134::-;10047:12;:10;:12::i;:::-;10037:22;;:6;;;;;;;;;;:22;;;10029:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;16497:7:::1;16466:19;:28;16486:7;16466:28;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;16378:134:::0;;:::o;13634:117::-;13700:7;13727;:16;13735:7;13727:16;;;;;;;;;;;;;;;;13720:23;;13634:117;;;:::o;12502:195::-;10047:12;:10;:12::i;:::-;10037:22;;:6;;;;;;;;;;:22;;;10029:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;12569:34:::1;12589:6;::::0;::::1;;;;;;;;12597:5;12569:19;:34::i;:::-;12631:1;12614:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;12686:1;12649:40;;12670:6;::::0;::::1;;;;;;;;12649:40;;;;;;;;;;;;12502:195::o:0;15827:410::-;10047:12;:10;:12::i;:::-;10037:22;;:6;;;;;;;;;;:22;;;10029:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;15919:5:::1;15908:16;;:7;:16;;;15904:326;;;15957:5;15941:7;:13;15949:4;15941:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;15904:326;;;16020:1;15999:17;;:22;15995:139;;16088:7;16068:17;;16050:15;:35;;;;:::i;:::-;:45;16042:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;15995:139;16164:4;16148:7;:13;16156:4;16148:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;16203:15;16183:17;:35;;;;15904:326;15827:410:::0;;:::o;17002:186::-;10047:12;:10;:12::i;:::-;10037:22;;:6;;;;;;;;;;:22;;;10029:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;17101:1:::1;17084:13;;:18;17075:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;17140:12;17124:13;:28;;;;17179:1;17163:13;:17;;;;17002:186:::0;:::o;13407:80::-;13459:7;13477;:5;:7::i;:::-;13470:14;;13407:80;:::o;16862:132::-;16931:4;16955:22;:31;16978:7;16955:31;;;;;;;;;;;;;;;;;;;;;;;;;16948:38;;16862:132;;;:::o;6710:68::-;;;;;;;;;;;;;;;;;;;;;;:::o;11755:79::-;11793:7;11820:6;;;;;;;;;;;11813:13;;11755:79;:::o;13231:84::-;13281:13;13305:7;13298:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13231:84;:::o;15085:225::-;15178:4;15195:85;15204:12;:10;:12::i;:::-;15218:7;15264:15;15227:11;:25;15239:12;:10;:12::i;:::-;15227:25;;;;;;;;;;;;;;;:34;15253:7;15227:34;;;;;;;;;;;;;;;;:52;;;;:::i;:::-;15195:8;:85::i;:::-;15298:4;15291:11;;15085:225;;;;:::o;13759:167::-;13837:4;13854:42;13864:12;:10;:12::i;:::-;13878:9;13889:6;13854:9;:42::i;:::-;;13914:4;13907:11;;13759:167;;;;:::o;7729:117::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;16688:166::-;10047:12;:10;:12::i;:::-;10037:22;;:6;;;;;;;;;;:22;;;10029:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;16841:5:::1;16786:35;:52;16822:15;16786:52;;;;;;;;;;;;;;;;:60;;;;;;;;;;;;;;;;;;16688:166:::0;:::o;19152:171::-;10047:12;:10;:12::i;:::-;10037:22;;:6;;;;;;;;;;:22;;;10029:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;19253:8:::1;19229:21;;:32;;;;;;;;;;;;;;;;;;19277:38;19306:8;19277:38;;;;;;:::i;:::-;;;;;;;;19152:171:::0;:::o;16522:158::-;10047:12;:10;:12::i;:::-;10037:22;;:6;;;;;;;;;;:22;;;10029:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;16668:4:::1;16613:35;:52;16649:15;16613:52;;;;;;;;;;;;;;;;:59;;;;;;;;;;;;;;;;;;16522:158:::0;:::o;18935:209::-;10047:12;:10;:12::i;:::-;10037:22;;:6;;;;;;;;;;:22;;;10029:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;19075:16:::1;19047:17;;:45;;;;;;;;;;;;;;;;;;19125:10;19103:11;;:33;;;;;;;;;;;;;;;;;;18935:209:::0;;:::o;13493:133::-;13577:7;13595:11;:19;13607:6;13595:19;;;;;;;;;;;;;;;:28;13615:7;13595:28;;;;;;;;;;;;;;;;13588:35;;13493:133;;;;:::o;9438:32::-;;;;:::o;7451:86::-;;;;;;;;;;;;;;;;;;;:::o;17708:397::-;10047:12;:10;:12::i;:::-;10037:22;;:6;;;;;;;;;;:22;;;10029:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;17823:7:::1;:14;;;17812:7;:25;;:73;;;;;17870:7;:15;;;17858:8;:27;;17812:73;:129;;;;;17922:7;:19;;;17906:12;:35;;17812:129;17804:182;;;;;;;;;;;;:::i;:::-;;;;;;;;;18012:7;17998:4;:11;;:21;;;;18046:8;18031:4;:12;;:23;;;;18085:12;18066:4;:16;;:31;;;;17708:397:::0;;;:::o;15318:501::-;10047:12;:10;:12::i;:::-;10037:22;;:6;;;;;;;;;;:22;;;10029:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;15389:29:::1;15440:9;15389:61;;15461:16;15498:10;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15480:47;;;15536:4;15543:10;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15480:81;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15461:100;;15596:1;15576:22;;:8;:22;;;15572:207;;;15642:10;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15624:50;;;15683:4;15690:10;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15624:84;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15615:6;;:93;;;;;;;;;;;;;;;;;;15572:207;;;15759:8;15750:6;;:17;;;;;;;;;;;;;;;;;;15572:207;15801:10;15789:9;;:22;;;;;;;;;;;;;;;;;;15378:441;;15318:501:::0;:::o;17196:141::-;10047:12;:10;:12::i;:::-;10037:22;;:6;;;;;;;;;;:22;;;10029:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;17322:7:::1;17288:22;:31;17311:7;17288:31;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;17196:141:::0;;:::o;18638:289::-;10047:12;:10;:12::i;:::-;10037:22;;:6;;;;;;;;;;:22;;;10029:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;18838:16:::1;18818;18808:7;;:26;;;;:::i;:::-;18807:47;;;;:::i;:::-;18791:13;:63;;;;18906:13;18889;18879:7;;:23;;;;:::i;:::-;18878:41;;;;:::i;:::-;18865:10;:54;;;;18638:289:::0;;;;:::o;2709:107::-;2754:15;2797:10;2782:26;;2709:107;:::o;14103:309::-;14215:1;14197:20;;:6;:20;;;;14189:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;14279:1;14260:21;;:7;:21;;;;14252:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;14349:6;14318:11;:19;14330:6;14318:19;;;;;;;;;;;;;;;:28;14338:7;14318:28;;;;;;;;;;;;;;;:37;;;;14388:7;14371:33;;14380:6;14371:33;;;14397:6;14371:33;;;;;;:::i;:::-;;;;;;;;14103:309;;;:::o;19744:1828::-;19823:4;19864:1;19848:18;;:4;:18;;;;19840:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;19924:1;19910:16;;:2;:16;;;;19902:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;19979:1;19970:6;:10;19962:31;;;;;;;;;;;;:::i;:::-;;;;;;;;;20007:20;20018:4;20024:2;20007:10;:20::i;:::-;20004:891;;;20048:15;;;;;;;;;;;20044:373;;;20088:7;:13;20096:4;20088:13;;;;;;;;;;;;;;;;;;;;;;;;;20084:318;;;20150:12;20133:9;:13;20143:2;20133:13;;;;;;;;;;;;;;;;:29;;20125:38;;;;;;20202:12;20186:9;:13;20196:2;20186:13;;;;;;;;;;;;;;;:28;;;;20084:318;;;20312:12;20293:9;:15;20303:4;20293:15;;;;;;;;;;;;;;;;:31;;20285:40;;;;;;20366:12;20348:9;:15;20358:4;20348:15;;;;;;;;;;;;;;;:30;;;;20084:318;20044:373;20436:35;:41;20472:4;20436:41;;;;;;;;;;;;;;;;;;;;;;;;;:84;;;;20481:35;:39;20517:2;20481:39;;;;;;;;;;;;;;;;;;;;;;;;;20436:84;20431:439;;20545:7;:13;20553:4;20545:13;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;;20562:7;:11;20570:2;20562:11;;;;;;;;;;;;;;;;;;;;;;;;;20545:28;20542:130;;;20611:12;;20601:6;:22;;20593:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;20542:130;8237:42;20693:20;;:2;:20;;;;:36;;;;;20718:7;:11;20726:2;20718:11;;;;;;;;;;;;;;;;;;;;;;;;;20717:12;20693:36;20690:163;;;20788:14;;20778:6;20762:13;20772:2;20762:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;20754:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;20690:163;20431:439;20004:891;20905:12;20920:4;20905:19;;20938;:25;20958:4;20938:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;20967:19;:23;20987:2;20967:23;;;;;;;;;;;;;;;;;;;;;;;;;20938:52;20935:98;;;21016:5;21006:15;;20935:98;21049:7;:11;21057:2;21049:11;;;;;;;;;;;;;;;;;;;;;;;;;21045:457;;;21082:16;;;;;;;;;;;21081:17;:59;;;;;21119:21;;;;;;;;;;;21081:59;21077:408;;;21175:28;21206:24;21224:4;21206:9;:24::i;:::-;21175:55;;21277:13;;21253:20;:37;21249:221;;21342:10;;21318:20;:34;21315:77;;21379:10;;21356:33;;21315:77;21414:36;21429:20;21414:14;:36::i;:::-;21249:221;21156:329;21077:408;21045:457;21520:44;21538:4;21544:2;21548:6;21556:7;21520:17;:44::i;:::-;21513:51;;;19744:1828;;;;;:::o;19331:405::-;19399:4;19431:7;:5;:7::i;:::-;19423:15;;:4;:15;;;;:45;;;;;19461:7;:5;:7::i;:::-;19455:13;;:2;:13;;;;19423:45;:84;;;;;19486:17;:21;19504:2;19486:21;;;;;;;;;;;;;;;;;;;;;;;;;19485:22;19423:84;:125;;;;;19525:17;:23;19543:4;19525:23;;;;;;;;;;;;;;;;;;;;;;;;;19524:24;19423:125;:152;;;;;8323:42;19565:10;;:2;:10;;;;19423:152;:185;;;;;19606:1;19592:16;;:2;:16;;;;19423:185;:223;;;;;19641:4;19625:21;;:4;:21;;;;19423:223;:265;;;;;19671:17;;;;;;;;;;;19663:25;;:4;:25;;;;19423:265;:305;;;;;19711:17;;;;;;;;;;;19705:23;;:2;:23;;;;19423:305;19416:312;;19331:405;;;;:::o;21580:1152::-;9930:4;9911:16;;:23;;;;;;;;;;;;;;;;;;21729:1:::1;21711:6;:14;;;21688:6;:20;;;21669:6;:16;;;:39;;;;:::i;:::-;:56;;;;:::i;:::-;:61;21665:87;;;21745:7;;21665:87;21762:17;21890:1;21870:6;:14;;;21847:6;:20;;;21828:6;:16;;;:39;;;;:::i;:::-;:56;;;;:::i;:::-;21807:6;:16;;;21784:20;:39;;;;:::i;:::-;21783:102;;;;:::i;:::-;21782:109;;;;:::i;:::-;21762:129;;21904:20;21950:9;21927:20;:32;;;;:::i;:::-;21904:55;;21970:30;21987:12;21970:16;:30::i;:::-;22013:22;22038:21;22013:46;;22070:24;22199:1;22179:6;:14;;;22156:6;:20;;;22137:6;:16;;;:39;;;;:::i;:::-;:56;;;;:::i;:::-;22116:6;:16;;;22099:14;:33;;;;:::i;:::-;22098:96;;;;:::i;:::-;22097:103;;;;:::i;:::-;22070:130;;22229:1;22217:9;:13;22213:161;;;22247:41;22260:9;22271:16;22247:12;:41::i;:::-;22308:54;22323:9;22334:16;22352:9;22308:54;;;;;;;;:::i;:::-;;;;;;;;22213:161;22423:1;22411:9;22388:20;:32;;;;:::i;:::-;:36;22384:341;;;22441:11;22455:21;22441:35;;22491:24;22577:6;:14;;;22554:6;:20;;;:37;;;;:::i;:::-;22529:6;:20;;;22520:6;:29;;;;:::i;:::-;22519:73;;;;:::i;:::-;22491:102;;22608:17;;;;;;;;;;;:26;;:47;22635:19;22608:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22670:11;;;;;;;;;;;:20;;:43;22691:21;22670:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22426:299;;22384:341;21654:1078;;;;9945:1;9976:5:::0;9957:16;;:24;;;;;;;;;;;;;;;;;;21580:1152;:::o;24139:1220::-;24239:4;24260:16;;;;;;;;;;;24256:858;;;24296:27;24318:4;24296:21;:27::i;:::-;:56;;;;24327:25;24349:2;24327:21;:25::i;:::-;24296:56;24292:123;;;24373:26;;;;;;;;;;:::i;:::-;;;;;;;;24292:123;24436:16;;;;;;;;;;;24431:672;;24473:28;24492:4;24498:2;24473:18;:28::i;:::-;24525:16;;;;;;;;;;;24524:17;:41;;;;;24545:20;24556:4;24562:2;24545:10;:20::i;:::-;24524:41;24520:137;;;24590:47;;;;;;;;;;:::i;:::-;;;;;;;;24520:137;24431:672;;;24716:1;24701:12;;:16;:55;;;;;24743:7;:13;24751:4;24743:13;;;;;;;;;;;;;;;;;;;;;;;;;24701:55;:101;;;;;24782:20;24793:4;24799:2;24782:10;:20::i;:::-;24701:101;24697:391;;;24879:13;;24864:12;;24849;:27;;;;:::i;:::-;:43;24845:224;;;24950:4;24921:22;:26;24944:2;24921:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;24981:13;;:16;;;;;;;;;:::i;:::-;;;;;;25029;25042:2;25029:16;;;;;;:::i;:::-;;;;;;;;24845:224;24697:391;24431:672;24256:858;25143:6;25126:7;:13;25134:4;25126:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;25160:22;25186:7;25185:48;;25227:6;25185:48;;;25197:27;25207:4;25213:2;25217:6;25197:9;:27::i;:::-;25185:48;25160:73;;25263:14;25248:7;:11;25256:2;25248:11;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;25310:2;25295:34;;25304:4;25295:34;;;25314:14;25295:34;;;;;;:::i;:::-;;;;;;;;25347:4;25340:11;;;24139:1220;;;;;;:::o;22740:417::-;22807:21;22845:1;22831:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22807:40;;22876:4;22858;22863:1;22858:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22902:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22892:4;22897:1;22892:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;22931:9;;;;;;;;;;;:60;;;23006:11;23032:1;23076:4;23103;23123:15;22931:218;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22796:361;22740:417;:::o;23165:345::-;23246:9;;;;;;;;;;;:25;;;23279:9;23312:4;23332:11;23358:1;23401;23444:17;;;;;;;;;;;23476:15;23246:256;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23165:345;;:::o;23518:613::-;23600:16;;;;;;;;;;;23599:17;23591:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;23672:20;23683:4;23689:2;23672:10;:20::i;:::-;23671:21;:37;;;;;23702:6;;;;;;;;;;;23696:12;;:2;:12;;;23671:37;23667:457;;;23746:1;23729:13;;:18;23725:161;;23798:4;23783:12;:19;;;;:::i;:::-;23768:12;:34;;;;23725:161;;;23858:12;23843;:27;;;;23725:161;23926:4;23900:17;:23;23918:4;23900:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;23964:4;23945:16;;:23;;;;;;;;;;;;;;;;;;23998:15;23983:12;:30;;;;24054:4;24030:21;;:28;;;;;;;;;;;;;;;;;;24078:34;24107:4;24078:34;;;;;;:::i;:::-;;;;;;;;23667:457;23518:613;;:::o;25367:983::-;25446:7;25466:18;25507:6;;;;;;;;;;;25501:12;;:2;:12;;;25497:160;;;25529:4;:12;;;25516:25;;25497:160;;;25572:6;;;;;;;;;;;25564:14;;:4;:14;;;25560:97;;;25594:4;:11;;;25581:24;;25560:97;;;25639:4;:16;;;25626:29;;25560:97;25497:160;25673:20;25684:4;25690:2;25673:10;:20::i;:::-;25669:150;;;25730:1;25713:13;;:18;:50;;;;7995:1;25735:28;;:13;;:28;;25713:50;25709:99;;;25784:8;;;25709:99;25669:150;25829:19;7899:5;25954:6;:14;;;25931:6;:20;;;25912:6;:16;;;25894:6;:15;;;:34;;;;:::i;:::-;:57;;;;:::i;:::-;:74;;;;:::i;:::-;25874:6;:15;;;25861:10;25852:6;:19;;;;:::i;:::-;:37;;;;:::i;:::-;25851:119;;;;:::i;:::-;:138;;;;:::i;:::-;25829:160;;26000:17;26063:11;7899:5;26030:10;26021:6;:19;;;;:::i;:::-;:38;;;;:::i;:::-;26020:54;;;;:::i;:::-;26000:74;;26115:11;26085:7;:26;26093:17;;;;;;;;;;;26085:26;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;26164:9;26137:7;:22;26153:4;26137:22;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;26205:17;;;;;;;;;;;26190:46;;26199:4;26190:46;;;26224:11;26190:46;;;;;;:::i;:::-;;;;;;;;26275:4;26252:40;;26261:4;26252:40;;;26282:9;26252:40;;;;;;:::i;:::-;;;;;;;;26331:11;26319:9;26310:6;:18;;;;:::i;:::-;:32;;;;:::i;:::-;26303:39;;;;;25367:983;;;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:99::-;645:6;679:5;673:12;663:22;;593:99;;;:::o;698:169::-;782:11;816:6;811:3;804:19;856:4;851:3;847:14;832:29;;698:169;;;;:::o;873:307::-;941:1;951:113;965:6;962:1;959:13;951:113;;;1050:1;1045:3;1041:11;1035:18;1031:1;1026:3;1022:11;1015:39;987:2;984:1;980:10;975:15;;951:113;;;1082:6;1079:1;1076:13;1073:101;;;1162:1;1153:6;1148:3;1144:16;1137:27;1073:101;922:258;873:307;;;:::o;1186:102::-;1227:6;1278:2;1274:7;1269:2;1262:5;1258:14;1254:28;1244:38;;1186:102;;;:::o;1294:364::-;1382:3;1410:39;1443:5;1410:39;:::i;:::-;1465:71;1529:6;1524:3;1465:71;:::i;:::-;1458:78;;1545:52;1590:6;1585:3;1578:4;1571:5;1567:16;1545:52;:::i;:::-;1622:29;1644:6;1622:29;:::i;:::-;1617:3;1613:39;1606:46;;1386:272;1294:364;;;;:::o;1664:313::-;1777:4;1815:2;1804:9;1800:18;1792:26;;1864:9;1858:4;1854:20;1850:1;1839:9;1835:17;1828:47;1892:78;1965:4;1956:6;1892:78;:::i;:::-;1884:86;;1664:313;;;;:::o;1983:60::-;2011:3;2032:5;2025:12;;1983:60;;;:::o;2049:142::-;2099:9;2132:53;2150:34;2159:24;2177:5;2159:24;:::i;:::-;2150:34;:::i;:::-;2132:53;:::i;:::-;2119:66;;2049:142;;;:::o;2197:126::-;2247:9;2280:37;2311:5;2280:37;:::i;:::-;2267:50;;2197:126;;;:::o;2329:152::-;2405:9;2438:37;2469:5;2438:37;:::i;:::-;2425:50;;2329:152;;;:::o;2487:183::-;2600:63;2657:5;2600:63;:::i;:::-;2595:3;2588:76;2487:183;;:::o;2676:274::-;2795:4;2833:2;2822:9;2818:18;2810:26;;2846:97;2940:1;2929:9;2925:17;2916:6;2846:97;:::i;:::-;2676:274;;;;:::o;3037:117::-;3146:1;3143;3136:12;3283:122;3356:24;3374:5;3356:24;:::i;:::-;3349:5;3346:35;3336:63;;3395:1;3392;3385:12;3336:63;3283:122;:::o;3411:139::-;3457:5;3495:6;3482:20;3473:29;;3511:33;3538:5;3511:33;:::i;:::-;3411:139;;;;:::o;3556:77::-;3593:7;3622:5;3611:16;;3556:77;;;:::o;3639:122::-;3712:24;3730:5;3712:24;:::i;:::-;3705:5;3702:35;3692:63;;3751:1;3748;3741:12;3692:63;3639:122;:::o;3767:139::-;3813:5;3851:6;3838:20;3829:29;;3867:33;3894:5;3867:33;:::i;:::-;3767:139;;;;:::o;3912:474::-;3980:6;3988;4037:2;4025:9;4016:7;4012:23;4008:32;4005:119;;;4043:79;;:::i;:::-;4005:119;4163:1;4188:53;4233:7;4224:6;4213:9;4209:22;4188:53;:::i;:::-;4178:63;;4134:117;4290:2;4316:53;4361:7;4352:6;4341:9;4337:22;4316:53;:::i;:::-;4306:63;;4261:118;3912:474;;;;;:::o;4392:90::-;4426:7;4469:5;4462:13;4455:21;4444:32;;4392:90;;;:::o;4488:109::-;4569:21;4584:5;4569:21;:::i;:::-;4564:3;4557:34;4488:109;;:::o;4603:210::-;4690:4;4728:2;4717:9;4713:18;4705:26;;4741:65;4803:1;4792:9;4788:17;4779:6;4741:65;:::i;:::-;4603:210;;;;:::o;4819:765::-;4905:6;4913;4921;4929;4978:3;4966:9;4957:7;4953:23;4949:33;4946:120;;;4985:79;;:::i;:::-;4946:120;5105:1;5130:53;5175:7;5166:6;5155:9;5151:22;5130:53;:::i;:::-;5120:63;;5076:117;5232:2;5258:53;5303:7;5294:6;5283:9;5279:22;5258:53;:::i;:::-;5248:63;;5203:118;5360:2;5386:53;5431:7;5422:6;5411:9;5407:22;5386:53;:::i;:::-;5376:63;;5331:118;5488:2;5514:53;5559:7;5550:6;5539:9;5535:22;5514:53;:::i;:::-;5504:63;;5459:118;4819:765;;;;;;;:::o;5590:118::-;5677:24;5695:5;5677:24;:::i;:::-;5672:3;5665:37;5590:118;;:::o;5714:222::-;5807:4;5845:2;5834:9;5830:18;5822:26;;5858:71;5926:1;5915:9;5911:17;5902:6;5858:71;:::i;:::-;5714:222;;;;:::o;5942:619::-;6019:6;6027;6035;6084:2;6072:9;6063:7;6059:23;6055:32;6052:119;;;6090:79;;:::i;:::-;6052:119;6210:1;6235:53;6280:7;6271:6;6260:9;6256:22;6235:53;:::i;:::-;6225:63;;6181:117;6337:2;6363:53;6408:7;6399:6;6388:9;6384:22;6363:53;:::i;:::-;6353:63;;6308:118;6465:2;6491:53;6536:7;6527:6;6516:9;6512:22;6491:53;:::i;:::-;6481:63;;6436:118;5942:619;;;;;:::o;6567:474::-;6635:6;6643;6692:2;6680:9;6671:7;6667:23;6663:32;6660:119;;;6698:79;;:::i;:::-;6660:119;6818:1;6843:53;6888:7;6879:6;6868:9;6864:22;6843:53;:::i;:::-;6833:63;;6789:117;6945:2;6971:53;7016:7;7007:6;6996:9;6992:22;6971:53;:::i;:::-;6961:63;;6916:118;6567:474;;;;;:::o;7047:86::-;7082:7;7122:4;7115:5;7111:16;7100:27;;7047:86;;;:::o;7139:112::-;7222:22;7238:5;7222:22;:::i;:::-;7217:3;7210:35;7139:112;;:::o;7257:214::-;7346:4;7384:2;7373:9;7369:18;7361:26;;7397:67;7461:1;7450:9;7446:17;7437:6;7397:67;:::i;:::-;7257:214;;;;:::o;7477:104::-;7522:7;7551:24;7569:5;7551:24;:::i;:::-;7540:35;;7477:104;;;:::o;7587:142::-;7690:32;7716:5;7690:32;:::i;:::-;7685:3;7678:45;7587:142;;:::o;7735:254::-;7844:4;7882:2;7871:9;7867:18;7859:26;;7895:87;7979:1;7968:9;7964:17;7955:6;7895:87;:::i;:::-;7735:254;;;;:::o;7995:442::-;8144:4;8182:2;8171:9;8167:18;8159:26;;8195:71;8263:1;8252:9;8248:17;8239:6;8195:71;:::i;:::-;8276:72;8344:2;8333:9;8329:18;8320:6;8276:72;:::i;:::-;8358;8426:2;8415:9;8411:18;8402:6;8358:72;:::i;:::-;7995:442;;;;;;:::o;8443:329::-;8502:6;8551:2;8539:9;8530:7;8526:23;8522:32;8519:119;;;8557:79;;:::i;:::-;8519:119;8677:1;8702:53;8747:7;8738:6;8727:9;8723:22;8702:53;:::i;:::-;8692:63;;8648:117;8443:329;;;;:::o;8778:116::-;8848:21;8863:5;8848:21;:::i;:::-;8841:5;8838:32;8828:60;;8884:1;8881;8874:12;8828:60;8778:116;:::o;8900:133::-;8943:5;8981:6;8968:20;8959:29;;8997:30;9021:5;8997:30;:::i;:::-;8900:133;;;;:::o;9039:468::-;9104:6;9112;9161:2;9149:9;9140:7;9136:23;9132:32;9129:119;;;9167:79;;:::i;:::-;9129:119;9287:1;9312:53;9357:7;9348:6;9337:9;9333:22;9312:53;:::i;:::-;9302:63;;9258:117;9414:2;9440:50;9482:7;9473:6;9462:9;9458:22;9440:50;:::i;:::-;9430:60;;9385:115;9039:468;;;;;:::o;9513:329::-;9572:6;9621:2;9609:9;9600:7;9596:23;9592:32;9589:119;;;9627:79;;:::i;:::-;9589:119;9747:1;9772:53;9817:7;9808:6;9797:9;9793:22;9772:53;:::i;:::-;9762:63;;9718:117;9513:329;;;;:::o;9848:553::-;10025:4;10063:3;10052:9;10048:19;10040:27;;10077:71;10145:1;10134:9;10130:17;10121:6;10077:71;:::i;:::-;10158:72;10226:2;10215:9;10211:18;10202:6;10158:72;:::i;:::-;10240;10308:2;10297:9;10293:18;10284:6;10240:72;:::i;:::-;10322;10390:2;10379:9;10375:18;10366:6;10322:72;:::i;:::-;9848:553;;;;;;;:::o;10407:323::-;10463:6;10512:2;10500:9;10491:7;10487:23;10483:32;10480:119;;;10518:79;;:::i;:::-;10480:119;10638:1;10663:50;10705:7;10696:6;10685:9;10681:22;10663:50;:::i;:::-;10653:60;;10609:114;10407:323;;;;:::o;10736:138::-;10817:32;10843:5;10817:32;:::i;:::-;10810:5;10807:43;10797:71;;10864:1;10861;10854:12;10797:71;10736:138;:::o;10880:155::-;10934:5;10972:6;10959:20;10950:29;;10988:41;11023:5;10988:41;:::i;:::-;10880:155;;;;:::o;11041:506::-;11125:6;11133;11182:2;11170:9;11161:7;11157:23;11153:32;11150:119;;;11188:79;;:::i;:::-;11150:119;11308:1;11333:61;11386:7;11377:6;11366:9;11362:22;11333:61;:::i;:::-;11323:71;;11279:125;11443:2;11469:61;11522:7;11513:6;11502:9;11498:22;11469:61;:::i;:::-;11459:71;;11414:126;11041:506;;;;;:::o;11553:474::-;11621:6;11629;11678:2;11666:9;11657:7;11653:23;11649:32;11646:119;;;11684:79;;:::i;:::-;11646:119;11804:1;11829:53;11874:7;11865:6;11854:9;11850:22;11829:53;:::i;:::-;11819:63;;11775:117;11931:2;11957:53;12002:7;11993:6;11982:9;11978:22;11957:53;:::i;:::-;11947:63;;11902:118;11553:474;;;;;:::o;12033:619::-;12110:6;12118;12126;12175:2;12163:9;12154:7;12150:23;12146:32;12143:119;;;12181:79;;:::i;:::-;12143:119;12301:1;12326:53;12371:7;12362:6;12351:9;12347:22;12326:53;:::i;:::-;12316:63;;12272:117;12428:2;12454:53;12499:7;12490:6;12479:9;12475:22;12454:53;:::i;:::-;12444:63;;12399:118;12556:2;12582:53;12627:7;12618:6;12607:9;12603:22;12582:53;:::i;:::-;12572:63;;12527:118;12033:619;;;;;:::o;12658:180::-;12706:77;12703:1;12696:88;12803:4;12800:1;12793:15;12827:4;12824:1;12817:15;12844:320;12888:6;12925:1;12919:4;12915:12;12905:22;;12972:1;12966:4;12962:12;12993:18;12983:81;;13049:4;13041:6;13037:17;13027:27;;12983:81;13111:2;13103:6;13100:14;13080:18;13077:38;13074:84;;;13130:18;;:::i;:::-;13074:84;12895:269;12844:320;;;:::o;13170:166::-;13310:18;13306:1;13298:6;13294:14;13287:42;13170:166;:::o;13342:366::-;13484:3;13505:67;13569:2;13564:3;13505:67;:::i;:::-;13498:74;;13581:93;13670:3;13581:93;:::i;:::-;13699:2;13694:3;13690:12;13683:19;;13342:366;;;:::o;13714:419::-;13880:4;13918:2;13907:9;13903:18;13895:26;;13967:9;13961:4;13957:20;13953:1;13942:9;13938:17;13931:47;13995:131;14121:4;13995:131;:::i;:::-;13987:139;;13714:419;;;:::o;14139:180::-;14187:77;14184:1;14177:88;14284:4;14281:1;14274:15;14308:4;14305:1;14298:15;14325:305;14365:3;14384:20;14402:1;14384:20;:::i;:::-;14379:25;;14418:20;14436:1;14418:20;:::i;:::-;14413:25;;14572:1;14504:66;14500:74;14497:1;14494:81;14491:107;;;14578:18;;:::i;:::-;14491:107;14622:1;14619;14615:9;14608:16;;14325:305;;;;:::o;14636:153::-;14776:5;14772:1;14764:6;14760:14;14753:29;14636:153;:::o;14795:365::-;14937:3;14958:66;15022:1;15017:3;14958:66;:::i;:::-;14951:73;;15033:93;15122:3;15033:93;:::i;:::-;15151:2;15146:3;15142:12;15135:19;;14795:365;;;:::o;15166:419::-;15332:4;15370:2;15359:9;15355:18;15347:26;;15419:9;15413:4;15409:20;15405:1;15394:9;15390:17;15383:47;15447:131;15573:4;15447:131;:::i;:::-;15439:139;;15166:419;;;:::o;15591:191::-;15631:4;15651:20;15669:1;15651:20;:::i;:::-;15646:25;;15685:20;15703:1;15685:20;:::i;:::-;15680:25;;15724:1;15721;15718:8;15715:34;;;15729:18;;:::i;:::-;15715:34;15774:1;15771;15767:9;15759:17;;15591:191;;;;:::o;15788:348::-;15828:7;15851:20;15869:1;15851:20;:::i;:::-;15846:25;;15885:20;15903:1;15885:20;:::i;:::-;15880:25;;16073:1;16005:66;16001:74;15998:1;15995:81;15990:1;15983:9;15976:17;15972:105;15969:131;;;16080:18;;:::i;:::-;15969:131;16128:1;16125;16121:9;16110:20;;15788:348;;;;:::o;16142:180::-;16190:77;16187:1;16180:88;16287:4;16284:1;16277:15;16311:4;16308:1;16301:15;16328:185;16368:1;16385:20;16403:1;16385:20;:::i;:::-;16380:25;;16419:20;16437:1;16419:20;:::i;:::-;16414:25;;16458:1;16448:35;;16463:18;;:::i;:::-;16448:35;16505:1;16502;16498:9;16493:14;;16328:185;;;;:::o;16519:224::-;16659:34;16655:1;16647:6;16643:14;16636:58;16728:7;16723:2;16715:6;16711:15;16704:32;16519:224;:::o;16749:366::-;16891:3;16912:67;16976:2;16971:3;16912:67;:::i;:::-;16905:74;;16988:93;17077:3;16988:93;:::i;:::-;17106:2;17101:3;17097:12;17090:19;;16749:366;;;:::o;17121:419::-;17287:4;17325:2;17314:9;17310:18;17302:26;;17374:9;17368:4;17364:20;17360:1;17349:9;17345:17;17338:47;17402:131;17528:4;17402:131;:::i;:::-;17394:139;;17121:419;;;:::o;17546:248::-;17686:34;17682:1;17674:6;17670:14;17663:58;17755:31;17750:2;17742:6;17738:15;17731:56;17546:248;:::o;17800:366::-;17942:3;17963:67;18027:2;18022:3;17963:67;:::i;:::-;17956:74;;18039:93;18128:3;18039:93;:::i;:::-;18157:2;18152:3;18148:12;18141:19;;17800:366;;;:::o;18172:419::-;18338:4;18376:2;18365:9;18361:18;18353:26;;18425:9;18419:4;18415:20;18411:1;18400:9;18396:17;18389:47;18453:131;18579:4;18453:131;:::i;:::-;18445:139;;18172:419;;;:::o;18597:168::-;18737:20;18733:1;18725:6;18721:14;18714:44;18597:168;:::o;18771:366::-;18913:3;18934:67;18998:2;18993:3;18934:67;:::i;:::-;18927:74;;19010:93;19099:3;19010:93;:::i;:::-;19128:2;19123:3;19119:12;19112:19;;18771:366;;;:::o;19143:419::-;19309:4;19347:2;19336:9;19332:18;19324:26;;19396:9;19390:4;19386:20;19382:1;19371:9;19367:17;19360:47;19424:131;19550:4;19424:131;:::i;:::-;19416:139;;19143:419;;;:::o;19568:156::-;19708:8;19704:1;19696:6;19692:14;19685:32;19568:156;:::o;19730:365::-;19872:3;19893:66;19957:1;19952:3;19893:66;:::i;:::-;19886:73;;19968:93;20057:3;19968:93;:::i;:::-;20086:2;20081:3;20077:12;20070:19;;19730:365;;;:::o;20101:419::-;20267:4;20305:2;20294:9;20290:18;20282:26;;20354:9;20348:4;20344:20;20340:1;20329:9;20325:17;20318:47;20382:131;20508:4;20382:131;:::i;:::-;20374:139;;20101:419;;;:::o;20526:173::-;20666:25;20662:1;20654:6;20650:14;20643:49;20526:173;:::o;20705:366::-;20847:3;20868:67;20932:2;20927:3;20868:67;:::i;:::-;20861:74;;20944:93;21033:3;20944:93;:::i;:::-;21062:2;21057:3;21053:12;21046:19;;20705:366;;;:::o;21077:419::-;21243:4;21281:2;21270:9;21266:18;21258:26;;21330:9;21324:4;21320:20;21316:1;21305:9;21301:17;21294:47;21358:131;21484:4;21358:131;:::i;:::-;21350:139;;21077:419;;;:::o;21502:143::-;21559:5;21590:6;21584:13;21575:22;;21606:33;21633:5;21606:33;:::i;:::-;21502:143;;;;:::o;21651:351::-;21721:6;21770:2;21758:9;21749:7;21745:23;21741:32;21738:119;;;21776:79;;:::i;:::-;21738:119;21896:1;21921:64;21977:7;21968:6;21957:9;21953:22;21921:64;:::i;:::-;21911:74;;21867:128;21651:351;;;;:::o;22008:332::-;22129:4;22167:2;22156:9;22152:18;22144:26;;22180:71;22248:1;22237:9;22233:17;22224:6;22180:71;:::i;:::-;22261:72;22329:2;22318:9;22314:18;22305:6;22261:72;:::i;:::-;22008:332;;;;;:::o;22346:169::-;22486:21;22482:1;22474:6;22470:14;22463:45;22346:169;:::o;22521:366::-;22663:3;22684:67;22748:2;22743:3;22684:67;:::i;:::-;22677:74;;22760:93;22849:3;22760:93;:::i;:::-;22878:2;22873:3;22869:12;22862:19;;22521:366;;;:::o;22893:419::-;23059:4;23097:2;23086:9;23082:18;23074:26;;23146:9;23140:4;23136:20;23132:1;23121:9;23117:17;23110:47;23174:131;23300:4;23174:131;:::i;:::-;23166:139;;22893:419;;;:::o;23318:170::-;23458:22;23454:1;23446:6;23442:14;23435:46;23318:170;:::o;23494:366::-;23636:3;23657:67;23721:2;23716:3;23657:67;:::i;:::-;23650:74;;23733:93;23822:3;23733:93;:::i;:::-;23851:2;23846:3;23842:12;23835:19;;23494:366;;;:::o;23866:419::-;24032:4;24070:2;24059:9;24055:18;24047:26;;24119:9;24113:4;24109:20;24105:1;24094:9;24090:17;24083:47;24147:131;24273:4;24147:131;:::i;:::-;24139:139;;23866:419;;;:::o;24291:158::-;24431:10;24427:1;24419:6;24415:14;24408:34;24291:158;:::o;24455:365::-;24597:3;24618:66;24682:1;24677:3;24618:66;:::i;:::-;24611:73;;24693:93;24782:3;24693:93;:::i;:::-;24811:2;24806:3;24802:12;24795:19;;24455:365;;;:::o;24826:419::-;24992:4;25030:2;25019:9;25015:18;25007:26;;25079:9;25073:4;25069:20;25065:1;25054:9;25050:17;25043:47;25107:131;25233:4;25107:131;:::i;:::-;25099:139;;24826:419;;;:::o;25251:174::-;25391:26;25387:1;25379:6;25375:14;25368:50;25251:174;:::o;25431:366::-;25573:3;25594:67;25658:2;25653:3;25594:67;:::i;:::-;25587:74;;25670:93;25759:3;25670:93;:::i;:::-;25788:2;25783:3;25779:12;25772:19;;25431:366;;;:::o;25803:419::-;25969:4;26007:2;25996:9;25992:18;25984:26;;26056:9;26050:4;26046:20;26042:1;26031:9;26027:17;26020:47;26084:131;26210:4;26084:131;:::i;:::-;26076:139;;25803:419;;;:::o;26228:176::-;26368:28;26364:1;26356:6;26352:14;26345:52;26228:176;:::o;26410:366::-;26552:3;26573:67;26637:2;26632:3;26573:67;:::i;:::-;26566:74;;26649:93;26738:3;26649:93;:::i;:::-;26767:2;26762:3;26758:12;26751:19;;26410:366;;;:::o;26782:419::-;26948:4;26986:2;26975:9;26971:18;26963:26;;27035:9;27029:4;27025:20;27021:1;27010:9;27006:17;26999:47;27063:131;27189:4;27063:131;:::i;:::-;27055:139;;26782:419;;;:::o;27207:166::-;27347:18;27343:1;27335:6;27331:14;27324:42;27207:166;:::o;27379:366::-;27521:3;27542:67;27606:2;27601:3;27542:67;:::i;:::-;27535:74;;27618:93;27707:3;27618:93;:::i;:::-;27736:2;27731:3;27727:12;27720:19;;27379:366;;;:::o;27751:419::-;27917:4;27955:2;27944:9;27940:18;27932:26;;28004:9;27998:4;27994:20;27990:1;27979:9;27975:17;27968:47;28032:131;28158:4;28032:131;:::i;:::-;28024:139;;27751:419;;;:::o;28176:224::-;28316:34;28312:1;28304:6;28300:14;28293:58;28385:7;28380:2;28372:6;28368:15;28361:32;28176:224;:::o;28406:366::-;28548:3;28569:67;28633:2;28628:3;28569:67;:::i;:::-;28562:74;;28645:93;28734:3;28645:93;:::i;:::-;28763:2;28758:3;28754:12;28747:19;;28406:366;;;:::o;28778:419::-;28944:4;28982:2;28971:9;28967:18;28959:26;;29031:9;29025:4;29021:20;29017:1;29006:9;29002:17;28995:47;29059:131;29185:4;29059:131;:::i;:::-;29051:139;;28778:419;;;:::o;29203:233::-;29242:3;29265:24;29283:5;29265:24;:::i;:::-;29256:33;;29311:66;29304:5;29301:77;29298:103;;;29381:18;;:::i;:::-;29298:103;29428:1;29421:5;29417:13;29410:20;;29203:233;;;:::o;29442:180::-;29490:77;29487:1;29480:88;29587:4;29584:1;29577:15;29611:4;29608:1;29601:15;29628:180;29676:77;29673:1;29666:88;29773:4;29770:1;29763:15;29797:4;29794:1;29787:15;29814:85;29859:7;29888:5;29877:16;;29814:85;;;:::o;29905:158::-;29963:9;29996:61;30014:42;30023:32;30049:5;30023:32;:::i;:::-;30014:42;:::i;:::-;29996:61;:::i;:::-;29983:74;;29905:158;;;:::o;30069:147::-;30164:45;30203:5;30164:45;:::i;:::-;30159:3;30152:58;30069:147;;:::o;30222:114::-;30289:6;30323:5;30317:12;30307:22;;30222:114;;;:::o;30342:184::-;30441:11;30475:6;30470:3;30463:19;30515:4;30510:3;30506:14;30491:29;;30342:184;;;;:::o;30532:132::-;30599:4;30622:3;30614:11;;30652:4;30647:3;30643:14;30635:22;;30532:132;;;:::o;30670:108::-;30747:24;30765:5;30747:24;:::i;:::-;30742:3;30735:37;30670:108;;:::o;30784:179::-;30853:10;30874:46;30916:3;30908:6;30874:46;:::i;:::-;30952:4;30947:3;30943:14;30929:28;;30784:179;;;;:::o;30969:113::-;31039:4;31071;31066:3;31062:14;31054:22;;30969:113;;;:::o;31118:732::-;31237:3;31266:54;31314:5;31266:54;:::i;:::-;31336:86;31415:6;31410:3;31336:86;:::i;:::-;31329:93;;31446:56;31496:5;31446:56;:::i;:::-;31525:7;31556:1;31541:284;31566:6;31563:1;31560:13;31541:284;;;31642:6;31636:13;31669:63;31728:3;31713:13;31669:63;:::i;:::-;31662:70;;31755:60;31808:6;31755:60;:::i;:::-;31745:70;;31601:224;31588:1;31585;31581:9;31576:14;;31541:284;;;31545:14;31841:3;31834:10;;31242:608;;;31118:732;;;;:::o;31856:831::-;32119:4;32157:3;32146:9;32142:19;32134:27;;32171:71;32239:1;32228:9;32224:17;32215:6;32171:71;:::i;:::-;32252:80;32328:2;32317:9;32313:18;32304:6;32252:80;:::i;:::-;32379:9;32373:4;32369:20;32364:2;32353:9;32349:18;32342:48;32407:108;32510:4;32501:6;32407:108;:::i;:::-;32399:116;;32525:72;32593:2;32582:9;32578:18;32569:6;32525:72;:::i;:::-;32607:73;32675:3;32664:9;32660:19;32651:6;32607:73;:::i;:::-;31856:831;;;;;;;;:::o;32693:134::-;32751:9;32784:37;32815:5;32784:37;:::i;:::-;32771:50;;32693:134;;;:::o;32833:147::-;32928:45;32967:5;32928:45;:::i;:::-;32923:3;32916:58;32833:147;;:::o;32986:823::-;33243:4;33281:3;33270:9;33266:19;33258:27;;33295:71;33363:1;33352:9;33348:17;33339:6;33295:71;:::i;:::-;33376:72;33444:2;33433:9;33429:18;33420:6;33376:72;:::i;:::-;33458:80;33534:2;33523:9;33519:18;33510:6;33458:80;:::i;:::-;33548;33624:2;33613:9;33609:18;33600:6;33548:80;:::i;:::-;33638:81;33714:3;33703:9;33699:19;33690:6;33638:81;:::i;:::-;33729:73;33797:3;33786:9;33782:19;33773:6;33729:73;:::i;:::-;32986:823;;;;;;;;;:::o;33815:143::-;33872:5;33903:6;33897:13;33888:22;;33919:33;33946:5;33919:33;:::i;:::-;33815:143;;;;:::o;33964:663::-;34052:6;34060;34068;34117:2;34105:9;34096:7;34092:23;34088:32;34085:119;;;34123:79;;:::i;:::-;34085:119;34243:1;34268:64;34324:7;34315:6;34304:9;34300:22;34268:64;:::i;:::-;34258:74;;34214:128;34381:2;34407:64;34463:7;34454:6;34443:9;34439:22;34407:64;:::i;:::-;34397:74;;34352:129;34520:2;34546:64;34602:7;34593:6;34582:9;34578:22;34546:64;:::i;:::-;34536:74;;34491:129;33964:663;;;;;:::o;34633:222::-;34773:34;34769:1;34761:6;34757:14;34750:58;34842:5;34837:2;34829:6;34825:15;34818:30;34633:222;:::o;34861:366::-;35003:3;35024:67;35088:2;35083:3;35024:67;:::i;:::-;35017:74;;35100:93;35189:3;35100:93;:::i;:::-;35218:2;35213:3;35209:12;35202:19;;34861:366;;;:::o;35233:419::-;35399:4;35437:2;35426:9;35422:18;35414:26;;35486:9;35480:4;35476:20;35472:1;35461:9;35457:17;35450:47;35514:131;35640:4;35514:131;:::i;:::-;35506:139;;35233:419;;;:::o

Swarm Source

ipfs://3e470ce07f3b1a48295e0a1056767c012469cfffcc7ccefc056ef9d5c55793bc
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.