ETH Price: $2,644.55 (+1.45%)

Token

Ripple Inu (RIP)
 

Overview

Max Total Supply

1,000,000,000 RIP

Holders

71

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
9,399,986.840000000699318766 RIP

Value
$0.00
0x2b542ce06e71fd14c37b6f0697ae6db8e2d7ef7f
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:
RIP

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*                                                                


    ██████  ██ ██████  ██████  ██      ███████     ██ ███    ██ ██    ██ 
    ██   ██ ██ ██   ██ ██   ██ ██      ██          ██ ████   ██ ██    ██ 
    ██████  ██ ██████  ██████  ██      █████       ██ ██ ██  ██ ██    ██ 
    ██   ██ ██ ██      ██      ██      ██          ██ ██  ██ ██ ██    ██ 
    ██   ██ ██ ██      ██      ███████ ███████     ██ ██   ████  ██████  
                                                                         
                                                                         
* About this Project: A new meme coin birthed by fans of the XRP community. Ripple Inu is Hyper-deflationary with an
                      automatic 3% Liquidity and 2% Marketing and 1% Development system. One of Ripple Inu's key utility is the building of a thriving,
                      supportive and engaging community that spreads the awareness of XRP, creating that ripple effect.                                                                     
                                                                       
* Website: https://rippleinu.wixsite.com/ripple-inu
* Telegram: https://t.me/+7hfLcCZLIIU1MjIx
* Twitter: https://twitter.com/RIPPLEINUXRP

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

abstract contract Context {

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {
  
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;  //hash address of empty contract

        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {

    address private _owner;

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

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

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

    function renouncedOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0x000000000000000000000000000000000000dEaD));
        _owner = address(0x000000000000000000000000000000000000dEaD);
    }

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

}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

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

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, 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 DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    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 RIP is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    using Address for address;
    
    string private _name = "Ripple Inu";
    string private _symbol = "RIP";
    uint8 private _decimals = 18;

    address public marketingWallet = 0x1bA49E4d90E0C05C02084eb44f8729b5dbEC1C0e;
    address public developerWallet = 0x1bA49E4d90E0C05C02084eb44f8729b5dbEC1C0e;
    address public liquidityReciever;

    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public immutable zeroAddress = 0x0000000000000000000000000000000000000000;
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;

    uint256 _buyLiquidityFee = 3;
    uint256 _buyMarketingFee = 2;
    uint256 _buyDeveloperFee = 1;
    
    uint256 _sellLiquidityFee = 3;
    uint256 _sellMarketingFee = 2;
    uint256 _sellDeveloperFee = 1;

    uint256 totalBuy;
    uint256 totalSell;

    uint256 denominator = 100;

    uint256 private _totalSupply = 1_000_000_000 * 10**_decimals;   

    uint256 public minimumTokensBeforeSwap = 1000 * 10**_decimals;

    uint256 public _maxTxAmount =  _totalSupply.mul(5).div(1000);     //0.5%
    uint256 public _walletMax = _totalSupply.mul(10).div(1000);    //1%

    bool public EnableTxLimit = true;
    bool public checkWalletLimit = true;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 

        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = ~uint256(0);

        liquidityReciever = msg.sender;

        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[msg.sender] = true;
        isExcludedFromFee[marketingWallet] = true;
        isExcludedFromFee[developerWallet] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[address(this)] = true;

        isMarketPair[address(uniswapPair)] = true;

        totalBuy = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
        totalSell = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    /*====================================
    |               Getters              |
    ====================================*/

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

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

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

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

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

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

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

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

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress));
    }

     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        
        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {  
            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTxLimit) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            } 

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            
            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) 
            {
                swapAndLiquify();
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = shouldTakeFee(sender,recipient) ? amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient]) {
                require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Max Wallet Limit Exceeded!!");
            }

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function swapAndLiquify() private lockTheSwap {

        uint256 contractBalance = balanceOf(address(this));

        if(contractBalance == 0) return;

        uint256 totalShares = totalBuy.add(totalSell);
        uint256 _liquidityShare = _buyLiquidityFee.add(_sellLiquidityFee);
        uint256 _MarketingShare = _buyMarketingFee.add(_sellMarketingFee);

        uint256 tokensForLP = contractBalance.mul(_liquidityShare).div(totalShares).div(2);
        uint256 tokensForSwap = contractBalance.sub(tokensForLP);

        uint256 initialBalance = address(this).balance;
        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance.sub(initialBalance);

        uint256 totalBNBFee = totalShares.sub(_liquidityShare.div(2));
        
        uint256 amountBNBLiquidity = amountReceived.mul(_liquidityShare).div(totalBNBFee).div(2);
        uint256 amountBNBMarketing = amountReceived.mul(_MarketingShare).div(totalBNBFee);
        uint256 amountBNBDeveloper = amountReceived.sub(amountBNBLiquidity).sub(amountBNBMarketing);

        if(amountBNBMarketing > 0)
            transferToAddressETH(marketingWallet, amountBNBMarketing);

        if(amountBNBDeveloper > 0)
            transferToAddressETH(developerWallet, amountBNBDeveloper);

        if(amountBNBLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountBNBLiquidity);
    }

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

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

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

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

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

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        if(isExcludedFromFee[sender] || isExcludedFromFee[recipient]) {
            return true;
        }
        else if (isMarketPair[sender] || isMarketPair[recipient]) {
            return false;
        }
        else {
            return false;
        }
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint feeAmount;

        unchecked {

            if(isMarketPair[sender]) {
            
                feeAmount = amount.mul(totalBuy).div(denominator);
            }
            else if(isMarketPair[recipient]) {

                feeAmount = amount.mul(totalSell).div(denominator);
                
            }     

            if(feeAmount > 0) {
                _balances[address(this)] = _balances[address(this)].add(feeAmount);
                emit Transfer(sender, address(this), feeAmount);
            }

            return amount.sub(feeAmount);
        }
        
    }

    /*====================================
    |               Setters              |
    ====================================*/


    //To Rescue Stucked Balance
    function rescueFunds() public onlyOwner { 
        (bool os,) = payable(msg.sender).call{value: address(this).balance}("");
        require(os,"Transaction Failed!!");
    }

    //To Rescue Stucked Tokens
    function rescueTokens(IERC20 adr,address recipient,uint amount) public onlyOwner {
        adr.transfer(recipient,amount);
    }

    function enableTxLimit(bool _status) public onlyOwner {
        EnableTxLimit = _status;
    }

    function enableWalletLimit(bool _status) public onlyOwner {
        checkWalletLimit = _status;
    }

    function setBuyFee(uint _newLP , uint _newMarket , uint _newDeveloper) public onlyOwner {     
        _buyLiquidityFee = _newLP;
        _buyMarketingFee = _newMarket;
        _buyDeveloperFee = _newDeveloper;
        totalBuy = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
    }

    function setSellFee(uint _newLP , uint _newMarket , uint _newDeveloper) public onlyOwner {        
        _sellLiquidityFee = _newLP;
        _sellMarketingFee = _newMarket;
        _sellDeveloperFee = _newDeveloper;
        totalSell = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);
    }

    function setWallets(address _market,address _developer,address _liquidityRec) public onlyOwner {
        marketingWallet = _market;
        developerWallet = _developer;
        liquidityReciever = _liquidityRec;
    }

    function setExcludeFromFee(address _adr,bool _status) public onlyOwner {
        require(isExcludedFromFee[_adr] != _status,"Not Changed!!");
        isExcludedFromFee[_adr] = _status;
    }

    function ExcludeWalletLimit(address _adr,bool _status) public onlyOwner {
        require(isWalletLimitExempt[_adr] != _status,"Not Changed!!");
        isWalletLimitExempt[_adr] = _status;
    }

    function ExcludeTxLimit(address _adr,bool _status) public onlyOwner {
        require(isTxLimitExempt[_adr] != _status,"Not Changed!!");
        isTxLimitExempt[_adr] = _status;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        minimumTokensBeforeSwap = newLimit;
    }

    function setMaxWalletLimit(uint256 newLimit) external onlyOwner() {
        _walletMax = newLimit;
    }

    function setTxLimit(uint256 newLimit) external onlyOwner() {
        _maxTxAmount = newLimit;
    }

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

    function setMarketPair(address _pair, bool _status) public onlyOwner {
        isMarketPair[_pair] = _status;
    }

    function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 

        newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());

        if(newPairAddress == address(0)) //Create If Doesnt exist
        {
            newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());
        }

        uniswapPair = newPairAddress; //Set new pair address
        uniswapV2Router = _uniswapV2Router; //Set new router address

        isMarketPair[address(uniswapPair)] = true;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"EnableTxLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"ExcludeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"ExcludeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developerWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityReciever","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renouncedOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"adr","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLP","type":"uint256"},{"internalType":"uint256","name":"_newMarket","type":"uint256"},{"internalType":"uint256","name":"_newDeveloper","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLP","type":"uint256"},{"internalType":"uint256","name":"_newMarket","type":"uint256"},{"internalType":"uint256","name":"_newDeveloper","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_market","type":"address"},{"internalType":"address","name":"_developer","type":"address"},{"internalType":"address","name":"_liquidityRec","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","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":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526040518060400160405280600a81526020017f526970706c6520496e7500000000000000000000000000000000000000000000815250600190805190602001906200005192919062000dca565b506040518060400160405280600381526020017f5249500000000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062000dca565b506012600360006101000a81548160ff021916908360ff160217905550731ba49e4d90e0c05c02084eb44f8729b5dbec1c0e600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731ba49e4d90e0c05c02084eb44f8729b5dbec1c0e600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff1660601b8152506003600c556002600d556001600e556003600f55600260105560016011556064601455600360009054906101000a900460ff16600a62000216919062001132565b633b9aca006200022791906200126f565b601555600360009054906101000a900460ff16600a62000248919062001132565b6103e86200025791906200126f565b601655620002926103e86200027e600560155462000c2160201b62002a2d1790919060201c565b62000ca560201b62002aa81790919060201c565b601755620002cd6103e8620002b9600a60155462000c2160201b62002a2d1790919060201c565b62000ca560201b62002aa81790919060201c565b6018556001601960006101000a81548160ff0219169083151502179055506001601960016101000a81548160ff0219169083151502179055506001601a60156101000a81548160ff0219169083151502179055503480156200032e57600080fd5b5060006200034162000cf760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200043f57600080fd5b505afa15801562000454573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047a919062000e91565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004dd57600080fd5b505afa158015620004f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000518919062000e91565b6040518363ffffffff1660e01b81526004016200053792919062000f74565b602060405180830381600087803b1580156200055257600080fd5b505af115801562000567573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200058d919062000e91565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000b25600e5462000b11600d54600c5462000cff60201b62002af21790919060201c565b62000cff60201b62002af21790919060201c565b60128190555062000b6460115462000b50601054600f5462000cff60201b62002af21790919060201c565b62000cff60201b62002af21790919060201c565b601381905550601554600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60155460405162000c12919062001009565b60405180910390a350620014c9565b60008083141562000c36576000905062000c9f565b6000828462000c4691906200126f565b905082848262000c5791906200109f565b1462000c9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c919062000fe7565b60405180910390fd5b809150505b92915050565b600062000cef83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000d6260201b60201c565b905092915050565b600033905090565b600080828462000d10919062001042565b90508381101562000d58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d4f9062000fc5565b60405180910390fd5b8091505092915050565b6000808311829062000dac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000da3919062000fa1565b60405180910390fd5b506000838562000dbd91906200109f565b9050809150509392505050565b82805462000dd89062001351565b90600052602060002090601f01602090048101928262000dfc576000855562000e48565b82601f1062000e1757805160ff191683800117855562000e48565b8280016001018555821562000e48579182015b8281111562000e4757825182559160200191906001019062000e2a565b5b50905062000e57919062000e5b565b5090565b5b8082111562000e7657600081600090555060010162000e5c565b5090565b60008151905062000e8b81620014af565b92915050565b60006020828403121562000eaa5762000ea962001414565b5b600062000eba8482850162000e7a565b91505092915050565b62000ece81620012d0565b82525050565b600062000ee18262001026565b62000eed818562001031565b935062000eff8185602086016200131b565b62000f0a8162001419565b840191505092915050565b600062000f24601b8362001031565b915062000f318262001437565b602082019050919050565b600062000f4b60218362001031565b915062000f588262001460565b604082019050919050565b62000f6e8162001304565b82525050565b600060408201905062000f8b600083018562000ec3565b62000f9a602083018462000ec3565b9392505050565b6000602082019050818103600083015262000fbd818462000ed4565b905092915050565b6000602082019050818103600083015262000fe08162000f15565b9050919050565b60006020820190508181036000830152620010028162000f3c565b9050919050565b600060208201905062001020600083018462000f63565b92915050565b600081519050919050565b600082825260208201905092915050565b60006200104f8262001304565b91506200105c8362001304565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562001094576200109362001387565b5b828201905092915050565b6000620010ac8262001304565b9150620010b98362001304565b925082620010cc57620010cb620013b6565b5b828204905092915050565b6000808291508390505b6001851115620011295780860481111562001101576200110062001387565b5b6001851615620011115780820291505b808102905062001121856200142a565b9450620010e1565b94509492505050565b60006200113f8262001304565b91506200114c836200130e565b92506200117b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001183565b905092915050565b60008262001195576001905062001268565b81620011a5576000905062001268565b8160018114620011be5760028114620011c957620011ff565b600191505062001268565b60ff841115620011de57620011dd62001387565b5b8360020a915084821115620011f857620011f762001387565b5b5062001268565b5060208310610133831016604e8410600b8410161715620012395782820a90508381111562001233576200123262001387565b5b62001268565b620012488484846001620010d7565b9250905081840481111562001262576200126162001387565b5b81810290505b9392505050565b60006200127c8262001304565b9150620012898362001304565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620012c557620012c462001387565b5b828202905092915050565b6000620012dd82620012e4565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200133b5780820151818401526020810190506200131e565b838111156200134b576000848401525b50505050565b600060028204905060018216806200136a57607f821691505b60208210811415620013815762001380620013e5565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b620014ba81620012d0565b8114620014c657600080fd5b50565b60805160601c60a05160601c6151ce6200150360003960008181610c1f0152611255015260008181611229015261128101526151ce6000f3fe6080604052600436106102b25760003560e01c806370a0823111610175578063a9059cbb116100dc578063cea9d26f11610095578063e6b2603b1161006f578063e6b2603b14610af7578063ee828db314610b0e578063f2fde38b14610b37578063f872858a14610b60576102b9565b8063cea9d26f14610a66578063d2d7ad8314610a8f578063dd62ed3e14610aba576102b9565b8063a9059cbb14610946578063af9549e014610983578063c16dd4a4146109ac578063c49b9a80146109d5578063c816841b146109fe578063c867d60b14610a29576102b9565b80638b42507f1161012e5780638b42507f146108205780638da5cb5b1461085d5780638f32d59b1461088857806395d89b41146108b357806398e944c8146108de578063a457c2d714610909576102b9565b806370a0823114610710578063728d41c91461074d57806375cb1bd11461077657806375f0a8741461079f5780637d1db4a5146107ca578063807c2d9c146107f5576102b9565b80632b112e49116102195780634974d88f116101d25780634974d88f146105ee5780634a74bb02146106175780635342acb4146106425780635881f3ef1461067f5780635c85974f146106bc5780635e42358c146106e5576102b9565b80632b112e49146104cc578063313ce567146104f757806338ec0b1114610522578063395093511461054b5780633b97084a146105885780633ecad271146105b1576102b9565b8063185870f91161026b578063185870f9146103d05780631d865c30146103fb57806320365d5f1461042457806323b872dd1461043b57806325519cf21461047857806327c8f835146104a1576102b9565b806306fdde03146102be5780630930907b146102e9578063095ea7b31461031457806313ea1d89146103515780631694505e1461037a57806318160ddd146103a5576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102d3610b8b565b6040516102e0919061479b565b60405180910390f35b3480156102f557600080fd5b506102fe610c1d565b60405161030b9190614697565b60405180910390f35b34801561032057600080fd5b5061033b600480360381019061033691906141c0565b610c41565b6040516103489190614765565b60405180910390f35b34801561035d57600080fd5b5061037860048036038101906103739190614180565b610c5f565b005b34801561038657600080fd5b5061038f610de2565b60405161039c9190614780565b60405180910390f35b3480156103b157600080fd5b506103ba610e08565b6040516103c7919061495d565b60405180910390f35b3480156103dc57600080fd5b506103e5610e12565b6040516103f29190614697565b60405180910390f35b34801561040757600080fd5b50610422600480360381019061041d91906142da565b610e38565b005b34801561043057600080fd5b50610439610f18565b005b34801561044757600080fd5b50610462600480360381019061045d919061412d565b61106d565b60405161046f9190614765565b60405180910390f35b34801561048457600080fd5b5061049f600480360381019061049a91906142da565b611147565b005b3480156104ad57600080fd5b506104b6611227565b6040516104c39190614697565b60405180910390f35b3480156104d857600080fd5b506104e161124b565b6040516104ee919061495d565b60405180910390f35b34801561050357600080fd5b5061050c6112c9565b6040516105199190614a02565b60405180910390f35b34801561052e57600080fd5b5061054960048036038101906105449190614180565b6112e0565b005b34801561055757600080fd5b50610572600480360381019061056d91906141c0565b611463565b60405161057f9190614765565b60405180910390f35b34801561059457600080fd5b506105af60048036038101906105aa91906142ad565b611516565b005b3480156105bd57600080fd5b506105d860048036038101906105d39190614040565b6115b5565b6040516105e59190614765565b60405180910390f35b3480156105fa57600080fd5b5061061560048036038101906106109190614200565b6115d5565b005b34801561062357600080fd5b5061062c611687565b6040516106399190614765565b60405180910390f35b34801561064e57600080fd5b5061066960048036038101906106649190614040565b61169a565b6040516106769190614765565b60405180910390f35b34801561068b57600080fd5b506106a660048036038101906106a19190614040565b6116ba565b6040516106b39190614697565b60405180910390f35b3480156106c857600080fd5b506106e360048036038101906106de91906142ad565b611b9e565b005b3480156106f157600080fd5b506106fa611c3d565b6040516107079190614765565b60405180910390f35b34801561071c57600080fd5b5061073760048036038101906107329190614040565b611c50565b604051610744919061495d565b60405180910390f35b34801561075957600080fd5b50610774600480360381019061076f91906142ad565b611c99565b005b34801561078257600080fd5b5061079d600480360381019061079891906140da565b611d38565b005b3480156107ab57600080fd5b506107b4611e95565b6040516107c19190614697565b60405180910390f35b3480156107d657600080fd5b506107df611ebb565b6040516107ec919061495d565b60405180910390f35b34801561080157600080fd5b5061080a611ec1565b604051610817919061495d565b60405180910390f35b34801561082c57600080fd5b5061084760048036038101906108429190614040565b611ec7565b6040516108549190614765565b60405180910390f35b34801561086957600080fd5b50610872611ee7565b60405161087f9190614697565b60405180910390f35b34801561089457600080fd5b5061089d611f10565b6040516108aa9190614765565b60405180910390f35b3480156108bf57600080fd5b506108c8611f67565b6040516108d5919061479b565b60405180910390f35b3480156108ea57600080fd5b506108f3611ff9565b6040516109009190614697565b60405180910390f35b34801561091557600080fd5b50610930600480360381019061092b91906141c0565b61201f565b60405161093d9190614765565b60405180910390f35b34801561095257600080fd5b5061096d600480360381019061096891906141c0565b6120ec565b60405161097a9190614765565b60405180910390f35b34801561098f57600080fd5b506109aa60048036038101906109a59190614180565b61210b565b005b3480156109b857600080fd5b506109d360048036038101906109ce9190614180565b61228e565b005b3480156109e157600080fd5b506109fc60048036038101906109f79190614200565b61237e565b005b348015610a0a57600080fd5b50610a13612467565b604051610a209190614697565b60405180910390f35b348015610a3557600080fd5b50610a506004803603810190610a4b9190614040565b61248d565b604051610a5d9190614765565b60405180910390f35b348015610a7257600080fd5b50610a8d6004803603810190610a88919061425a565b6124ad565b005b348015610a9b57600080fd5b50610aa46125d5565b604051610ab1919061495d565b60405180910390f35b348015610ac657600080fd5b50610ae16004803603810190610adc919061409a565b6125db565b604051610aee919061495d565b60405180910390f35b348015610b0357600080fd5b50610b0c612662565b005b348015610b1a57600080fd5b50610b356004803603810190610b309190614200565b6127a6565b005b348015610b4357600080fd5b50610b5e6004803603810190610b599190614040565b612858565b005b348015610b6c57600080fd5b50610b75612a1a565b604051610b829190614765565b60405180910390f35b606060018054610b9a90614c74565b80601f0160208091040260200160405190810160405280929190818152602001828054610bc690614c74565b8015610c135780601f10610be857610100808354040283529160200191610c13565b820191906000526020600020905b815481529060010190602001808311610bf657829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610c55610c4e612b50565b8484612b58565b6001905092915050565b610c67612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ceb906148bd565b60405180910390fd5b801515600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7e9061485d565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601554905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e40612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec4906148bd565b60405180910390fd5b82600f819055508160108190555080601181905550610f0d601154610eff601054600f54612af290919063ffffffff16565b612af290919063ffffffff16565b601381905550505050565b610f20612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa4906148bd565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061107a848484612d23565b5061113c84611087612b50565b6111378560405180606001604052806028815260200161514c60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110ed612b50565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132e69092919063ffffffff16565b612b58565b600190509392505050565b61114f612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d3906148bd565b60405180910390fd5b82600c8190555081600d8190555080600e8190555061121c600e5461120e600d54600c54612af290919063ffffffff16565b612af290919063ffffffff16565b601281905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006112c46112797f0000000000000000000000000000000000000000000000000000000000000000611c50565b6112b66112a57f0000000000000000000000000000000000000000000000000000000000000000611c50565b60155461334a90919063ffffffff16565b61334a90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b6112e8612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136c906148bd565b60405180910390fd5b801515600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ff9061485d565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061150c611470612b50565b846115078560076000611481612b50565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612af290919063ffffffff16565b612b58565b6001905092915050565b61151e612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a2906148bd565b60405180910390fd5b8060168190555050565b60096020528060005260406000206000915054906101000a900460ff1681565b6115dd612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461166a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611661906148bd565b60405180910390fd5b80601960016101000a81548160ff02191690831515021790555050565b601a60159054906101000a900460ff1681565b60086020528060005260406000206000915054906101000a900460ff1681565b60006116c4612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611751576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611748906148bd565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561179c57600080fd5b505afa1580156117b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d4919061406d565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561183657600080fd5b505afa15801561184a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186e919061406d565b6040518363ffffffff1660e01b815260040161188b9291906146b2565b60206040518083038186803b1580156118a357600080fd5b505afa1580156118b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118db919061406d565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a9c578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561195857600080fd5b505afa15801561196c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611990919061406d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156119f257600080fd5b505afa158015611a06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2a919061406d565b6040518363ffffffff1660e01b8152600401611a479291906146b2565b602060405180830381600087803b158015611a6157600080fd5b505af1158015611a75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a99919061406d565b91505b81601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611ba6612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2a906148bd565b60405180910390fd5b8060178190555050565b601960009054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611ca1612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d25906148bd565b60405180910390fd5b8060188190555050565b611d40612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc4906148bd565b60405180910390fd5b82600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b60185481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b606060028054611f7690614c74565b80601f0160208091040260200160405190810160405280929190818152602001828054611fa290614c74565b8015611fef5780601f10611fc457610100808354040283529160200191611fef565b820191906000526020600020905b815481529060010190602001808311611fd257829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006120e261202c612b50565b846120dd856040518060600160405280602581526020016151746025913960076000612056612b50565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132e69092919063ffffffff16565b612b58565b6001905092915050565b60006121006120f9612b50565b8484612d23565b506001905092915050565b612113612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612197906148bd565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415612233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222a9061485d565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612296612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231a906148bd565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612386612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240a906148bd565b60405180910390fd5b80601a60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161245c9190614765565b60405180910390a150565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b6124b5612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612542576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612539906148bd565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161257d9291906146db565b602060405180830381600087803b15801561259757600080fd5b505af11580156125ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125cf919061422d565b50505050565b60165481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61266a612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ee906148bd565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161271d90614682565b60006040518083038185875af1925050503d806000811461275a576040519150601f19603f3d011682016040523d82523d6000602084013e61275f565b606091505b50509050806127a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279a9061493d565b60405180910390fd5b50565b6127ae612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461283b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612832906148bd565b60405180910390fd5b80601960006101000a81548160ff02191690831515021790555050565b612860612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e4906148bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561295d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612954906147fd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601960019054906101000a900460ff1681565b600080831415612a405760009050612aa2565b60008284612a4e9190614b04565b9050828482612a5d9190614ad3565b14612a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a949061489d565b60405180910390fd5b809150505b92915050565b6000612aea83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613394565b905092915050565b6000808284612b019190614a7d565b905083811015612b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3d9061483d565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbf9061491d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2f9061481d565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612d16919061495d565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8b906148fd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dfb906147bd565b60405180910390fd5b60008211612e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3e906148dd565b60405180910390fd5b601a60149054906101000a900460ff1615612e6e57612e678484846133f7565b90506132df565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612f125750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612f2a5750601960009054906101000a900460ff165b15612f7557601754821115612f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6b9061487d565b60405180910390fd5b5b6000612f8030611c50565b905060006016548210159050808015612fa65750601a60149054906101000a900460ff16155b8015612ffc5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130145750601a60159054906101000a900460ff165b15613022576130216135ca565b5b6130ab846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132e69092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006130fa8787613838565b61310e576131098787876139a3565b613110565b845b9050601960019054906101000a900460ff1680156131785750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131dd5760185461319b8261318d89611c50565b612af290919063ffffffff16565b11156131dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131d3906147dd565b60405180910390fd5b5b61322f81600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612af290919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132cf919061495d565b60405180910390a3600193505050505b9392505050565b600083831115829061332e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613325919061479b565b60405180910390fd5b506000838561333d9190614b5e565b9050809150509392505050565b600061338c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506132e6565b905092915050565b600080831182906133db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133d2919061479b565b60405180910390fd5b50600083856133ea9190614ad3565b9050809150509392505050565b6000613482826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132e69092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061351782600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612af290919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516135b7919061495d565b60405180910390a3600190509392505050565b6001601a60146101000a81548160ff02191690831515021790555060006135f030611c50565b90506000811415613601575061381b565b600061361a601354601254612af290919063ffffffff16565b90506000613635600f54600c54612af290919063ffffffff16565b90506000613650601054600d54612af290919063ffffffff16565b9050600061368c600261367e86613670878a612a2d90919063ffffffff16565b612aa890919063ffffffff16565b612aa890919063ffffffff16565b905060006136a3828761334a90919063ffffffff16565b905060004790506136b382613bc8565b60006136c8824761334a90919063ffffffff16565b905060006136f26136e3600289612aa890919063ffffffff16565b8961334a90919063ffffffff16565b9050600061372e6002613720846137128c88612a2d90919063ffffffff16565b612aa890919063ffffffff16565b612aa890919063ffffffff16565b90506000613757836137498a87612a2d90919063ffffffff16565b612aa890919063ffffffff16565b9050600061378082613772858861334a90919063ffffffff16565b61334a90919063ffffffff16565b905060008211156137b8576137b7600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613e53565b5b60008111156137ee576137ed600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613e53565b5b6000831180156137fe5750600088115b1561380e5761380d8884613e9e565b5b5050505050505050505050505b6000601a60146101000a81548160ff021916908315150217905550565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138db5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156138e9576001905061399d565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061398a5750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613998576000905061399d565b600090505b92915050565b600080600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613a2857613a21601454613a1360125486612a2d90919063ffffffff16565b612aa890919063ffffffff16565b9050613aa7565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613aa657613aa3601454613a9560135486612a2d90919063ffffffff16565b612aa890919063ffffffff16565b90505b5b6000811115613bab57613b0281600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612af290919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613ba2919061495d565b60405180910390a35b613bbe818461334a90919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff811115613be557613be4614d62565b5b604051908082528060200260200182016040528015613c135781602001602082028036833780820191505090505b5090503081600081518110613c2b57613c2a614d33565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613ccd57600080fd5b505afa158015613ce1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d05919061406d565b81600181518110613d1957613d18614d33565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d8030601960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612b58565b601960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613de49594939291906149a8565b600060405180830381600087803b158015613dfe57600080fd5b505af1158015613e12573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613e47929190614978565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613e99573d6000803e3d6000fd5b505050565b613ecb30601960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612b58565b601960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613f5496959493929190614704565b6060604051808303818588803b158015613f6d57600080fd5b505af1158015613f81573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613fa6919061432d565b5050505050565b600081359050613fbc816150ef565b92915050565b600081519050613fd1816150ef565b92915050565b600081359050613fe681615106565b92915050565b600081519050613ffb81615106565b92915050565b6000813590506140108161511d565b92915050565b60008135905061402581615134565b92915050565b60008151905061403a81615134565b92915050565b60006020828403121561405657614055614d91565b5b600061406484828501613fad565b91505092915050565b60006020828403121561408357614082614d91565b5b600061409184828501613fc2565b91505092915050565b600080604083850312156140b1576140b0614d91565b5b60006140bf85828601613fad565b92505060206140d085828601613fad565b9150509250929050565b6000806000606084860312156140f3576140f2614d91565b5b600061410186828701613fad565b935050602061411286828701613fad565b925050604061412386828701613fad565b9150509250925092565b60008060006060848603121561414657614145614d91565b5b600061415486828701613fad565b935050602061416586828701613fad565b925050604061417686828701614016565b9150509250925092565b6000806040838503121561419757614196614d91565b5b60006141a585828601613fad565b92505060206141b685828601613fd7565b9150509250929050565b600080604083850312156141d7576141d6614d91565b5b60006141e585828601613fad565b92505060206141f685828601614016565b9150509250929050565b60006020828403121561421657614215614d91565b5b600061422484828501613fd7565b91505092915050565b60006020828403121561424357614242614d91565b5b600061425184828501613fec565b91505092915050565b60008060006060848603121561427357614272614d91565b5b600061428186828701614001565b935050602061429286828701613fad565b92505060406142a386828701614016565b9150509250925092565b6000602082840312156142c3576142c2614d91565b5b60006142d184828501614016565b91505092915050565b6000806000606084860312156142f3576142f2614d91565b5b600061430186828701614016565b935050602061431286828701614016565b925050604061432386828701614016565b9150509250925092565b60008060006060848603121561434657614345614d91565b5b60006143548682870161402b565b93505060206143658682870161402b565b92505060406143768682870161402b565b9150509250925092565b600061438c8383614398565b60208301905092915050565b6143a181614b92565b82525050565b6143b081614b92565b82525050565b60006143c182614a2d565b6143cb8185614a50565b93506143d683614a1d565b8060005b838110156144075781516143ee8882614380565b97506143f983614a43565b9250506001810190506143da565b5085935050505092915050565b61441d81614ba4565b82525050565b61442c81614bf9565b82525050565b61443b81614c0b565b82525050565b600061444c82614a38565b6144568185614a6c565b9350614466818560208601614c41565b61446f81614d96565b840191505092915050565b6000614487602383614a6c565b915061449282614da7565b604082019050919050565b60006144aa601b83614a6c565b91506144b582614df6565b602082019050919050565b60006144cd602683614a6c565b91506144d882614e1f565b604082019050919050565b60006144f0602283614a6c565b91506144fb82614e6e565b604082019050919050565b6000614513601b83614a6c565b915061451e82614ebd565b602082019050919050565b6000614536600d83614a6c565b915061454182614ee6565b602082019050919050565b6000614559602883614a6c565b915061456482614f0f565b604082019050919050565b600061457c602183614a6c565b915061458782614f5e565b604082019050919050565b600061459f602083614a6c565b91506145aa82614fad565b602082019050919050565b60006145c2602983614a6c565b91506145cd82614fd6565b604082019050919050565b60006145e5602583614a6c565b91506145f082615025565b604082019050919050565b6000614608600083614a61565b915061461382615074565b600082019050919050565b600061462b602483614a6c565b915061463682615077565b604082019050919050565b600061464e601483614a6c565b9150614659826150c6565b602082019050919050565b61466d81614be2565b82525050565b61467c81614bec565b82525050565b600061468d826145fb565b9150819050919050565b60006020820190506146ac60008301846143a7565b92915050565b60006040820190506146c760008301856143a7565b6146d460208301846143a7565b9392505050565b60006040820190506146f060008301856143a7565b6146fd6020830184614664565b9392505050565b600060c08201905061471960008301896143a7565b6147266020830188614664565b6147336040830187614432565b6147406060830186614432565b61474d60808301856143a7565b61475a60a0830184614664565b979650505050505050565b600060208201905061477a6000830184614414565b92915050565b60006020820190506147956000830184614423565b92915050565b600060208201905081810360008301526147b58184614441565b905092915050565b600060208201905081810360008301526147d68161447a565b9050919050565b600060208201905081810360008301526147f68161449d565b9050919050565b60006020820190508181036000830152614816816144c0565b9050919050565b60006020820190508181036000830152614836816144e3565b9050919050565b6000602082019050818103600083015261485681614506565b9050919050565b6000602082019050818103600083015261487681614529565b9050919050565b600060208201905081810360008301526148968161454c565b9050919050565b600060208201905081810360008301526148b68161456f565b9050919050565b600060208201905081810360008301526148d681614592565b9050919050565b600060208201905081810360008301526148f6816145b5565b9050919050565b60006020820190508181036000830152614916816145d8565b9050919050565b600060208201905081810360008301526149368161461e565b9050919050565b6000602082019050818103600083015261495681614641565b9050919050565b60006020820190506149726000830184614664565b92915050565b600060408201905061498d6000830185614664565b818103602083015261499f81846143b6565b90509392505050565b600060a0820190506149bd6000830188614664565b6149ca6020830187614432565b81810360408301526149dc81866143b6565b90506149eb60608301856143a7565b6149f86080830184614664565b9695505050505050565b6000602082019050614a176000830184614673565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000614a8882614be2565b9150614a9383614be2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614ac857614ac7614ca6565b5b828201905092915050565b6000614ade82614be2565b9150614ae983614be2565b925082614af957614af8614cd5565b5b828204905092915050565b6000614b0f82614be2565b9150614b1a83614be2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614b5357614b52614ca6565b5b828202905092915050565b6000614b6982614be2565b9150614b7483614be2565b925082821015614b8757614b86614ca6565b5b828203905092915050565b6000614b9d82614bc2565b9050919050565b60008115159050919050565b6000614bbb82614b92565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614c0482614c1d565b9050919050565b6000614c1682614be2565b9050919050565b6000614c2882614c2f565b9050919050565b6000614c3a82614bc2565b9050919050565b60005b83811015614c5f578082015181840152602081019050614c44565b83811115614c6e576000848401525b50505050565b60006002820490506001821680614c8c57607f821691505b60208210811415614ca057614c9f614d04565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782057616c6c6574204c696d697420457863656564656421210000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4e6f74204368616e676564212100000000000000000000000000000000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b6150f881614b92565b811461510357600080fd5b50565b61510f81614ba4565b811461511a57600080fd5b50565b61512681614bb0565b811461513157600080fd5b50565b61513d81614be2565b811461514857600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d50798115bc43ce63ced2d98228efa7f6ae93339d6a8756827d1f4c1a109555e64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106102b25760003560e01c806370a0823111610175578063a9059cbb116100dc578063cea9d26f11610095578063e6b2603b1161006f578063e6b2603b14610af7578063ee828db314610b0e578063f2fde38b14610b37578063f872858a14610b60576102b9565b8063cea9d26f14610a66578063d2d7ad8314610a8f578063dd62ed3e14610aba576102b9565b8063a9059cbb14610946578063af9549e014610983578063c16dd4a4146109ac578063c49b9a80146109d5578063c816841b146109fe578063c867d60b14610a29576102b9565b80638b42507f1161012e5780638b42507f146108205780638da5cb5b1461085d5780638f32d59b1461088857806395d89b41146108b357806398e944c8146108de578063a457c2d714610909576102b9565b806370a0823114610710578063728d41c91461074d57806375cb1bd11461077657806375f0a8741461079f5780637d1db4a5146107ca578063807c2d9c146107f5576102b9565b80632b112e49116102195780634974d88f116101d25780634974d88f146105ee5780634a74bb02146106175780635342acb4146106425780635881f3ef1461067f5780635c85974f146106bc5780635e42358c146106e5576102b9565b80632b112e49146104cc578063313ce567146104f757806338ec0b1114610522578063395093511461054b5780633b97084a146105885780633ecad271146105b1576102b9565b8063185870f91161026b578063185870f9146103d05780631d865c30146103fb57806320365d5f1461042457806323b872dd1461043b57806325519cf21461047857806327c8f835146104a1576102b9565b806306fdde03146102be5780630930907b146102e9578063095ea7b31461031457806313ea1d89146103515780631694505e1461037a57806318160ddd146103a5576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102d3610b8b565b6040516102e0919061479b565b60405180910390f35b3480156102f557600080fd5b506102fe610c1d565b60405161030b9190614697565b60405180910390f35b34801561032057600080fd5b5061033b600480360381019061033691906141c0565b610c41565b6040516103489190614765565b60405180910390f35b34801561035d57600080fd5b5061037860048036038101906103739190614180565b610c5f565b005b34801561038657600080fd5b5061038f610de2565b60405161039c9190614780565b60405180910390f35b3480156103b157600080fd5b506103ba610e08565b6040516103c7919061495d565b60405180910390f35b3480156103dc57600080fd5b506103e5610e12565b6040516103f29190614697565b60405180910390f35b34801561040757600080fd5b50610422600480360381019061041d91906142da565b610e38565b005b34801561043057600080fd5b50610439610f18565b005b34801561044757600080fd5b50610462600480360381019061045d919061412d565b61106d565b60405161046f9190614765565b60405180910390f35b34801561048457600080fd5b5061049f600480360381019061049a91906142da565b611147565b005b3480156104ad57600080fd5b506104b6611227565b6040516104c39190614697565b60405180910390f35b3480156104d857600080fd5b506104e161124b565b6040516104ee919061495d565b60405180910390f35b34801561050357600080fd5b5061050c6112c9565b6040516105199190614a02565b60405180910390f35b34801561052e57600080fd5b5061054960048036038101906105449190614180565b6112e0565b005b34801561055757600080fd5b50610572600480360381019061056d91906141c0565b611463565b60405161057f9190614765565b60405180910390f35b34801561059457600080fd5b506105af60048036038101906105aa91906142ad565b611516565b005b3480156105bd57600080fd5b506105d860048036038101906105d39190614040565b6115b5565b6040516105e59190614765565b60405180910390f35b3480156105fa57600080fd5b5061061560048036038101906106109190614200565b6115d5565b005b34801561062357600080fd5b5061062c611687565b6040516106399190614765565b60405180910390f35b34801561064e57600080fd5b5061066960048036038101906106649190614040565b61169a565b6040516106769190614765565b60405180910390f35b34801561068b57600080fd5b506106a660048036038101906106a19190614040565b6116ba565b6040516106b39190614697565b60405180910390f35b3480156106c857600080fd5b506106e360048036038101906106de91906142ad565b611b9e565b005b3480156106f157600080fd5b506106fa611c3d565b6040516107079190614765565b60405180910390f35b34801561071c57600080fd5b5061073760048036038101906107329190614040565b611c50565b604051610744919061495d565b60405180910390f35b34801561075957600080fd5b50610774600480360381019061076f91906142ad565b611c99565b005b34801561078257600080fd5b5061079d600480360381019061079891906140da565b611d38565b005b3480156107ab57600080fd5b506107b4611e95565b6040516107c19190614697565b60405180910390f35b3480156107d657600080fd5b506107df611ebb565b6040516107ec919061495d565b60405180910390f35b34801561080157600080fd5b5061080a611ec1565b604051610817919061495d565b60405180910390f35b34801561082c57600080fd5b5061084760048036038101906108429190614040565b611ec7565b6040516108549190614765565b60405180910390f35b34801561086957600080fd5b50610872611ee7565b60405161087f9190614697565b60405180910390f35b34801561089457600080fd5b5061089d611f10565b6040516108aa9190614765565b60405180910390f35b3480156108bf57600080fd5b506108c8611f67565b6040516108d5919061479b565b60405180910390f35b3480156108ea57600080fd5b506108f3611ff9565b6040516109009190614697565b60405180910390f35b34801561091557600080fd5b50610930600480360381019061092b91906141c0565b61201f565b60405161093d9190614765565b60405180910390f35b34801561095257600080fd5b5061096d600480360381019061096891906141c0565b6120ec565b60405161097a9190614765565b60405180910390f35b34801561098f57600080fd5b506109aa60048036038101906109a59190614180565b61210b565b005b3480156109b857600080fd5b506109d360048036038101906109ce9190614180565b61228e565b005b3480156109e157600080fd5b506109fc60048036038101906109f79190614200565b61237e565b005b348015610a0a57600080fd5b50610a13612467565b604051610a209190614697565b60405180910390f35b348015610a3557600080fd5b50610a506004803603810190610a4b9190614040565b61248d565b604051610a5d9190614765565b60405180910390f35b348015610a7257600080fd5b50610a8d6004803603810190610a88919061425a565b6124ad565b005b348015610a9b57600080fd5b50610aa46125d5565b604051610ab1919061495d565b60405180910390f35b348015610ac657600080fd5b50610ae16004803603810190610adc919061409a565b6125db565b604051610aee919061495d565b60405180910390f35b348015610b0357600080fd5b50610b0c612662565b005b348015610b1a57600080fd5b50610b356004803603810190610b309190614200565b6127a6565b005b348015610b4357600080fd5b50610b5e6004803603810190610b599190614040565b612858565b005b348015610b6c57600080fd5b50610b75612a1a565b604051610b829190614765565b60405180910390f35b606060018054610b9a90614c74565b80601f0160208091040260200160405190810160405280929190818152602001828054610bc690614c74565b8015610c135780601f10610be857610100808354040283529160200191610c13565b820191906000526020600020905b815481529060010190602001808311610bf657829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610c55610c4e612b50565b8484612b58565b6001905092915050565b610c67612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ceb906148bd565b60405180910390fd5b801515600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7e9061485d565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601554905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e40612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec4906148bd565b60405180910390fd5b82600f819055508160108190555080601181905550610f0d601154610eff601054600f54612af290919063ffffffff16565b612af290919063ffffffff16565b601381905550505050565b610f20612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa4906148bd565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061107a848484612d23565b5061113c84611087612b50565b6111378560405180606001604052806028815260200161514c60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110ed612b50565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132e69092919063ffffffff16565b612b58565b600190509392505050565b61114f612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d3906148bd565b60405180910390fd5b82600c8190555081600d8190555080600e8190555061121c600e5461120e600d54600c54612af290919063ffffffff16565b612af290919063ffffffff16565b601281905550505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b60006112c46112797f0000000000000000000000000000000000000000000000000000000000000000611c50565b6112b66112a57f000000000000000000000000000000000000000000000000000000000000dead611c50565b60155461334a90919063ffffffff16565b61334a90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b6112e8612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136c906148bd565b60405180910390fd5b801515600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ff9061485d565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061150c611470612b50565b846115078560076000611481612b50565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612af290919063ffffffff16565b612b58565b6001905092915050565b61151e612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a2906148bd565b60405180910390fd5b8060168190555050565b60096020528060005260406000206000915054906101000a900460ff1681565b6115dd612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461166a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611661906148bd565b60405180910390fd5b80601960016101000a81548160ff02191690831515021790555050565b601a60159054906101000a900460ff1681565b60086020528060005260406000206000915054906101000a900460ff1681565b60006116c4612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611751576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611748906148bd565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561179c57600080fd5b505afa1580156117b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d4919061406d565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561183657600080fd5b505afa15801561184a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186e919061406d565b6040518363ffffffff1660e01b815260040161188b9291906146b2565b60206040518083038186803b1580156118a357600080fd5b505afa1580156118b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118db919061406d565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a9c578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561195857600080fd5b505afa15801561196c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611990919061406d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156119f257600080fd5b505afa158015611a06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2a919061406d565b6040518363ffffffff1660e01b8152600401611a479291906146b2565b602060405180830381600087803b158015611a6157600080fd5b505af1158015611a75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a99919061406d565b91505b81601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611ba6612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2a906148bd565b60405180910390fd5b8060178190555050565b601960009054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611ca1612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d25906148bd565b60405180910390fd5b8060188190555050565b611d40612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc4906148bd565b60405180910390fd5b82600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b60185481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b606060028054611f7690614c74565b80601f0160208091040260200160405190810160405280929190818152602001828054611fa290614c74565b8015611fef5780601f10611fc457610100808354040283529160200191611fef565b820191906000526020600020905b815481529060010190602001808311611fd257829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006120e261202c612b50565b846120dd856040518060600160405280602581526020016151746025913960076000612056612b50565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132e69092919063ffffffff16565b612b58565b6001905092915050565b60006121006120f9612b50565b8484612d23565b506001905092915050565b612113612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612197906148bd565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415612233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222a9061485d565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612296612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231a906148bd565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612386612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240a906148bd565b60405180910390fd5b80601a60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161245c9190614765565b60405180910390a150565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b6124b5612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612542576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612539906148bd565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161257d9291906146db565b602060405180830381600087803b15801561259757600080fd5b505af11580156125ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125cf919061422d565b50505050565b60165481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61266a612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ee906148bd565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161271d90614682565b60006040518083038185875af1925050503d806000811461275a576040519150601f19603f3d011682016040523d82523d6000602084013e61275f565b606091505b50509050806127a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279a9061493d565b60405180910390fd5b50565b6127ae612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461283b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612832906148bd565b60405180910390fd5b80601960006101000a81548160ff02191690831515021790555050565b612860612b50565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e4906148bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561295d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612954906147fd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601960019054906101000a900460ff1681565b600080831415612a405760009050612aa2565b60008284612a4e9190614b04565b9050828482612a5d9190614ad3565b14612a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a949061489d565b60405180910390fd5b809150505b92915050565b6000612aea83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613394565b905092915050565b6000808284612b019190614a7d565b905083811015612b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3d9061483d565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbf9061491d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2f9061481d565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612d16919061495d565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8b906148fd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dfb906147bd565b60405180910390fd5b60008211612e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3e906148dd565b60405180910390fd5b601a60149054906101000a900460ff1615612e6e57612e678484846133f7565b90506132df565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612f125750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612f2a5750601960009054906101000a900460ff165b15612f7557601754821115612f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6b9061487d565b60405180910390fd5b5b6000612f8030611c50565b905060006016548210159050808015612fa65750601a60149054906101000a900460ff16155b8015612ffc5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130145750601a60159054906101000a900460ff165b15613022576130216135ca565b5b6130ab846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132e69092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006130fa8787613838565b61310e576131098787876139a3565b613110565b845b9050601960019054906101000a900460ff1680156131785750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131dd5760185461319b8261318d89611c50565b612af290919063ffffffff16565b11156131dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131d3906147dd565b60405180910390fd5b5b61322f81600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612af290919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132cf919061495d565b60405180910390a3600193505050505b9392505050565b600083831115829061332e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613325919061479b565b60405180910390fd5b506000838561333d9190614b5e565b9050809150509392505050565b600061338c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506132e6565b905092915050565b600080831182906133db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133d2919061479b565b60405180910390fd5b50600083856133ea9190614ad3565b9050809150509392505050565b6000613482826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132e69092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061351782600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612af290919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516135b7919061495d565b60405180910390a3600190509392505050565b6001601a60146101000a81548160ff02191690831515021790555060006135f030611c50565b90506000811415613601575061381b565b600061361a601354601254612af290919063ffffffff16565b90506000613635600f54600c54612af290919063ffffffff16565b90506000613650601054600d54612af290919063ffffffff16565b9050600061368c600261367e86613670878a612a2d90919063ffffffff16565b612aa890919063ffffffff16565b612aa890919063ffffffff16565b905060006136a3828761334a90919063ffffffff16565b905060004790506136b382613bc8565b60006136c8824761334a90919063ffffffff16565b905060006136f26136e3600289612aa890919063ffffffff16565b8961334a90919063ffffffff16565b9050600061372e6002613720846137128c88612a2d90919063ffffffff16565b612aa890919063ffffffff16565b612aa890919063ffffffff16565b90506000613757836137498a87612a2d90919063ffffffff16565b612aa890919063ffffffff16565b9050600061378082613772858861334a90919063ffffffff16565b61334a90919063ffffffff16565b905060008211156137b8576137b7600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613e53565b5b60008111156137ee576137ed600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613e53565b5b6000831180156137fe5750600088115b1561380e5761380d8884613e9e565b5b5050505050505050505050505b6000601a60146101000a81548160ff021916908315150217905550565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138db5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156138e9576001905061399d565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061398a5750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613998576000905061399d565b600090505b92915050565b600080600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613a2857613a21601454613a1360125486612a2d90919063ffffffff16565b612aa890919063ffffffff16565b9050613aa7565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613aa657613aa3601454613a9560135486612a2d90919063ffffffff16565b612aa890919063ffffffff16565b90505b5b6000811115613bab57613b0281600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612af290919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613ba2919061495d565b60405180910390a35b613bbe818461334a90919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff811115613be557613be4614d62565b5b604051908082528060200260200182016040528015613c135781602001602082028036833780820191505090505b5090503081600081518110613c2b57613c2a614d33565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613ccd57600080fd5b505afa158015613ce1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d05919061406d565b81600181518110613d1957613d18614d33565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d8030601960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612b58565b601960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613de49594939291906149a8565b600060405180830381600087803b158015613dfe57600080fd5b505af1158015613e12573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613e47929190614978565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613e99573d6000803e3d6000fd5b505050565b613ecb30601960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612b58565b601960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613f5496959493929190614704565b6060604051808303818588803b158015613f6d57600080fd5b505af1158015613f81573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613fa6919061432d565b5050505050565b600081359050613fbc816150ef565b92915050565b600081519050613fd1816150ef565b92915050565b600081359050613fe681615106565b92915050565b600081519050613ffb81615106565b92915050565b6000813590506140108161511d565b92915050565b60008135905061402581615134565b92915050565b60008151905061403a81615134565b92915050565b60006020828403121561405657614055614d91565b5b600061406484828501613fad565b91505092915050565b60006020828403121561408357614082614d91565b5b600061409184828501613fc2565b91505092915050565b600080604083850312156140b1576140b0614d91565b5b60006140bf85828601613fad565b92505060206140d085828601613fad565b9150509250929050565b6000806000606084860312156140f3576140f2614d91565b5b600061410186828701613fad565b935050602061411286828701613fad565b925050604061412386828701613fad565b9150509250925092565b60008060006060848603121561414657614145614d91565b5b600061415486828701613fad565b935050602061416586828701613fad565b925050604061417686828701614016565b9150509250925092565b6000806040838503121561419757614196614d91565b5b60006141a585828601613fad565b92505060206141b685828601613fd7565b9150509250929050565b600080604083850312156141d7576141d6614d91565b5b60006141e585828601613fad565b92505060206141f685828601614016565b9150509250929050565b60006020828403121561421657614215614d91565b5b600061422484828501613fd7565b91505092915050565b60006020828403121561424357614242614d91565b5b600061425184828501613fec565b91505092915050565b60008060006060848603121561427357614272614d91565b5b600061428186828701614001565b935050602061429286828701613fad565b92505060406142a386828701614016565b9150509250925092565b6000602082840312156142c3576142c2614d91565b5b60006142d184828501614016565b91505092915050565b6000806000606084860312156142f3576142f2614d91565b5b600061430186828701614016565b935050602061431286828701614016565b925050604061432386828701614016565b9150509250925092565b60008060006060848603121561434657614345614d91565b5b60006143548682870161402b565b93505060206143658682870161402b565b92505060406143768682870161402b565b9150509250925092565b600061438c8383614398565b60208301905092915050565b6143a181614b92565b82525050565b6143b081614b92565b82525050565b60006143c182614a2d565b6143cb8185614a50565b93506143d683614a1d565b8060005b838110156144075781516143ee8882614380565b97506143f983614a43565b9250506001810190506143da565b5085935050505092915050565b61441d81614ba4565b82525050565b61442c81614bf9565b82525050565b61443b81614c0b565b82525050565b600061444c82614a38565b6144568185614a6c565b9350614466818560208601614c41565b61446f81614d96565b840191505092915050565b6000614487602383614a6c565b915061449282614da7565b604082019050919050565b60006144aa601b83614a6c565b91506144b582614df6565b602082019050919050565b60006144cd602683614a6c565b91506144d882614e1f565b604082019050919050565b60006144f0602283614a6c565b91506144fb82614e6e565b604082019050919050565b6000614513601b83614a6c565b915061451e82614ebd565b602082019050919050565b6000614536600d83614a6c565b915061454182614ee6565b602082019050919050565b6000614559602883614a6c565b915061456482614f0f565b604082019050919050565b600061457c602183614a6c565b915061458782614f5e565b604082019050919050565b600061459f602083614a6c565b91506145aa82614fad565b602082019050919050565b60006145c2602983614a6c565b91506145cd82614fd6565b604082019050919050565b60006145e5602583614a6c565b91506145f082615025565b604082019050919050565b6000614608600083614a61565b915061461382615074565b600082019050919050565b600061462b602483614a6c565b915061463682615077565b604082019050919050565b600061464e601483614a6c565b9150614659826150c6565b602082019050919050565b61466d81614be2565b82525050565b61467c81614bec565b82525050565b600061468d826145fb565b9150819050919050565b60006020820190506146ac60008301846143a7565b92915050565b60006040820190506146c760008301856143a7565b6146d460208301846143a7565b9392505050565b60006040820190506146f060008301856143a7565b6146fd6020830184614664565b9392505050565b600060c08201905061471960008301896143a7565b6147266020830188614664565b6147336040830187614432565b6147406060830186614432565b61474d60808301856143a7565b61475a60a0830184614664565b979650505050505050565b600060208201905061477a6000830184614414565b92915050565b60006020820190506147956000830184614423565b92915050565b600060208201905081810360008301526147b58184614441565b905092915050565b600060208201905081810360008301526147d68161447a565b9050919050565b600060208201905081810360008301526147f68161449d565b9050919050565b60006020820190508181036000830152614816816144c0565b9050919050565b60006020820190508181036000830152614836816144e3565b9050919050565b6000602082019050818103600083015261485681614506565b9050919050565b6000602082019050818103600083015261487681614529565b9050919050565b600060208201905081810360008301526148968161454c565b9050919050565b600060208201905081810360008301526148b68161456f565b9050919050565b600060208201905081810360008301526148d681614592565b9050919050565b600060208201905081810360008301526148f6816145b5565b9050919050565b60006020820190508181036000830152614916816145d8565b9050919050565b600060208201905081810360008301526149368161461e565b9050919050565b6000602082019050818103600083015261495681614641565b9050919050565b60006020820190506149726000830184614664565b92915050565b600060408201905061498d6000830185614664565b818103602083015261499f81846143b6565b90509392505050565b600060a0820190506149bd6000830188614664565b6149ca6020830187614432565b81810360408301526149dc81866143b6565b90506149eb60608301856143a7565b6149f86080830184614664565b9695505050505050565b6000602082019050614a176000830184614673565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000614a8882614be2565b9150614a9383614be2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614ac857614ac7614ca6565b5b828201905092915050565b6000614ade82614be2565b9150614ae983614be2565b925082614af957614af8614cd5565b5b828204905092915050565b6000614b0f82614be2565b9150614b1a83614be2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614b5357614b52614ca6565b5b828202905092915050565b6000614b6982614be2565b9150614b7483614be2565b925082821015614b8757614b86614ca6565b5b828203905092915050565b6000614b9d82614bc2565b9050919050565b60008115159050919050565b6000614bbb82614b92565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614c0482614c1d565b9050919050565b6000614c1682614be2565b9050919050565b6000614c2882614c2f565b9050919050565b6000614c3a82614bc2565b9050919050565b60005b83811015614c5f578082015181840152602081019050614c44565b83811115614c6e576000848401525b50505050565b60006002820490506001821680614c8c57607f821691505b60208210811415614ca057614c9f614d04565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782057616c6c6574204c696d697420457863656564656421210000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4e6f74204368616e676564212100000000000000000000000000000000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b6150f881614b92565b811461510357600080fd5b50565b61510f81614ba4565b811461511a57600080fd5b50565b61512681614bb0565b811461513157600080fd5b50565b61513d81614be2565b811461514857600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d50798115bc43ce63ced2d98228efa7f6ae93339d6a8756827d1f4c1a109555e64736f6c63430008070033

Deployed Bytecode Sourcemap

15545:15643:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19271:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16079:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20441:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29582:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17207:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19548:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15868:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28624:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7221:231;;;;;;;;;;;;;:::i;:::-;;21392:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28314:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15991:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20959:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19457:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29376:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19938:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29776:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16357:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28203:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17322:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16300:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30435:748;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30022:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17124:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19656:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29908:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28945:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15786:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16971:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17049:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16468:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6896:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7121:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19362:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15950:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20164:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21217:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29175:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30310:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30131:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17255:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16409:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27961:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16901:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19787:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27745:176;;;;;;;;;;;;;:::i;:::-;;28099:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7460:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17163:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19271:83;19308:13;19341:5;19334:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19271:83;:::o;16079:81::-;;;:::o;20441:161::-;20516:4;20533:39;20542:12;:10;:12::i;:::-;20556:7;20565:6;20533:8;:39::i;:::-;20590:4;20583:11;;20441:161;;;;:::o;29582:186::-;7040:12;:10;:12::i;:::-;7030:22;;:6;;;;;;;;;;:22;;;7022:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29694:7:::1;29669:32;;:15;:21;29685:4;29669:21;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;29661:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;29753:7;29729:15;:21;29745:4;29729:21;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;29582:186:::0;;:::o;17207:41::-;;;;;;;;;;;;;:::o;19548:100::-;19601:7;19628:12;;19621:19;;19548:100;:::o;15868:75::-;;;;;;;;;;;;;:::o;28624:313::-;7040:12;:10;:12::i;:::-;7030:22;;:6;;;;;;;;;;:22;;;7022:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28752:6:::1;28732:17;:26;;;;28789:10;28769:17;:30;;;;28830:13;28810:17;:33;;;;28866:63;28911:17;;28866:40;28888:17;;28866;;:21;;:40;;;;:::i;:::-;:44;;:63;;;;:::i;:::-;28854:9;:75;;;;28624:313:::0;;;:::o;7221:231::-;7040:12;:10;:12::i;:::-;7030:22;;:6;;;;;;;;;;:22;;;7022:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7329:42:::1;7292:81;;7313:6;::::0;::::1;;;;;;;;7292:81;;;;;;;;;;;;7401:42;7384:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;7221:231::o:0;21392:313::-;21490:4;21507:36;21517:6;21525:9;21536:6;21507:9;:36::i;:::-;;21554:121;21563:6;21571:12;:10;:12::i;:::-;21585:89;21623:6;21585:89;;;;;;;;;;;;;;;;;:11;:19;21597:6;21585:19;;;;;;;;;;;;;;;:33;21605:12;:10;:12::i;:::-;21585:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;21554:8;:121::i;:::-;21693:4;21686:11;;21392:313;;;;;:::o;28314:302::-;7040:12;:10;:12::i;:::-;7030:22;;:6;;;;;;;;;;:22;;;7022:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28437:6:::1;28418:16;:25;;;;28473:10;28454:16;:29;;;;28513:13;28494:16;:32;;;;28548:60;28591:16;;28548:38;28569:16;;28548;;:20;;:38;;;;:::i;:::-;:42;;:60;;;;:::i;:::-;28537:8;:71;;;;28314:302:::0;;;:::o;15991:81::-;;;:::o;20959:156::-;21012:7;21039:68;21084:22;21094:11;21084:9;:22::i;:::-;21039:40;21056:22;21066:11;21056:9;:22::i;:::-;21039:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;21032:75;;20959:156;:::o;19457:83::-;19498:5;19523:9;;;;;;;;;;;19516:16;;19457:83;:::o;29376:198::-;7040:12;:10;:12::i;:::-;7030:22;;:6;;;;;;;;;;:22;;;7022:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29496:7:::1;29467:36;;:19;:25;29487:4;29467:25;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;29459:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;29559:7;29531:19;:25;29551:4;29531:25;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;29376:198:::0;;:::o;19938:218::-;20026:4;20043:83;20052:12;:10;:12::i;:::-;20066:7;20075:50;20114:10;20075:11;:25;20087:12;:10;:12::i;:::-;20075:25;;;;;;;;;;;;;;;:34;20101:7;20075:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;20043:8;:83::i;:::-;20144:4;20137:11;;19938:218;;;;:::o;29776:124::-;7040:12;:10;:12::i;:::-;7030:22;;:6;;;;;;;;;;:22;;;7022:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29884:8:::1;29858:23;:34;;;;29776:124:::0;:::o;16357:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;28203:103::-;7040:12;:10;:12::i;:::-;7030:22;;:6;;;;;;;;;;:22;;;7022:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28291:7:::1;28272:16;;:26;;;;;;;;;;;;;;;;;;28203:103:::0;:::o;17322:40::-;;;;;;;;;;;;;:::o;16300:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;30435:748::-;30515:22;7040:12;:10;:12::i;:::-;7030:22;;:6;;;;;;;;;;:22;;;7022:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30552:35:::1;30609:16;30552:74;;30675:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30657:53;;;30719:4;30726:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30657:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30640:110;;30792:1;30766:28;;:14;:28;;;30763:225;;;30880:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30862:74;;;30945:4;30952:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30862:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30845:131;;30763:225;31014:14;31000:11;;:28;;;;;;;;;;;;;;;;;;31080:16;31062:15;;:34;;;;;;;;;;;;;;;;;;31171:4;31134:12;:34;31155:11;;;;;;;;;;;31134:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;30539:644;30435:748:::0;;;:::o;30022:101::-;7040:12;:10;:12::i;:::-;7030:22;;:6;;;;;;;;;;:22;;;7022:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30107:8:::1;30092:12;:23;;;;30022:101:::0;:::o;17124:32::-;;;;;;;;;;;;;:::o;19656:123::-;19722:7;19748:9;:18;19758:7;19748:18;;;;;;;;;;;;;;;;19741:25;;19656:123;;;:::o;29908:106::-;7040:12;:10;:12::i;:::-;7030:22;;:6;;;;;;;;;;:22;;;7022:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29998:8:::1;29985:10;:21;;;;29908:106:::0;:::o;28945:222::-;7040:12;:10;:12::i;:::-;7030:22;;:6;;;;;;;;;;:22;;;7022:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29069:7:::1;29051:15;;:25;;;;;;;;;;;;;;;;;;29105:10;29087:15;;:28;;;;;;;;;;;;;;;;;;29146:13;29126:17;;:33;;;;;;;;;;;;;;;;;;28945:222:::0;;;:::o;15786:75::-;;;;;;;;;;;;;:::o;16971:60::-;;;;:::o;17049:58::-;;;;:::o;16468:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;6896:79::-;6934:7;6961:6;;;;;;;;;;;6954:13;;6896:79;:::o;7121:92::-;7161:4;7199:6;;;;;;;;;;;7185:20;;:10;:20;;;7178:27;;7121:92;:::o;19362:87::-;19401:13;19434:7;19427:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19362:87;:::o;15950:32::-;;;;;;;;;;;;;:::o;20164:269::-;20257:4;20274:129;20283:12;:10;:12::i;:::-;20297:7;20306:96;20345:15;20306:96;;;;;;;;;;;;;;;;;:11;:25;20318:12;:10;:12::i;:::-;20306:25;;;;;;;;;;;;;;;:34;20332:7;20306:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;20274:8;:129::i;:::-;20421:4;20414:11;;20164:269;;;;:::o;21217:167::-;21295:4;21312:42;21322:12;:10;:12::i;:::-;21336:9;21347:6;21312:9;:42::i;:::-;;21372:4;21365:11;;21217:167;;;;:::o;29175:193::-;7040:12;:10;:12::i;:::-;7030:22;;:6;;;;;;;;;;:22;;;7022:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29292:7:::1;29265:34;;:17;:23;29283:4;29265:23;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;29257:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;29353:7;29327:17;:23;29345:4;29327:23;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;29175:193:::0;;:::o;30310:117::-;7040:12;:10;:12::i;:::-;7030:22;;:6;;;;;;;;;;:22;;;7022:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30412:7:::1;30390:12;:19;30403:5;30390:19;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;30310:117:::0;;:::o;30131:171::-;7040:12;:10;:12::i;:::-;7030:22;;:6;;;;;;;;;;:22;;;7022:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30232:8:::1;30208:21;;:32;;;;;;;;;;;;;;;;;;30256:38;30285:8;30256:38;;;;;;:::i;:::-;;;;;;;;30131:171:::0;:::o;17255:26::-;;;;;;;;;;;;;:::o;16409:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;27961:130::-;7040:12;:10;:12::i;:::-;7030:22;;:6;;;;;;;;;;:22;;;7022:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28053:3:::1;:12;;;28066:9;28076:6;28053:30;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27961:130:::0;;;:::o;16901:61::-;;;;:::o;19787:143::-;19868:7;19895:11;:18;19907:5;19895:18;;;;;;;;;;;;;;;:27;19914:7;19895:27;;;;;;;;;;;;;;;;19888:34;;19787:143;;;;:::o;27745:176::-;7040:12;:10;:12::i;:::-;7030:22;;:6;;;;;;;;;;:22;;;7022:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27798:7:::1;27818:10;27810:24;;27842:21;27810:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27797:71;;;27887:2;27879:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;27785:136;27745:176::o:0;28099:96::-;7040:12;:10;:12::i;:::-;7030:22;;:6;;;;;;;;;;:22;;;7022:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28180:7:::1;28164:13;;:23;;;;;;;;;;;;;;;;;;28099:96:::0;:::o;7460:244::-;7040:12;:10;:12::i;:::-;7030:22;;:6;;;;;;;;;;:22;;;7022:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7569:1:::1;7549:22;;:8;:22;;;;7541:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7659:8;7630:38;;7651:6;::::0;::::1;;;;;;;;7630:38;;;;;;;;;;;;7688:8;7679:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;7460:244:::0;:::o;17163:35::-;;;;;;;;;;;;;:::o;3206:250::-;3264:7;3293:1;3288;:6;3284:47;;;3318:1;3311:8;;;;3284:47;3343:9;3359:1;3355;:5;;;;:::i;:::-;3343:17;;3388:1;3383;3379;:5;;;;:::i;:::-;:10;3371:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3447:1;3440:8;;;3206:250;;;;;:::o;3464:132::-;3522:7;3549:39;3553:1;3556;3549:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3542:46;;3464:132;;;;:::o;2673:181::-;2731:7;2751:9;2767:1;2763;:5;;;;:::i;:::-;2751:17;;2792:1;2787;:6;;2779:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2845:1;2838:8;;;2673:181;;;;:::o;1724:115::-;1777:15;1820:10;1805:26;;1724:115;:::o;20610:337::-;20720:1;20703:19;;:5;:19;;;;20695:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20801:1;20782:21;;:7;:21;;;;20774:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20885:6;20855:11;:18;20867:5;20855:18;;;;;;;;;;;;;;;:27;20874:7;20855:27;;;;;;;;;;;;;;;:36;;;;20923:7;20907:32;;20916:5;20907:32;;;20932:6;20907:32;;;;;;:::i;:::-;;;;;;;;20610:337;;;:::o;21713:1634::-;21800:4;21845:1;21827:20;;:6;:20;;;;21819:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21929:1;21908:23;;:9;:23;;;;21900:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21999:1;21990:6;:10;21982:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22070:16;;;;;;;;;;;22067:1273;;;22120:41;22135:6;22143:9;22154:6;22120:14;:41::i;:::-;22113:48;;;;22067:1273;22219:15;:23;22235:6;22219:23;;;;;;;;;;;;;;;;;;;;;;;;;22218:24;:55;;;;;22247:15;:26;22263:9;22247:26;;;;;;;;;;;;;;;;;;;;;;;;;22246:27;22218:55;:72;;;;;22277:13;;;;;;;;;;;22218:72;22215:187;;;22329:12;;22319:6;:22;;22311:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;22215:187;22419:28;22450:24;22468:4;22450:9;:24::i;:::-;22419:55;;22489:28;22544:23;;22520:20;:47;;22489:78;;22600:23;:44;;;;;22628:16;;;;;;;;;;;22627:17;22600:44;:69;;;;;22649:12;:20;22662:6;22649:20;;;;;;;;;;;;;;;;;;;;;;;;;22648:21;22600:69;:94;;;;;22673:21;;;;;;;;;;;22600:94;22596:165;;;22729:16;:14;:16::i;:::-;22596:165;22797:53;22819:6;22797:53;;;;;;;;;;;;;;;;;:9;:17;22807:6;22797:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;22777:9;:17;22787:6;22777:17;;;;;;;;;;;;;;;:73;;;;22867:19;22889:31;22903:6;22910:9;22889:13;:31::i;:::-;:77;;22932:34;22940:6;22948:9;22959:6;22932:7;:34::i;:::-;22889:77;;;22923:6;22889:77;22867:99;;22986:16;;;;;;;;;;;:51;;;;;23007:19;:30;23027:9;23007:30;;;;;;;;;;;;;;;;;;;;;;;;;23006:31;22986:51;22983:181;;;23107:10;;23066:37;23091:11;23066:20;23076:9;23066;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;23058:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;22983:181;23203:37;23228:11;23203:9;:20;23213:9;23203:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;23180:9;:20;23190:9;23180:20;;;;;;;;;;;;;;;:60;;;;23279:9;23262:40;;23271:6;23262:40;;;23290:11;23262:40;;;;;;:::i;:::-;;;;;;;;23324:4;23317:11;;;;;21713:1634;;;;;;:::o;3006:192::-;3092:7;3125:1;3120;:6;;3128:12;3112:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3152:9;3168:1;3164;:5;;;;:::i;:::-;3152:17;;3189:1;3182:8;;;3006:192;;;;;:::o;2862:136::-;2920:7;2947:43;2951:1;2954;2947:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2940:50;;2862:136;;;;:::o;3604:278::-;3690:7;3722:1;3718;:5;3725:12;3710:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3749:9;3765:1;3761;:5;;;;:::i;:::-;3749:17;;3873:1;3866:8;;;3604:278;;;;;:::o;23355:330::-;23448:4;23485:53;23507:6;23485:53;;;;;;;;;;;;;;;;;:9;:17;23495:6;23485:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;23465:9;:17;23475:6;23465:17;;;;;;;;;;;;;;;:73;;;;23572:32;23597:6;23572:9;:20;23582:9;23572:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;23549:9;:20;23559:9;23549:20;;;;;;;;;;;;;;;:55;;;;23637:9;23620:35;;23629:6;23620:35;;;23648:6;23620:35;;;;;;:::i;:::-;;;;;;;;23673:4;23666:11;;23355:330;;;;;:::o;23693:1425::-;17806:4;17787:16;;:23;;;;;;;;;;;;;;;;;;23752::::1;23778:24;23796:4;23778:9;:24::i;:::-;23752:50;;23837:1;23818:15;:20;23815:32;;;23840:7;;;23815:32;23859:19;23881:23;23894:9;;23881:8;;:12;;:23;;;;:::i;:::-;23859:45;;23915:23;23941:39;23962:17;;23941:16;;:20;;:39;;;;:::i;:::-;23915:65;;23991:23;24017:39;24038:17;;24017:16;;:20;;:39;;;;:::i;:::-;23991:65;;24069:19;24091:60;24149:1;24091:53;24132:11;24091:36;24111:15;24091;:19;;:36;;;;:::i;:::-;:40;;:53;;;;:::i;:::-;:57;;:60;;;;:::i;:::-;24069:82;;24162:21;24186:32;24206:11;24186:15;:19;;:32;;;;:::i;:::-;24162:56;;24231:22;24256:21;24231:46;;24288:31;24305:13;24288:16;:31::i;:::-;24330:22;24355:41;24381:14;24355:21;:25;;:41;;;;:::i;:::-;24330:66;;24409:19;24431:39;24447:22;24467:1;24447:15;:19;;:22;;;;:::i;:::-;24431:11;:15;;:39;;;;:::i;:::-;24409:61;;24491:26;24520:59;24577:1;24520:52;24560:11;24520:35;24539:15;24520:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;24491:88;;24590:26;24619:52;24659:11;24619:35;24638:15;24619:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;24590:81;;24682:26;24711:62;24754:18;24711:38;24730:18;24711:14;:18;;:38;;;;:::i;:::-;:42;;:62;;;;:::i;:::-;24682:91;;24810:1;24789:18;:22;24786:97;;;24826:57;24847:15;;;;;;;;;;;24864:18;24826:20;:57::i;:::-;24786:97;24920:1;24899:18;:22;24896:97;;;24936:57;24957:15;;;;;;;;;;;24974:18;24936:20;:57::i;:::-;24896:97;25030:1;25009:18;:22;:41;;;;;25049:1;25035:11;:15;25009:41;25006:104;;;25065:45;25078:11;25091:18;25065:12;:45::i;:::-;25006:104;23739:1379;;;;;;;;;;;;17821:1;17852:5:::0;17833:16;;:24;;;;;;;;;;;;;;;;;;23693:1425::o;26470:366::-;26551:4;26571:17;:25;26589:6;26571:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;26600:17;:28;26618:9;26600:28;;;;;;;;;;;;;;;;;;;;;;;;;26571:57;26568:261;;;26652:4;26645:11;;;;26568:261;26687:12;:20;26700:6;26687:20;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;26711:12;:23;26724:9;26711:23;;;;;;;;;;;;;;;;;;;;;;;;;26687:47;26683:146;;;26758:5;26751:12;;;;26683:146;26812:5;26805:12;;26470:366;;;;;:::o;26844:724::-;26930:7;26960:14;27017:12;:20;27030:6;27017:20;;;;;;;;;;;;;;;;;;;;;;;;;27014:275;;;27084:37;27109:11;;27084:20;27095:8;;27084:6;:10;;:20;;;;:::i;:::-;:24;;:37;;;;:::i;:::-;27072:49;;27014:275;;;27159:12;:23;27172:9;27159:23;;;;;;;;;;;;;;;;;;;;;;;;;27156:133;;;27217:38;27243:11;;27217:21;27228:9;;27217:6;:10;;:21;;;;:::i;:::-;:25;;:38;;;;:::i;:::-;27205:50;;27156:133;27014:275;27325:1;27313:9;:13;27310:185;;;27374:39;27403:9;27374;:24;27392:4;27374:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;27347:9;:24;27365:4;27347:24;;;;;;;;;;;;;;;:66;;;;27462:4;27437:42;;27446:6;27437:42;;;27469:9;27437:42;;;;;;:::i;:::-;;;;;;;;27310:185;27518:21;27529:9;27518:6;:10;;:21;;;;:::i;:::-;27511:28;;;26844:724;;;;;:::o;25265:666::-;25391:21;25429:1;25415:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25391:40;;25460:4;25442;25447:1;25442:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;25486:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25476:4;25481:1;25476:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;25521:62;25538:4;25553:15;;;;;;;;;;;25571:11;25521:8;:62::i;:::-;25622:15;;;;;;;;;;;:66;;;25703:11;25729:1;25773:4;25800;25836:15;25622:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25888:35;25905:11;25918:4;25888:35;;;;;;;:::i;:::-;;;;;;;;25320:611;25265:666;:::o;25126:127::-;25218:9;25210:27;;:35;25238:6;25210:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25126:127;;:::o;25939:523::-;26087:62;26104:4;26119:15;;;;;;;;;;;26137:11;26087:8;:62::i;:::-;26192:15;;;;;;;;;;;:31;;;26231:9;26264:4;26284:11;26310:1;26353;26396:17;;;;;;;;;;;26428:15;26192:262;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25939:523;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;301:133;;;;:::o;440:137::-;494:5;525:6;519:13;510:22;;541:30;565:5;541:30;:::i;:::-;440:137;;;;:::o;583:165::-;642:5;680:6;667:20;658:29;;696:46;736:5;696:46;:::i;:::-;583:165;;;;:::o;754:139::-;800:5;838:6;825:20;816:29;;854:33;881:5;854:33;:::i;:::-;754:139;;;;:::o;899:143::-;956:5;987:6;981:13;972:22;;1003:33;1030:5;1003:33;:::i;:::-;899:143;;;;:::o;1048:329::-;1107:6;1156:2;1144:9;1135:7;1131:23;1127:32;1124:119;;;1162:79;;:::i;:::-;1124:119;1282:1;1307:53;1352:7;1343:6;1332:9;1328:22;1307:53;:::i;:::-;1297:63;;1253:117;1048:329;;;;:::o;1383:351::-;1453:6;1502:2;1490:9;1481:7;1477:23;1473:32;1470:119;;;1508:79;;:::i;:::-;1470:119;1628:1;1653:64;1709:7;1700:6;1689:9;1685:22;1653:64;:::i;:::-;1643:74;;1599:128;1383:351;;;;:::o;1740:474::-;1808:6;1816;1865:2;1853:9;1844:7;1840:23;1836:32;1833:119;;;1871:79;;:::i;:::-;1833:119;1991:1;2016:53;2061:7;2052:6;2041:9;2037:22;2016:53;:::i;:::-;2006:63;;1962:117;2118:2;2144:53;2189:7;2180:6;2169:9;2165:22;2144:53;:::i;:::-;2134:63;;2089:118;1740:474;;;;;:::o;2220:619::-;2297:6;2305;2313;2362:2;2350:9;2341:7;2337:23;2333:32;2330:119;;;2368:79;;:::i;:::-;2330:119;2488:1;2513:53;2558:7;2549:6;2538:9;2534:22;2513:53;:::i;:::-;2503:63;;2459:117;2615:2;2641:53;2686:7;2677:6;2666:9;2662:22;2641:53;:::i;:::-;2631:63;;2586:118;2743:2;2769:53;2814:7;2805:6;2794:9;2790:22;2769:53;:::i;:::-;2759:63;;2714:118;2220:619;;;;;:::o;2845:::-;2922:6;2930;2938;2987:2;2975:9;2966:7;2962:23;2958:32;2955:119;;;2993:79;;:::i;:::-;2955:119;3113:1;3138:53;3183:7;3174:6;3163:9;3159:22;3138:53;:::i;:::-;3128:63;;3084:117;3240:2;3266:53;3311:7;3302:6;3291:9;3287:22;3266:53;:::i;:::-;3256:63;;3211:118;3368:2;3394:53;3439:7;3430:6;3419:9;3415:22;3394:53;:::i;:::-;3384:63;;3339:118;2845:619;;;;;:::o;3470:468::-;3535:6;3543;3592:2;3580:9;3571:7;3567:23;3563:32;3560:119;;;3598:79;;:::i;:::-;3560:119;3718:1;3743:53;3788:7;3779:6;3768:9;3764:22;3743:53;:::i;:::-;3733:63;;3689:117;3845:2;3871:50;3913:7;3904:6;3893:9;3889:22;3871:50;:::i;:::-;3861:60;;3816:115;3470:468;;;;;:::o;3944:474::-;4012:6;4020;4069:2;4057:9;4048:7;4044:23;4040:32;4037:119;;;4075:79;;:::i;:::-;4037:119;4195:1;4220:53;4265:7;4256:6;4245:9;4241:22;4220:53;:::i;:::-;4210:63;;4166:117;4322:2;4348:53;4393:7;4384:6;4373:9;4369:22;4348:53;:::i;:::-;4338:63;;4293:118;3944:474;;;;;:::o;4424:323::-;4480:6;4529:2;4517:9;4508:7;4504:23;4500:32;4497:119;;;4535:79;;:::i;:::-;4497:119;4655:1;4680:50;4722:7;4713:6;4702:9;4698:22;4680:50;:::i;:::-;4670:60;;4626:114;4424:323;;;;:::o;4753:345::-;4820:6;4869:2;4857:9;4848:7;4844:23;4840:32;4837:119;;;4875:79;;:::i;:::-;4837:119;4995:1;5020:61;5073:7;5064:6;5053:9;5049:22;5020:61;:::i;:::-;5010:71;;4966:125;4753:345;;;;:::o;5104:645::-;5194:6;5202;5210;5259:2;5247:9;5238:7;5234:23;5230:32;5227:119;;;5265:79;;:::i;:::-;5227:119;5385:1;5410:66;5468:7;5459:6;5448:9;5444:22;5410:66;:::i;:::-;5400:76;;5356:130;5525:2;5551:53;5596:7;5587:6;5576:9;5572:22;5551:53;:::i;:::-;5541:63;;5496:118;5653:2;5679:53;5724:7;5715:6;5704:9;5700:22;5679:53;:::i;:::-;5669:63;;5624:118;5104:645;;;;;:::o;5755:329::-;5814:6;5863:2;5851:9;5842:7;5838:23;5834:32;5831:119;;;5869:79;;:::i;:::-;5831:119;5989:1;6014:53;6059:7;6050:6;6039:9;6035:22;6014:53;:::i;:::-;6004:63;;5960:117;5755:329;;;;:::o;6090:619::-;6167:6;6175;6183;6232:2;6220:9;6211:7;6207:23;6203:32;6200:119;;;6238:79;;:::i;:::-;6200:119;6358:1;6383:53;6428:7;6419:6;6408:9;6404:22;6383:53;:::i;:::-;6373:63;;6329:117;6485:2;6511:53;6556:7;6547:6;6536:9;6532:22;6511:53;:::i;:::-;6501:63;;6456:118;6613:2;6639:53;6684:7;6675:6;6664:9;6660:22;6639:53;:::i;:::-;6629:63;;6584:118;6090:619;;;;;:::o;6715:663::-;6803:6;6811;6819;6868:2;6856:9;6847:7;6843:23;6839:32;6836:119;;;6874:79;;:::i;:::-;6836:119;6994:1;7019:64;7075:7;7066:6;7055:9;7051:22;7019:64;:::i;:::-;7009:74;;6965:128;7132:2;7158:64;7214:7;7205:6;7194:9;7190:22;7158:64;:::i;:::-;7148:74;;7103:129;7271:2;7297:64;7353:7;7344:6;7333:9;7329:22;7297:64;:::i;:::-;7287:74;;7242:129;6715:663;;;;;:::o;7384:179::-;7453:10;7474:46;7516:3;7508:6;7474:46;:::i;:::-;7552:4;7547:3;7543:14;7529:28;;7384:179;;;;:::o;7569:108::-;7646:24;7664:5;7646:24;:::i;:::-;7641:3;7634:37;7569:108;;:::o;7683:118::-;7770:24;7788:5;7770:24;:::i;:::-;7765:3;7758:37;7683:118;;:::o;7837:732::-;7956:3;7985:54;8033:5;7985:54;:::i;:::-;8055:86;8134:6;8129:3;8055:86;:::i;:::-;8048:93;;8165:56;8215:5;8165:56;:::i;:::-;8244:7;8275:1;8260:284;8285:6;8282:1;8279:13;8260:284;;;8361:6;8355:13;8388:63;8447:3;8432:13;8388:63;:::i;:::-;8381:70;;8474:60;8527:6;8474:60;:::i;:::-;8464:70;;8320:224;8307:1;8304;8300:9;8295:14;;8260:284;;;8264:14;8560:3;8553:10;;7961:608;;;7837:732;;;;:::o;8575:109::-;8656:21;8671:5;8656:21;:::i;:::-;8651:3;8644:34;8575:109;;:::o;8690:185::-;8804:64;8862:5;8804:64;:::i;:::-;8799:3;8792:77;8690:185;;:::o;8881:147::-;8976:45;9015:5;8976:45;:::i;:::-;8971:3;8964:58;8881:147;;:::o;9034:364::-;9122:3;9150:39;9183:5;9150:39;:::i;:::-;9205:71;9269:6;9264:3;9205:71;:::i;:::-;9198:78;;9285:52;9330:6;9325:3;9318:4;9311:5;9307:16;9285:52;:::i;:::-;9362:29;9384:6;9362:29;:::i;:::-;9357:3;9353:39;9346:46;;9126:272;9034:364;;;;:::o;9404:366::-;9546:3;9567:67;9631:2;9626:3;9567:67;:::i;:::-;9560:74;;9643:93;9732:3;9643:93;:::i;:::-;9761:2;9756:3;9752:12;9745:19;;9404:366;;;:::o;9776:::-;9918:3;9939:67;10003:2;9998:3;9939:67;:::i;:::-;9932:74;;10015:93;10104:3;10015:93;:::i;:::-;10133:2;10128:3;10124:12;10117:19;;9776:366;;;:::o;10148:::-;10290:3;10311:67;10375:2;10370:3;10311:67;:::i;:::-;10304:74;;10387:93;10476:3;10387:93;:::i;:::-;10505:2;10500:3;10496:12;10489:19;;10148:366;;;:::o;10520:::-;10662:3;10683:67;10747:2;10742:3;10683:67;:::i;:::-;10676:74;;10759:93;10848:3;10759:93;:::i;:::-;10877:2;10872:3;10868:12;10861:19;;10520:366;;;:::o;10892:::-;11034:3;11055:67;11119:2;11114:3;11055:67;:::i;:::-;11048:74;;11131:93;11220:3;11131:93;:::i;:::-;11249:2;11244:3;11240:12;11233:19;;10892:366;;;:::o;11264:::-;11406:3;11427:67;11491:2;11486:3;11427:67;:::i;:::-;11420:74;;11503:93;11592:3;11503:93;:::i;:::-;11621:2;11616:3;11612:12;11605:19;;11264:366;;;:::o;11636:::-;11778:3;11799:67;11863:2;11858:3;11799:67;:::i;:::-;11792:74;;11875:93;11964:3;11875:93;:::i;:::-;11993:2;11988:3;11984:12;11977:19;;11636:366;;;:::o;12008:::-;12150:3;12171:67;12235:2;12230:3;12171:67;:::i;:::-;12164:74;;12247:93;12336:3;12247:93;:::i;:::-;12365:2;12360:3;12356:12;12349:19;;12008:366;;;:::o;12380:::-;12522:3;12543:67;12607:2;12602:3;12543:67;:::i;:::-;12536:74;;12619:93;12708:3;12619:93;:::i;:::-;12737:2;12732:3;12728:12;12721:19;;12380:366;;;:::o;12752:::-;12894:3;12915:67;12979:2;12974:3;12915:67;:::i;:::-;12908:74;;12991:93;13080:3;12991:93;:::i;:::-;13109:2;13104:3;13100:12;13093:19;;12752:366;;;:::o;13124:::-;13266:3;13287:67;13351:2;13346:3;13287:67;:::i;:::-;13280:74;;13363:93;13452:3;13363:93;:::i;:::-;13481:2;13476:3;13472:12;13465:19;;13124:366;;;:::o;13496:398::-;13655:3;13676:83;13757:1;13752:3;13676:83;:::i;:::-;13669:90;;13768:93;13857:3;13768:93;:::i;:::-;13886:1;13881:3;13877:11;13870:18;;13496:398;;;:::o;13900:366::-;14042:3;14063:67;14127:2;14122:3;14063:67;:::i;:::-;14056:74;;14139:93;14228:3;14139:93;:::i;:::-;14257:2;14252:3;14248:12;14241:19;;13900:366;;;:::o;14272:::-;14414:3;14435:67;14499:2;14494:3;14435:67;:::i;:::-;14428:74;;14511:93;14600:3;14511:93;:::i;:::-;14629:2;14624:3;14620:12;14613:19;;14272:366;;;:::o;14644:118::-;14731:24;14749:5;14731:24;:::i;:::-;14726:3;14719:37;14644:118;;:::o;14768:112::-;14851:22;14867:5;14851:22;:::i;:::-;14846:3;14839:35;14768:112;;:::o;14886:379::-;15070:3;15092:147;15235:3;15092:147;:::i;:::-;15085:154;;15256:3;15249:10;;14886:379;;;:::o;15271:222::-;15364:4;15402:2;15391:9;15387:18;15379:26;;15415:71;15483:1;15472:9;15468:17;15459:6;15415:71;:::i;:::-;15271:222;;;;:::o;15499:332::-;15620:4;15658:2;15647:9;15643:18;15635:26;;15671:71;15739:1;15728:9;15724:17;15715:6;15671:71;:::i;:::-;15752:72;15820:2;15809:9;15805:18;15796:6;15752:72;:::i;:::-;15499:332;;;;;:::o;15837:::-;15958:4;15996:2;15985:9;15981:18;15973:26;;16009:71;16077:1;16066:9;16062:17;16053:6;16009:71;:::i;:::-;16090:72;16158:2;16147:9;16143:18;16134:6;16090:72;:::i;:::-;15837:332;;;;;:::o;16175:807::-;16424:4;16462:3;16451:9;16447:19;16439:27;;16476:71;16544:1;16533:9;16529:17;16520:6;16476:71;:::i;:::-;16557:72;16625:2;16614:9;16610:18;16601:6;16557:72;:::i;:::-;16639:80;16715:2;16704:9;16700:18;16691:6;16639:80;:::i;:::-;16729;16805:2;16794:9;16790:18;16781:6;16729:80;:::i;:::-;16819:73;16887:3;16876:9;16872:19;16863:6;16819:73;:::i;:::-;16902;16970:3;16959:9;16955:19;16946:6;16902:73;:::i;:::-;16175:807;;;;;;;;;:::o;16988:210::-;17075:4;17113:2;17102:9;17098:18;17090:26;;17126:65;17188:1;17177:9;17173:17;17164:6;17126:65;:::i;:::-;16988:210;;;;:::o;17204:276::-;17324:4;17362:2;17351:9;17347:18;17339:26;;17375:98;17470:1;17459:9;17455:17;17446:6;17375:98;:::i;:::-;17204:276;;;;:::o;17486:313::-;17599:4;17637:2;17626:9;17622:18;17614:26;;17686:9;17680:4;17676:20;17672:1;17661:9;17657:17;17650:47;17714:78;17787:4;17778:6;17714:78;:::i;:::-;17706:86;;17486:313;;;;:::o;17805:419::-;17971:4;18009:2;17998:9;17994:18;17986:26;;18058:9;18052:4;18048:20;18044:1;18033:9;18029:17;18022:47;18086:131;18212:4;18086:131;:::i;:::-;18078:139;;17805:419;;;:::o;18230:::-;18396:4;18434:2;18423:9;18419:18;18411:26;;18483:9;18477:4;18473:20;18469:1;18458:9;18454:17;18447:47;18511:131;18637:4;18511:131;:::i;:::-;18503:139;;18230:419;;;:::o;18655:::-;18821:4;18859:2;18848:9;18844:18;18836:26;;18908:9;18902:4;18898:20;18894:1;18883:9;18879:17;18872:47;18936:131;19062:4;18936:131;:::i;:::-;18928:139;;18655:419;;;:::o;19080:::-;19246:4;19284:2;19273:9;19269:18;19261:26;;19333:9;19327:4;19323:20;19319:1;19308:9;19304:17;19297:47;19361:131;19487:4;19361:131;:::i;:::-;19353:139;;19080:419;;;:::o;19505:::-;19671:4;19709:2;19698:9;19694:18;19686:26;;19758:9;19752:4;19748:20;19744:1;19733:9;19729:17;19722:47;19786:131;19912:4;19786:131;:::i;:::-;19778:139;;19505:419;;;:::o;19930:::-;20096:4;20134:2;20123:9;20119:18;20111:26;;20183:9;20177:4;20173:20;20169:1;20158:9;20154:17;20147:47;20211:131;20337:4;20211:131;:::i;:::-;20203:139;;19930:419;;;:::o;20355:::-;20521:4;20559:2;20548:9;20544:18;20536:26;;20608:9;20602:4;20598:20;20594:1;20583:9;20579:17;20572:47;20636:131;20762:4;20636:131;:::i;:::-;20628:139;;20355:419;;;:::o;20780:::-;20946:4;20984:2;20973:9;20969:18;20961:26;;21033:9;21027:4;21023:20;21019:1;21008:9;21004:17;20997:47;21061:131;21187:4;21061:131;:::i;:::-;21053:139;;20780:419;;;:::o;21205:::-;21371:4;21409:2;21398:9;21394:18;21386:26;;21458:9;21452:4;21448:20;21444:1;21433:9;21429:17;21422:47;21486:131;21612:4;21486:131;:::i;:::-;21478:139;;21205:419;;;:::o;21630:::-;21796:4;21834:2;21823:9;21819:18;21811:26;;21883:9;21877:4;21873:20;21869:1;21858:9;21854:17;21847:47;21911:131;22037:4;21911:131;:::i;:::-;21903:139;;21630:419;;;:::o;22055:::-;22221:4;22259:2;22248:9;22244:18;22236:26;;22308:9;22302:4;22298:20;22294:1;22283:9;22279:17;22272:47;22336:131;22462:4;22336:131;:::i;:::-;22328:139;;22055:419;;;:::o;22480:::-;22646:4;22684:2;22673:9;22669:18;22661:26;;22733:9;22727:4;22723:20;22719:1;22708:9;22704:17;22697:47;22761:131;22887:4;22761:131;:::i;:::-;22753:139;;22480:419;;;:::o;22905:::-;23071:4;23109:2;23098:9;23094:18;23086:26;;23158:9;23152:4;23148:20;23144:1;23133:9;23129:17;23122:47;23186:131;23312:4;23186:131;:::i;:::-;23178:139;;22905:419;;;:::o;23330:222::-;23423:4;23461:2;23450:9;23446:18;23438:26;;23474:71;23542:1;23531:9;23527:17;23518:6;23474:71;:::i;:::-;23330:222;;;;:::o;23558:483::-;23729:4;23767:2;23756:9;23752:18;23744:26;;23780:71;23848:1;23837:9;23833:17;23824:6;23780:71;:::i;:::-;23898:9;23892:4;23888:20;23883:2;23872:9;23868:18;23861:48;23926:108;24029:4;24020:6;23926:108;:::i;:::-;23918:116;;23558:483;;;;;:::o;24047:831::-;24310:4;24348:3;24337:9;24333:19;24325:27;;24362:71;24430:1;24419:9;24415:17;24406:6;24362:71;:::i;:::-;24443:80;24519:2;24508:9;24504:18;24495:6;24443:80;:::i;:::-;24570:9;24564:4;24560:20;24555:2;24544:9;24540:18;24533:48;24598:108;24701:4;24692:6;24598:108;:::i;:::-;24590:116;;24716:72;24784:2;24773:9;24769:18;24760:6;24716:72;:::i;:::-;24798:73;24866:3;24855:9;24851:19;24842:6;24798:73;:::i;:::-;24047:831;;;;;;;;:::o;24884:214::-;24973:4;25011:2;25000:9;24996:18;24988:26;;25024:67;25088:1;25077:9;25073:17;25064:6;25024:67;:::i;:::-;24884:214;;;;:::o;25185:132::-;25252:4;25275:3;25267:11;;25305:4;25300:3;25296:14;25288:22;;25185:132;;;:::o;25323:114::-;25390:6;25424:5;25418:12;25408:22;;25323:114;;;:::o;25443:99::-;25495:6;25529:5;25523:12;25513:22;;25443:99;;;:::o;25548:113::-;25618:4;25650;25645:3;25641:14;25633:22;;25548:113;;;:::o;25667:184::-;25766:11;25800:6;25795:3;25788:19;25840:4;25835:3;25831:14;25816:29;;25667:184;;;;:::o;25857:147::-;25958:11;25995:3;25980:18;;25857:147;;;;:::o;26010:169::-;26094:11;26128:6;26123:3;26116:19;26168:4;26163:3;26159:14;26144:29;;26010:169;;;;:::o;26185:305::-;26225:3;26244:20;26262:1;26244:20;:::i;:::-;26239:25;;26278:20;26296:1;26278:20;:::i;:::-;26273:25;;26432:1;26364:66;26360:74;26357:1;26354:81;26351:107;;;26438:18;;:::i;:::-;26351:107;26482:1;26479;26475:9;26468:16;;26185:305;;;;:::o;26496:185::-;26536:1;26553:20;26571:1;26553:20;:::i;:::-;26548:25;;26587:20;26605:1;26587:20;:::i;:::-;26582:25;;26626:1;26616:35;;26631:18;;:::i;:::-;26616:35;26673:1;26670;26666:9;26661:14;;26496:185;;;;:::o;26687:348::-;26727:7;26750:20;26768:1;26750:20;:::i;:::-;26745:25;;26784:20;26802:1;26784:20;:::i;:::-;26779:25;;26972:1;26904:66;26900:74;26897:1;26894:81;26889:1;26882:9;26875:17;26871:105;26868:131;;;26979:18;;:::i;:::-;26868:131;27027:1;27024;27020:9;27009:20;;26687:348;;;;:::o;27041:191::-;27081:4;27101:20;27119:1;27101:20;:::i;:::-;27096:25;;27135:20;27153:1;27135:20;:::i;:::-;27130:25;;27174:1;27171;27168:8;27165:34;;;27179:18;;:::i;:::-;27165:34;27224:1;27221;27217:9;27209:17;;27041:191;;;;:::o;27238:96::-;27275:7;27304:24;27322:5;27304:24;:::i;:::-;27293:35;;27238:96;;;:::o;27340:90::-;27374:7;27417:5;27410:13;27403:21;27392:32;;27340:90;;;:::o;27436:109::-;27486:7;27515:24;27533:5;27515:24;:::i;:::-;27504:35;;27436:109;;;:::o;27551:126::-;27588:7;27628:42;27621:5;27617:54;27606:65;;27551:126;;;:::o;27683:77::-;27720:7;27749:5;27738:16;;27683:77;;;:::o;27766:86::-;27801:7;27841:4;27834:5;27830:16;27819:27;;27766:86;;;:::o;27858:153::-;27935:9;27968:37;27999:5;27968:37;:::i;:::-;27955:50;;27858:153;;;:::o;28017:121::-;28075:9;28108:24;28126:5;28108:24;:::i;:::-;28095:37;;28017:121;;;:::o;28144:126::-;28194:9;28227:37;28258:5;28227:37;:::i;:::-;28214:50;;28144:126;;;:::o;28276:113::-;28326:9;28359:24;28377:5;28359:24;:::i;:::-;28346:37;;28276:113;;;:::o;28395:307::-;28463:1;28473:113;28487:6;28484:1;28481:13;28473:113;;;28572:1;28567:3;28563:11;28557:18;28553:1;28548:3;28544:11;28537:39;28509:2;28506:1;28502:10;28497:15;;28473:113;;;28604:6;28601:1;28598:13;28595:101;;;28684:1;28675:6;28670:3;28666:16;28659:27;28595:101;28444:258;28395:307;;;:::o;28708:320::-;28752:6;28789:1;28783:4;28779:12;28769:22;;28836:1;28830:4;28826:12;28857:18;28847:81;;28913:4;28905:6;28901:17;28891:27;;28847:81;28975:2;28967:6;28964:14;28944:18;28941:38;28938:84;;;28994:18;;:::i;:::-;28938:84;28759:269;28708:320;;;:::o;29034:180::-;29082:77;29079:1;29072:88;29179:4;29176:1;29169:15;29203:4;29200:1;29193:15;29220:180;29268:77;29265:1;29258:88;29365:4;29362:1;29355:15;29389:4;29386:1;29379:15;29406:180;29454:77;29451:1;29444:88;29551:4;29548:1;29541:15;29575:4;29572:1;29565:15;29592:180;29640:77;29637:1;29630:88;29737:4;29734:1;29727:15;29761:4;29758:1;29751:15;29778:180;29826:77;29823:1;29816:88;29923:4;29920:1;29913:15;29947:4;29944:1;29937:15;30087:117;30196:1;30193;30186:12;30210:102;30251:6;30302:2;30298:7;30293:2;30286:5;30282:14;30278:28;30268:38;;30210:102;;;:::o;30318:222::-;30458:34;30454:1;30446:6;30442:14;30435:58;30527:5;30522:2;30514:6;30510:15;30503:30;30318:222;:::o;30546:177::-;30686:29;30682:1;30674:6;30670:14;30663:53;30546:177;:::o;30729:225::-;30869:34;30865:1;30857:6;30853:14;30846:58;30938:8;30933:2;30925:6;30921:15;30914:33;30729:225;:::o;30960:221::-;31100:34;31096:1;31088:6;31084:14;31077:58;31169:4;31164:2;31156:6;31152:15;31145:29;30960:221;:::o;31187:177::-;31327:29;31323:1;31315:6;31311:14;31304:53;31187:177;:::o;31370:163::-;31510:15;31506:1;31498:6;31494:14;31487:39;31370:163;:::o;31539:227::-;31679:34;31675:1;31667:6;31663:14;31656:58;31748:10;31743:2;31735:6;31731:15;31724:35;31539:227;:::o;31772:220::-;31912:34;31908:1;31900:6;31896:14;31889:58;31981:3;31976:2;31968:6;31964:15;31957:28;31772:220;:::o;31998:182::-;32138:34;32134:1;32126:6;32122:14;32115:58;31998:182;:::o;32186:228::-;32326:34;32322:1;32314:6;32310:14;32303:58;32395:11;32390:2;32382:6;32378:15;32371:36;32186:228;:::o;32420:224::-;32560:34;32556:1;32548:6;32544:14;32537:58;32629:7;32624:2;32616:6;32612:15;32605:32;32420:224;:::o;32650:114::-;;:::o;32770:223::-;32910:34;32906:1;32898:6;32894:14;32887:58;32979:6;32974:2;32966:6;32962:15;32955:31;32770:223;:::o;32999:170::-;33139:22;33135:1;33127:6;33123:14;33116:46;32999:170;:::o;33175:122::-;33248:24;33266:5;33248:24;:::i;:::-;33241:5;33238:35;33228:63;;33287:1;33284;33277:12;33228:63;33175:122;:::o;33303:116::-;33373:21;33388:5;33373:21;:::i;:::-;33366:5;33363:32;33353:60;;33409:1;33406;33399:12;33353:60;33303:116;:::o;33425:148::-;33511:37;33542:5;33511:37;:::i;:::-;33504:5;33501:48;33491:76;;33563:1;33560;33553:12;33491:76;33425:148;:::o;33579:122::-;33652:24;33670:5;33652:24;:::i;:::-;33645:5;33642:35;33632:63;;33691:1;33688;33681:12;33632:63;33579:122;:::o

Swarm Source

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