ETH Price: $3,441.09 (+1.46%)
Gas: 6 Gwei

Token

Anubis Inu (AINU)
 

Overview

Max Total Supply

1,000,000 AINU

Holders

94

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
cvd.eth
Balance
13,300.00000000000028174 AINU

Value
$0.00
0xdaa7c1b5feaca5d1bc1bea7e7c07d91d3e6dfe51
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:
Anubis

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-08
*/

/*
            88                               
            ""                                  
                                                  
,adPPYYba,  88  8b,dPPYba,  88       88  
""     `Y8  88  88P'   `"8a 88       88  
,adPPPPP88  88  88       88 88       88 
88,    ,88  88  88       88 "8a,   ,a88  
`"8bbdP"Y8  88  88       88  `"YbbdP'Y8 
                                                  
                              /^\
           L L               /   \               L L
        __/|/|_             /  .  \             _|\|\__
       /_| [_[_\           /     .-\           /_]_] |_\
      /__\  __`-\_____    /    .    \    _____/-`__  /__\
     /___] /=@>  _   {>  /-.         \  <}   _  <@=\ [___\
    /____/     /` `--/  /      .      \  \--` `\     \____\
   /____/  \____/`-._> /               \ <_.-`\____/  \____\
  /____/    /__/      /-._     .   _.-  \      \__\    \____\
 /____/    /__/      /         .         \      \__\    \____\
|____/_  _/__/      /          .          \      \__\_  _\____|
 \__/_ ``_|_/      /      -._  .        _.-\      \_|_`` _\___/
   /__`-`__\      <_         `-;           _>      /__`-`__\
      `-`           `-._       ;       _.-`           `-`
                        `-._   ;   _.-`
                            `-._.-`



$AINU - Anubis Inu - Enter the underworld.
https://t.me/AnubisInuVoid
*/

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

contract Ownable is Context {
    address private _owner;

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

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

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function renounceOwnership() 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 Anubis is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    
    string private _name = "Anubis Inu";
    string private _symbol = "AINU";
    uint8 private _decimals = 18;

    address payable public marketingWallet = payable(0x3B5D3eE79Aa24DA5534792906F32ff813fAC576b);
    address payable public DeveloperWallet = payable(0x3B5D3eE79Aa24DA5534792906F32ff813fAC576b);
    
    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 blacklist;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;

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

    uint256 public _totalTaxIfBuying;
    uint256 public _totalTaxIfSelling;

    uint256 private _totalSupply = 1000000 * 10**_decimals;

    uint256 public minimumTokensBeforeSwap = _totalSupply.mul(1).div(100);   //0.001%

    uint256 public _maxTxAmount =  _totalSupply.mul(2).div(100);  //2%
    uint256 public _walletMax =   _totalSupply.mul(2).div(100);   //2%

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

    bool public checkWalletLimit = true;
    bool public EnableTransactionLimit = 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);

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[marketingWallet] = true;
        isExcludedFromFee[DeveloperWallet] = true;
        isExcludedFromFee[address(this)] = true;

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[marketingWallet] = true;
        isWalletLimitExempt[DeveloperWallet] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[marketingWallet] = true;
        isTxLimitExempt[DeveloperWallet] = true;
        isTxLimitExempt[address(this)] = true;
        
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);

        isMarketPair[address(uniswapPair)] = true;

        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    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 setMarketPairStatus(address account, bool newValue) public onlyOwner {
        isMarketPair[account] = newValue;
    }

    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        isExcludedFromFee[account] = newValue;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }
    
    function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner {
        isWalletLimitExempt[holder] = exempt;
    }

    function enableTxLimit(bool _status) external onlyOwner {
        EnableTransactionLimit = _status;
    }

    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount;
    }

    function enableDisableWalletLimit(bool newValue) external onlyOwner {
       checkWalletLimit = newValue;
    }

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

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

    function setMarketingWalletAddress(address newAddress) external onlyOwner() {
        marketingWallet = payable(newAddress);
    }

    function setDeveloperWalletAddress(address newAddress) external onlyOwner() {
        DeveloperWallet = payable(newAddress);
    }

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

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress));
    }

    function setBlacklist(address _adr, bool _status) external onlyOwner {
        blacklist[_adr] = _status;
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
    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;
    }

    function setBuyTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner {
        _buyLiquidityFee = _Liquidity;
        _buyMarketingFee = _Marketing;
        _buyDeveloperFee = _Developer;
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
    }

    function setSellTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner {
        _sellLiquidityFee = _Liquidity;
        _sellMarketingFee = _Marketing;
        _sellDeveloperFee = _Developer;
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);
    }

     //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(!blacklist[sender] && !blacklist[recipient], "Bot Enemy address Restricted!");

        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {

            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTransactionLimit) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }

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

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

            uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? 
                                         amount : takeFee(sender, recipient, amount);

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

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

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

    function rescueStuckedToken(address _token, uint _amount) external onlyOwner {
        IERC20(_token).transfer(msg.sender,_amount);
    }

    function rescueFunds() external onlyOwner {
        (bool os,) = payable(msg.sender).call{value: address(this).balance}("");
        require(os);
    }

    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(uint256 tAmount) private lockTheSwap {

        uint256 totalShares = _totalTaxIfBuying.add(_totalTaxIfSelling);

        uint256 liquidityShare = _buyLiquidityFee.add(_sellLiquidityFee);
        uint256 MarketingShare = _buyMarketingFee.add(_sellMarketingFee);
        // uint256 DeveloperShare = _buyDeveloperFee.add(_sellDeveloperFee);
        
        uint256 tokenForLp = tAmount.mul(liquidityShare).div(totalShares).div(2);
        uint256 tokenForSwap = tAmount.sub(tokenForLp);

        uint256 initialBalance =  address(this).balance;
        swapTokensForEth(tokenForSwap);
        uint256 recievedBalance =  address(this).balance.sub(initialBalance);

        uint256 totalETHFee = totalShares.sub(liquidityShare.div(2));

        uint256 amountETHLiquidity = recievedBalance.mul(liquidityShare).div(totalETHFee).div(2);
        uint256 amountETHMarketing = recievedBalance.mul(MarketingShare).div(totalETHFee);
        uint256 amountETHDeveloper = recievedBalance.sub(amountETHLiquidity).sub(amountETHMarketing);

        if(amountETHMarketing > 0) {
            payable(marketingWallet).transfer(amountETHMarketing);
        }

        if(amountETHDeveloper > 0) {
            payable(DeveloperWallet).transfer(amountETHDeveloper);
        }         

        if(amountETHLiquidity > 0 && tokenForLp > 0) {
            addLiquidity(tokenForLp, amountETHLiquidity);
        }
    }
    
    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
            owner(),
            block.timestamp
        );
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = 0;
        
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
        }
        
        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

    /* AirDrop Function*/

    function airdrop(address[] calldata _address,uint[] calldata _tokens) external onlyOwner {
        address account = msg.sender;
        require(_address.length == _tokens.length,"Error: Mismatch Length");
        uint tokenCount;
        for(uint i = 0; i < _tokens.length; i++) {
            tokenCount += _tokens[i];
        }
        require(balanceOf(account) >= tokenCount,"Error: Insufficient Error!!");
        _balances[account] = _balances[account].sub(tokenCount); 
        for(uint j = 0; j < _address.length; j++) {
            _balances[_address[j]] = _balances[_address[j]].add(_tokens[j]);
            emit Transfer(account, _address[j], _tokens[j]);
        }

    }

    
}

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":"DeveloperWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EnableTransactionLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","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":"_address","type":"address[]"},{"internalType":"uint256[]","name":"_tokens","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","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":[{"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":"marketingWallet","outputs":[{"internalType":"address payable","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueStuckedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Developer","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setDeveloperWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Developer","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","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":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"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"}]

60c06040526040518060400160405280600a81526020017f416e7562697320496e7500000000000000000000000000000000000000000000815250600190805190602001906200005192919062001002565b506040518060400160405280600481526020017f41494e5500000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062001002565b506012600360006101000a81548160ff021916908360ff160217905550733b5d3ee79aa24da5534792906f32ff813fac576b600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733b5d3ee79aa24da5534792906f32ff813fac576b600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff1660601b8152506001600c556002600d556002600e556001600f5560026010556002601155600360009054906101000a900460ff16600a62000211919062001364565b620f4240620002219190620014a1565b6014556200025b606462000247600160145462000e3060201b620031db1790919060201c565b62000eb460201b620032561790919060201c565b60155562000295606462000281600260145462000e3060201b620031db1790919060201c565b62000eb460201b620032561790919060201c565b601655620002cf6064620002bb600260145462000e3060201b620031db1790919060201c565b62000eb460201b620032561790919060201c565b6017556001601960156101000a81548160ff0219169083151502179055506000601960166101000a81548160ff0219169083151502179055506001601960176101000a81548160ff0219169083151502179055506001601960186101000a81548160ff0219169083151502179055503480156200034b57600080fd5b5060006200035e62000f0660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200045c57600080fd5b505afa15801562000471573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004979190620010c9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004fa57600080fd5b505afa1580156200050f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005359190620010c9565b6040518363ffffffff1660e01b815260040162000554929190620011a6565b602060405180830381600087803b1580156200056f57600080fd5b505af115801562000584573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005aa9190620010c9565b601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160076000620006e662000f0e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60006200089962000f0e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b600062000ac662000f0e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000c9c600e5462000c88600d54600c5462000f3760201b620032a01790919060201c565b62000f3760201b620032a01790919060201c565b60128190555062000cdb60115462000cc7601054600f5462000f3760201b620032a01790919060201c565b62000f3760201b620032a01790919060201c565b601381905550600160086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506014546005600062000d7262000f0660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000dc062000f0660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60145460405162000e2191906200123b565b60405180910390a350620016f6565b60008083141562000e45576000905062000eae565b6000828462000e559190620014a1565b905082848262000e669190620012d1565b1462000ea9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ea09062001219565b60405180910390fd5b809150505b92915050565b600062000efe83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000f9a60201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000f48919062001274565b90508381101562000f90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f8790620011f7565b60405180910390fd5b8091505092915050565b6000808311829062000fe4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000fdb9190620011d3565b60405180910390fd5b506000838562000ff59190620012d1565b9050809150509392505050565b828054620010109062001583565b90600052602060002090601f01602090048101928262001034576000855562001080565b82601f106200104f57805160ff191683800117855562001080565b8280016001018555821562001080579182015b828111156200107f57825182559160200191906001019062001062565b5b5090506200108f919062001093565b5090565b5b80821115620010ae57600081600090555060010162001094565b5090565b600081519050620010c381620016dc565b92915050565b600060208284031215620010dc57600080fd5b6000620010ec84828501620010b2565b91505092915050565b620011008162001502565b82525050565b6000620011138262001258565b6200111f818562001263565b9350620011318185602086016200154d565b6200113c8162001646565b840191505092915050565b600062001156601b8362001263565b9150620011638262001664565b602082019050919050565b60006200117d60218362001263565b91506200118a826200168d565b604082019050919050565b620011a08162001536565b82525050565b6000604082019050620011bd6000830185620010f5565b620011cc6020830184620010f5565b9392505050565b60006020820190508181036000830152620011ef818462001106565b905092915050565b60006020820190508181036000830152620012128162001147565b9050919050565b6000602082019050818103600083015262001234816200116e565b9050919050565b600060208201905062001252600083018462001195565b92915050565b600081519050919050565b600082825260208201905092915050565b6000620012818262001536565b91506200128e8362001536565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620012c657620012c5620015b9565b5b828201905092915050565b6000620012de8262001536565b9150620012eb8362001536565b925082620012fe57620012fd620015e8565b5b828204905092915050565b6000808291508390505b60018511156200135b57808604811115620013335762001332620015b9565b5b6001851615620013435780820291505b8081029050620013538562001657565b945062001313565b94509492505050565b6000620013718262001536565b91506200137e8362001540565b9250620013ad7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620013b5565b905092915050565b600082620013c757600190506200149a565b81620013d757600090506200149a565b8160018114620013f05760028114620013fb5762001431565b60019150506200149a565b60ff84111562001410576200140f620015b9565b5b8360020a9150848211156200142a5762001429620015b9565b5b506200149a565b5060208310610133831016604e8410600b84101617156200146b5782820a905083811115620014655762001464620015b9565b5b6200149a565b6200147a848484600162001309565b92509050818404811115620014945762001493620015b9565b5b81810290505b9392505050565b6000620014ae8262001536565b9150620014bb8362001536565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620014f757620014f6620015b9565b5b828202905092915050565b60006200150f8262001516565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200156d57808201518184015260208101905062001550565b838111156200157d576000848401525b50505050565b600060028204905060018216806200159c57607f821691505b60208210811415620015b357620015b262001617565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b620016e78162001502565b8114620016f357600080fd5b50565b60805160601c60a05160601c6159d8620017306000396000818161100101526114f10152600081816114c5015261151d01526159d86000f3fe6080604052600436106103a65760003560e01c8063844d591c116101e7578063da00097d1161010d578063f1d5f517116100a0578063f872858a1161006f578063f872858a14610dd1578063f8f6329014610dfc578063f9f92be414610e27578063fb4b8e6c14610e64576103ad565b8063f1d5f51714610d2d578063f2fde38b14610d56578063f455444614610d7f578063f84ba65d14610da8576103ad565b8063ec28438a116100dc578063ec28438a14610c87578063ee828db314610cb0578063ef422a1814610cd9578063f0cd1dac14610d02576103ad565b8063da00097d14610bdd578063dc44b6a014610c08578063dd62ed3e14610c33578063e6b2603b14610c70576103ad565b8063a5d69d1f11610185578063c816841b11610154578063c816841b14610b1f578063c860795214610b4a578063c867d60b14610b75578063d2d7ad8314610bb2576103ad565b8063a5d69d1f14610a65578063a9059cbb14610a8e578063c49b9a8014610acb578063c5d2418914610af4576103ad565b80638b42507f116101c15780638b42507f146109955780638da5cb5b146109d257806395d89b41146109fd578063a457c2d714610a28576103ad565b8063844d591c14610916578063852614851461093f57806388790a681461096a576103ad565b806339509351116102cc5780635881f3ef1161026a57806375f0a8741161023957806375f0a8741461086a5780637d1db4a514610895578063807c2d9c146108c057806382eefb43146108eb576103ad565b80635881f3ef146107b057806367243482146107ed57806370a0823114610816578063715018a614610853576103ad565b80634a74bb02116102a65780634a74bb02146106f45780634cb80fd51461071f5780635194f9bf146107485780635342acb414610773576103ad565b806339509351146106515780633b97084a1461068e5780633ecad271146106b7576103ad565b80631870517a116103445780632563ae83116103135780632563ae83146105a757806327c8f835146105d05780632b112e49146105fb578063313ce56714610626576103ad565b80631870517a146104ed5780632198cf6c1461051657806323555d571461053f57806323b872dd1461056a576103ad565b8063095ea7b311610380578063095ea7b314610431578063153b0d1e1461046e5780631694505e1461049757806318160ddd146104c2576103ad565b806306fdde03146103b257806308733214146103dd5780630930907b14610406576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e8d565b6040516103d49190614fe8565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff9190614b05565b610f1f565b005b34801561041257600080fd5b5061041b610fff565b6040516104289190614ec9565b60405180910390f35b34801561043d57600080fd5b50610458600480360381019061045391906149d9565b611023565b6040516104659190614fb2565b60405180910390f35b34801561047a57600080fd5b506104956004803603810190610490919061499d565b611041565b005b3480156104a357600080fd5b506104ac611131565b6040516104b99190614fcd565b60405180910390f35b3480156104ce57600080fd5b506104d7611157565b6040516104e491906151aa565b60405180910390f35b3480156104f957600080fd5b50610514600480360381019061050f9190614b05565b611161565b005b34801561052257600080fd5b5061053d6004803603810190610538919061499d565b611241565b005b34801561054b57600080fd5b50610554611331565b60405161056191906151aa565b60405180910390f35b34801561057657600080fd5b50610591600480360381019061058c919061494e565b611337565b60405161059e9190614fb2565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c99190614a8a565b611411565b005b3480156105dc57600080fd5b506105e56114c3565b6040516105f29190614ec9565b60405180910390f35b34801561060757600080fd5b506106106114e7565b60405161061d91906151aa565b60405180910390f35b34801561063257600080fd5b5061063b611565565b604051610648919061524f565b60405180910390f35b34801561065d57600080fd5b50610678600480360381019061067391906149d9565b61157c565b6040516106859190614fb2565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b09190614adc565b61162f565b005b3480156106c357600080fd5b506106de60048036038101906106d991906148c0565b6116ce565b6040516106eb9190614fb2565b60405180910390f35b34801561070057600080fd5b506107096116ee565b6040516107169190614fb2565b60405180910390f35b34801561072b57600080fd5b50610746600480360381019061074191906148c0565b611701565b005b34801561075457600080fd5b5061075d6117da565b60405161076a91906151aa565b60405180910390f35b34801561077f57600080fd5b5061079a600480360381019061079591906148c0565b6117e0565b6040516107a79190614fb2565b60405180910390f35b3480156107bc57600080fd5b506107d760048036038101906107d291906148c0565b611800565b6040516107e49190614ec9565b60405180910390f35b3480156107f957600080fd5b50610814600480360381019061080f9190614a15565b611ce4565b005b34801561082257600080fd5b5061083d600480360381019061083891906148c0565b6121a3565b60405161084a91906151aa565b60405180910390f35b34801561085f57600080fd5b506108686121ec565b005b34801561087657600080fd5b5061087f612341565b60405161088c9190614ee4565b60405180910390f35b3480156108a157600080fd5b506108aa612367565b6040516108b791906151aa565b60405180910390f35b3480156108cc57600080fd5b506108d561236d565b6040516108e291906151aa565b60405180910390f35b3480156108f757600080fd5b50610900612373565b60405161090d91906151aa565b60405180910390f35b34801561092257600080fd5b5061093d6004803603810190610938919061499d565b612379565b005b34801561094b57600080fd5b50610954612469565b6040516109619190614fb2565b60405180910390f35b34801561097657600080fd5b5061097f61247c565b60405161098c91906151aa565b60405180910390f35b3480156109a157600080fd5b506109bc60048036038101906109b791906148c0565b612482565b6040516109c99190614fb2565b60405180910390f35b3480156109de57600080fd5b506109e76124a2565b6040516109f49190614ec9565b60405180910390f35b348015610a0957600080fd5b50610a126124cb565b604051610a1f9190614fe8565b60405180910390f35b348015610a3457600080fd5b50610a4f6004803603810190610a4a91906149d9565b61255d565b604051610a5c9190614fb2565b60405180910390f35b348015610a7157600080fd5b50610a8c6004803603810190610a879190614a8a565b61262a565b005b348015610a9a57600080fd5b50610ab56004803603810190610ab091906149d9565b6126dc565b604051610ac29190614fb2565b60405180910390f35b348015610ad757600080fd5b50610af26004803603810190610aed9190614a8a565b6126fb565b005b348015610b0057600080fd5b50610b096127e4565b604051610b1691906151aa565b60405180910390f35b348015610b2b57600080fd5b50610b346127ea565b604051610b419190614ec9565b60405180910390f35b348015610b5657600080fd5b50610b5f612810565b604051610b6c91906151aa565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b9791906148c0565b612816565b604051610ba99190614fb2565b60405180910390f35b348015610bbe57600080fd5b50610bc7612836565b604051610bd491906151aa565b60405180910390f35b348015610be957600080fd5b50610bf261283c565b604051610bff9190614fb2565b60405180910390f35b348015610c1457600080fd5b50610c1d61284f565b604051610c2a91906151aa565b60405180910390f35b348015610c3f57600080fd5b50610c5a6004803603810190610c559190614912565b612855565b604051610c6791906151aa565b60405180910390f35b348015610c7c57600080fd5b50610c856128dc565b005b348015610c9357600080fd5b50610cae6004803603810190610ca99190614adc565b6129ea565b005b348015610cbc57600080fd5b50610cd76004803603810190610cd29190614a8a565b612a89565b005b348015610ce557600080fd5b50610d006004803603810190610cfb919061499d565b612b3b565b005b348015610d0e57600080fd5b50610d17612c2b565b604051610d2491906151aa565b60405180910390f35b348015610d3957600080fd5b50610d546004803603810190610d4f9190614adc565b612c31565b005b348015610d6257600080fd5b50610d7d6004803603810190610d7891906148c0565b612cd0565b005b348015610d8b57600080fd5b50610da66004803603810190610da191906149d9565b612e92565b005b348015610db457600080fd5b50610dcf6004803603810190610dca919061499d565b612fb9565b005b348015610ddd57600080fd5b50610de66130a9565b604051610df39190614fb2565b60405180910390f35b348015610e0857600080fd5b50610e116130bc565b604051610e1e9190614ee4565b60405180910390f35b348015610e3357600080fd5b50610e4e6004803603810190610e4991906148c0565b6130e2565b604051610e5b9190614fb2565b60405180910390f35b348015610e7057600080fd5b50610e8b6004803603810190610e8691906148c0565b613102565b005b606060018054610e9c906154af565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec8906154af565b8015610f155780601f10610eea57610100808354040283529160200191610f15565b820191906000526020600020905b815481529060010190602001808311610ef857829003601f168201915b5050505050905090565b610f276132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fab9061514a565b60405180910390fd5b82600f819055508160108190555080601181905550610ff4601154610fe6601054600f546132a090919063ffffffff16565b6132a090919063ffffffff16565b601381905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006110376110306132fe565b8484613306565b6001905092915050565b6110496132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cd9061514a565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601454905090565b6111696132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ed9061514a565b60405180910390fd5b82600c8190555081600d8190555080600e81905550611236600e54611228600d54600c546132a090919063ffffffff16565b6132a090919063ffffffff16565b601281905550505050565b6112496132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd9061514a565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b60006113448484846134d1565b50611406846113516132fe565b6114018560405180606001604052806028815260200161595660289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113b76132fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b613306565b600190509392505050565b6114196132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149d9061514a565b60405180910390fd5b80601960176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006115606115157f00000000000000000000000000000000000000000000000000000000000000006121a3565b6115526115417f00000000000000000000000000000000000000000000000000000000000000006121a3565b601454613c4b90919063ffffffff16565b613c4b90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60006116256115896132fe565b84611620856006600061159a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b613306565b6001905092915050565b6116376132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb9061514a565b60405180910390fd5b8060158190555050565b60086020528060005260406000206000915054906101000a900460ff1681565b601960159054906101000a900460ff1681565b6117096132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d9061514a565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b60076020528060005260406000206000915054906101000a900460ff1681565b600061180a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e9061514a565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156118e257600080fd5b505afa1580156118f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191a91906148e9565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561197c57600080fd5b505afa158015611990573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b491906148e9565b6040518363ffffffff1660e01b81526004016119d1929190614eff565b60206040518083038186803b1580156119e957600080fd5b505afa1580156119fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2191906148e9565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611be2578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611a9e57600080fd5b505afa158015611ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad691906148e9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b3857600080fd5b505afa158015611b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7091906148e9565b6040518363ffffffff1660e01b8152600401611b8d929190614eff565b602060405180830381600087803b158015611ba757600080fd5b505af1158015611bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdf91906148e9565b91505b81601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611cec6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d709061514a565b60405180910390fd5b6000339050828290508585905014611dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbd9061512a565b60405180910390fd5b600080600090505b84849050811015611e3957848482818110611e12577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013582611e2491906152ca565b91508080611e31906154e1565b915050611dce565b5080611e44836121a3565b1015611e85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7c9061502a565b60405180910390fd5b611ed781600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c4b90919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b8686905081101561219a57612006858583818110611f64577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135600560008a8a86818110611fa8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190611fbd91906148c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b60056000898985818110612043577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201602081019061205891906148c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508686828181106120cf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906120e491906148c0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87878581811061216b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013560405161217f91906151aa565b60405180910390a38080612192906154e1565b915050611f1d565b50505050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6121f46132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122789061514a565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b60175481565b60135481565b6123816132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461240e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124059061514a565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960189054906101000a900460ff1681565b600f5481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546124da906154af565b80601f0160208091040260200160405190810160405280929190818152602001828054612506906154af565b80156125535780601f1061252857610100808354040283529160200191612553565b820191906000526020600020905b81548152906001019060200180831161253657829003601f168201915b5050505050905090565b600061262061256a6132fe565b8461261b8560405180606001604052806025815260200161597e60259139600660006125946132fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b613306565b6001905092915050565b6126326132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b69061514a565b60405180910390fd5b80601960166101000a81548160ff02191690831515021790555050565b60006126f06126e96132fe565b84846134d1565b506001905092915050565b6127036132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612790576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127879061514a565b60405180910390fd5b80601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516127d99190614fb2565b60405180910390a150565b600d5481565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60155481565b601960169054906101000a900460ff1681565b600c5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6128e46132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612971576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129689061514a565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161299790614eb4565b60006040518083038185875af1925050503d80600081146129d4576040519150601f19603f3d011682016040523d82523d6000602084013e6129d9565b606091505b50509050806129e757600080fd5b50565b6129f26132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a769061514a565b60405180910390fd5b8060168190555050565b612a916132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b159061514a565b60405180910390fd5b80601960186101000a81548160ff02191690831515021790555050565b612b436132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc79061514a565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b612c396132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612cc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cbd9061514a565b60405180910390fd5b8060178190555050565b612cd86132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5c9061514a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dcc9061504a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612e9a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1e9061514a565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612f62929190614f28565b602060405180830381600087803b158015612f7c57600080fd5b505af1158015612f90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb49190614ab3565b505050565b612fc16132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461304e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130459061514a565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b61310a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318e9061514a565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808314156131ee5760009050613250565b600082846131fc9190615351565b905082848261320b9190615320565b1461324b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132429061510a565b60405180910390fd5b809150505b92915050565b600061329883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c95565b905092915050565b60008082846132af91906152ca565b9050838110156132f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132eb9061508a565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161336d9061518a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156133e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133dd9061506a565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516134c491906151aa565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613542576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135399061516a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156135b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135a99061500a565b60405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156136565750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161368c906150ca565b60405180910390fd5b601960149054906101000a900460ff16156136bc576136b5848484613cf8565b9050613be0565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137605750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137785750601960189054906101000a900460ff165b156137c3576016548211156137c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137b9906150ea565b60405180910390fd5b5b60006137ce306121a3565b9050600060155482101590508080156137f45750601960149054906101000a900460ff16155b801561384a5750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138625750601960159054906101000a900460ff165b1561388c57601960169054906101000a900460ff16156138825760155491505b61388b82613ecb565b5b613915846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139fb5750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613a0f57613a0a878787614196565b613a11565b845b9050601960179054906101000a900460ff168015613a795750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613ade57601754613a9c82613a8e896121a3565b6132a090919063ffffffff16565b1115613add576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ad4906150aa565b60405180910390fd5b5b613b3081600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613bd091906151aa565b60405180910390a3600193505050505b9392505050565b6000838311158290613c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c269190614fe8565b60405180910390fd5b5060008385613c3e91906153ab565b9050809150509392505050565b6000613c8d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613be7565b905092915050565b60008083118290613cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cd39190614fe8565b60405180910390fd5b5060008385613ceb9190615320565b9050809150509392505050565b6000613d83826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e1882600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613eb891906151aa565b60405180910390a3600190509392505050565b6001601960146101000a81548160ff0219169083151502179055506000613eff6013546012546132a090919063ffffffff16565b90506000613f1a600f54600c546132a090919063ffffffff16565b90506000613f35601054600d546132a090919063ffffffff16565b90506000613f716002613f6386613f55878a6131db90919063ffffffff16565b61325690919063ffffffff16565b61325690919063ffffffff16565b90506000613f888287613c4b90919063ffffffff16565b90506000479050613f98826143bd565b6000613fad8247613c4b90919063ffffffff16565b90506000613fd7613fc860028961325690919063ffffffff16565b89613c4b90919063ffffffff16565b90506000614013600261400584613ff78c886131db90919063ffffffff16565b61325690919063ffffffff16565b61325690919063ffffffff16565b9050600061403c8361402e8a876131db90919063ffffffff16565b61325690919063ffffffff16565b90506000614065826140578588613c4b90919063ffffffff16565b613c4b90919063ffffffff16565b905060008211156140da57600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156140d8573d6000803e3d6000fd5b505b600081111561414d57600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561414b573d6000803e3d6000fd5b505b60008311801561415d5750600088115b1561416d5761416c88846146ba565b5b50505050505050505050506000601960146101000a81548160ff02191690831515021790555050565b60008060009050600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561421e576142176064614209601254866131db90919063ffffffff16565b61325690919063ffffffff16565b905061429c565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561429b57614298606461428a601354866131db90919063ffffffff16565b61325690919063ffffffff16565b90505b5b60008111156143a0576142f781600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161439791906151aa565b60405180910390a35b6143b38184613c4b90919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff811115614400577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561442e5781602001602082028036833780820191505090505b509050308160008151811061446c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561450e57600080fd5b505afa158015614522573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061454691906148e9565b81600181518110614580577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506145e730601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613306565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161464b9594939291906151f5565b600060405180830381600087803b15801561466557600080fd5b505af1158015614679573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516146ae9291906151c5565b60405180910390a15050565b6146e730601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613306565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806147336124a2565b426040518863ffffffff1660e01b815260040161475596959493929190614f51565b6060604051808303818588803b15801561476e57600080fd5b505af1158015614782573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906147a79190614b54565b5050505050565b6000813590506147bd81615910565b92915050565b6000815190506147d281615910565b92915050565b60008083601f8401126147ea57600080fd5b8235905067ffffffffffffffff81111561480357600080fd5b60208301915083602082028301111561481b57600080fd5b9250929050565b60008083601f84011261483457600080fd5b8235905067ffffffffffffffff81111561484d57600080fd5b60208301915083602082028301111561486557600080fd5b9250929050565b60008135905061487b81615927565b92915050565b60008151905061489081615927565b92915050565b6000813590506148a58161593e565b92915050565b6000815190506148ba8161593e565b92915050565b6000602082840312156148d257600080fd5b60006148e0848285016147ae565b91505092915050565b6000602082840312156148fb57600080fd5b6000614909848285016147c3565b91505092915050565b6000806040838503121561492557600080fd5b6000614933858286016147ae565b9250506020614944858286016147ae565b9150509250929050565b60008060006060848603121561496357600080fd5b6000614971868287016147ae565b9350506020614982868287016147ae565b925050604061499386828701614896565b9150509250925092565b600080604083850312156149b057600080fd5b60006149be858286016147ae565b92505060206149cf8582860161486c565b9150509250929050565b600080604083850312156149ec57600080fd5b60006149fa858286016147ae565b9250506020614a0b85828601614896565b9150509250929050565b60008060008060408587031215614a2b57600080fd5b600085013567ffffffffffffffff811115614a4557600080fd5b614a51878288016147d8565b9450945050602085013567ffffffffffffffff811115614a7057600080fd5b614a7c87828801614822565b925092505092959194509250565b600060208284031215614a9c57600080fd5b6000614aaa8482850161486c565b91505092915050565b600060208284031215614ac557600080fd5b6000614ad384828501614881565b91505092915050565b600060208284031215614aee57600080fd5b6000614afc84828501614896565b91505092915050565b600080600060608486031215614b1a57600080fd5b6000614b2886828701614896565b9350506020614b3986828701614896565b9250506040614b4a86828701614896565b9150509250925092565b600080600060608486031215614b6957600080fd5b6000614b77868287016148ab565b9350506020614b88868287016148ab565b9250506040614b99868287016148ab565b9150509250925092565b6000614baf8383614bca565b60208301905092915050565b614bc4816153f1565b82525050565b614bd3816153df565b82525050565b614be2816153df565b82525050565b6000614bf38261527a565b614bfd818561529d565b9350614c088361526a565b8060005b83811015614c39578151614c208882614ba3565b9750614c2b83615290565b925050600181019050614c0c565b5085935050505092915050565b614c4f81615403565b82525050565b614c5e81615446565b82525050565b614c6d8161546a565b82525050565b6000614c7e82615285565b614c8881856152b9565b9350614c9881856020860161547c565b614ca1816155b7565b840191505092915050565b6000614cb96023836152b9565b9150614cc4826155c8565b604082019050919050565b6000614cdc601b836152b9565b9150614ce782615617565b602082019050919050565b6000614cff6026836152b9565b9150614d0a82615640565b604082019050919050565b6000614d226022836152b9565b9150614d2d8261568f565b604082019050919050565b6000614d45601b836152b9565b9150614d50826156de565b602082019050919050565b6000614d686025836152b9565b9150614d7382615707565b604082019050919050565b6000614d8b601d836152b9565b9150614d9682615756565b602082019050919050565b6000614dae6028836152b9565b9150614db98261577f565b604082019050919050565b6000614dd16021836152b9565b9150614ddc826157ce565b604082019050919050565b6000614df46016836152b9565b9150614dff8261581d565b602082019050919050565b6000614e176020836152b9565b9150614e2282615846565b602082019050919050565b6000614e3a6025836152b9565b9150614e458261586f565b604082019050919050565b6000614e5d6000836152ae565b9150614e68826158be565b600082019050919050565b6000614e806024836152b9565b9150614e8b826158c1565b604082019050919050565b614e9f8161542f565b82525050565b614eae81615439565b82525050565b6000614ebf82614e50565b9150819050919050565b6000602082019050614ede6000830184614bd9565b92915050565b6000602082019050614ef96000830184614bbb565b92915050565b6000604082019050614f146000830185614bd9565b614f216020830184614bd9565b9392505050565b6000604082019050614f3d6000830185614bd9565b614f4a6020830184614e96565b9392505050565b600060c082019050614f666000830189614bd9565b614f736020830188614e96565b614f806040830187614c64565b614f8d6060830186614c64565b614f9a6080830185614bd9565b614fa760a0830184614e96565b979650505050505050565b6000602082019050614fc76000830184614c46565b92915050565b6000602082019050614fe26000830184614c55565b92915050565b600060208201905081810360008301526150028184614c73565b905092915050565b6000602082019050818103600083015261502381614cac565b9050919050565b6000602082019050818103600083015261504381614ccf565b9050919050565b6000602082019050818103600083015261506381614cf2565b9050919050565b6000602082019050818103600083015261508381614d15565b9050919050565b600060208201905081810360008301526150a381614d38565b9050919050565b600060208201905081810360008301526150c381614d5b565b9050919050565b600060208201905081810360008301526150e381614d7e565b9050919050565b6000602082019050818103600083015261510381614da1565b9050919050565b6000602082019050818103600083015261512381614dc4565b9050919050565b6000602082019050818103600083015261514381614de7565b9050919050565b6000602082019050818103600083015261516381614e0a565b9050919050565b6000602082019050818103600083015261518381614e2d565b9050919050565b600060208201905081810360008301526151a381614e73565b9050919050565b60006020820190506151bf6000830184614e96565b92915050565b60006040820190506151da6000830185614e96565b81810360208301526151ec8184614be8565b90509392505050565b600060a08201905061520a6000830188614e96565b6152176020830187614c64565b81810360408301526152298186614be8565b90506152386060830185614bd9565b6152456080830184614e96565b9695505050505050565b60006020820190506152646000830184614ea5565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006152d58261542f565b91506152e08361542f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156153155761531461552a565b5b828201905092915050565b600061532b8261542f565b91506153368361542f565b92508261534657615345615559565b5b828204905092915050565b600061535c8261542f565b91506153678361542f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156153a05761539f61552a565b5b828202905092915050565b60006153b68261542f565b91506153c18361542f565b9250828210156153d4576153d361552a565b5b828203905092915050565b60006153ea8261540f565b9050919050565b60006153fc8261540f565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061545182615458565b9050919050565b60006154638261540f565b9050919050565b60006154758261542f565b9050919050565b60005b8381101561549a57808201518184015260208101905061547f565b838111156154a9576000848401525b50505050565b600060028204905060018216806154c757607f821691505b602082108114156154db576154da615588565b5b50919050565b60006154ec8261542f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561551f5761551e61552a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b7f426f7420456e656d792061646472657373205265737472696374656421000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b615919816153df565b811461592457600080fd5b50565b61593081615403565b811461593b57600080fd5b50565b6159478161542f565b811461595257600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207ead2b4c567f24e46648c6d27f2e2002714f756923166561de087e243c83d80564736f6c63430008040033

Deployed Bytecode

0x6080604052600436106103a65760003560e01c8063844d591c116101e7578063da00097d1161010d578063f1d5f517116100a0578063f872858a1161006f578063f872858a14610dd1578063f8f6329014610dfc578063f9f92be414610e27578063fb4b8e6c14610e64576103ad565b8063f1d5f51714610d2d578063f2fde38b14610d56578063f455444614610d7f578063f84ba65d14610da8576103ad565b8063ec28438a116100dc578063ec28438a14610c87578063ee828db314610cb0578063ef422a1814610cd9578063f0cd1dac14610d02576103ad565b8063da00097d14610bdd578063dc44b6a014610c08578063dd62ed3e14610c33578063e6b2603b14610c70576103ad565b8063a5d69d1f11610185578063c816841b11610154578063c816841b14610b1f578063c860795214610b4a578063c867d60b14610b75578063d2d7ad8314610bb2576103ad565b8063a5d69d1f14610a65578063a9059cbb14610a8e578063c49b9a8014610acb578063c5d2418914610af4576103ad565b80638b42507f116101c15780638b42507f146109955780638da5cb5b146109d257806395d89b41146109fd578063a457c2d714610a28576103ad565b8063844d591c14610916578063852614851461093f57806388790a681461096a576103ad565b806339509351116102cc5780635881f3ef1161026a57806375f0a8741161023957806375f0a8741461086a5780637d1db4a514610895578063807c2d9c146108c057806382eefb43146108eb576103ad565b80635881f3ef146107b057806367243482146107ed57806370a0823114610816578063715018a614610853576103ad565b80634a74bb02116102a65780634a74bb02146106f45780634cb80fd51461071f5780635194f9bf146107485780635342acb414610773576103ad565b806339509351146106515780633b97084a1461068e5780633ecad271146106b7576103ad565b80631870517a116103445780632563ae83116103135780632563ae83146105a757806327c8f835146105d05780632b112e49146105fb578063313ce56714610626576103ad565b80631870517a146104ed5780632198cf6c1461051657806323555d571461053f57806323b872dd1461056a576103ad565b8063095ea7b311610380578063095ea7b314610431578063153b0d1e1461046e5780631694505e1461049757806318160ddd146104c2576103ad565b806306fdde03146103b257806308733214146103dd5780630930907b14610406576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e8d565b6040516103d49190614fe8565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff9190614b05565b610f1f565b005b34801561041257600080fd5b5061041b610fff565b6040516104289190614ec9565b60405180910390f35b34801561043d57600080fd5b50610458600480360381019061045391906149d9565b611023565b6040516104659190614fb2565b60405180910390f35b34801561047a57600080fd5b506104956004803603810190610490919061499d565b611041565b005b3480156104a357600080fd5b506104ac611131565b6040516104b99190614fcd565b60405180910390f35b3480156104ce57600080fd5b506104d7611157565b6040516104e491906151aa565b60405180910390f35b3480156104f957600080fd5b50610514600480360381019061050f9190614b05565b611161565b005b34801561052257600080fd5b5061053d6004803603810190610538919061499d565b611241565b005b34801561054b57600080fd5b50610554611331565b60405161056191906151aa565b60405180910390f35b34801561057657600080fd5b50610591600480360381019061058c919061494e565b611337565b60405161059e9190614fb2565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c99190614a8a565b611411565b005b3480156105dc57600080fd5b506105e56114c3565b6040516105f29190614ec9565b60405180910390f35b34801561060757600080fd5b506106106114e7565b60405161061d91906151aa565b60405180910390f35b34801561063257600080fd5b5061063b611565565b604051610648919061524f565b60405180910390f35b34801561065d57600080fd5b50610678600480360381019061067391906149d9565b61157c565b6040516106859190614fb2565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b09190614adc565b61162f565b005b3480156106c357600080fd5b506106de60048036038101906106d991906148c0565b6116ce565b6040516106eb9190614fb2565b60405180910390f35b34801561070057600080fd5b506107096116ee565b6040516107169190614fb2565b60405180910390f35b34801561072b57600080fd5b50610746600480360381019061074191906148c0565b611701565b005b34801561075457600080fd5b5061075d6117da565b60405161076a91906151aa565b60405180910390f35b34801561077f57600080fd5b5061079a600480360381019061079591906148c0565b6117e0565b6040516107a79190614fb2565b60405180910390f35b3480156107bc57600080fd5b506107d760048036038101906107d291906148c0565b611800565b6040516107e49190614ec9565b60405180910390f35b3480156107f957600080fd5b50610814600480360381019061080f9190614a15565b611ce4565b005b34801561082257600080fd5b5061083d600480360381019061083891906148c0565b6121a3565b60405161084a91906151aa565b60405180910390f35b34801561085f57600080fd5b506108686121ec565b005b34801561087657600080fd5b5061087f612341565b60405161088c9190614ee4565b60405180910390f35b3480156108a157600080fd5b506108aa612367565b6040516108b791906151aa565b60405180910390f35b3480156108cc57600080fd5b506108d561236d565b6040516108e291906151aa565b60405180910390f35b3480156108f757600080fd5b50610900612373565b60405161090d91906151aa565b60405180910390f35b34801561092257600080fd5b5061093d6004803603810190610938919061499d565b612379565b005b34801561094b57600080fd5b50610954612469565b6040516109619190614fb2565b60405180910390f35b34801561097657600080fd5b5061097f61247c565b60405161098c91906151aa565b60405180910390f35b3480156109a157600080fd5b506109bc60048036038101906109b791906148c0565b612482565b6040516109c99190614fb2565b60405180910390f35b3480156109de57600080fd5b506109e76124a2565b6040516109f49190614ec9565b60405180910390f35b348015610a0957600080fd5b50610a126124cb565b604051610a1f9190614fe8565b60405180910390f35b348015610a3457600080fd5b50610a4f6004803603810190610a4a91906149d9565b61255d565b604051610a5c9190614fb2565b60405180910390f35b348015610a7157600080fd5b50610a8c6004803603810190610a879190614a8a565b61262a565b005b348015610a9a57600080fd5b50610ab56004803603810190610ab091906149d9565b6126dc565b604051610ac29190614fb2565b60405180910390f35b348015610ad757600080fd5b50610af26004803603810190610aed9190614a8a565b6126fb565b005b348015610b0057600080fd5b50610b096127e4565b604051610b1691906151aa565b60405180910390f35b348015610b2b57600080fd5b50610b346127ea565b604051610b419190614ec9565b60405180910390f35b348015610b5657600080fd5b50610b5f612810565b604051610b6c91906151aa565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b9791906148c0565b612816565b604051610ba99190614fb2565b60405180910390f35b348015610bbe57600080fd5b50610bc7612836565b604051610bd491906151aa565b60405180910390f35b348015610be957600080fd5b50610bf261283c565b604051610bff9190614fb2565b60405180910390f35b348015610c1457600080fd5b50610c1d61284f565b604051610c2a91906151aa565b60405180910390f35b348015610c3f57600080fd5b50610c5a6004803603810190610c559190614912565b612855565b604051610c6791906151aa565b60405180910390f35b348015610c7c57600080fd5b50610c856128dc565b005b348015610c9357600080fd5b50610cae6004803603810190610ca99190614adc565b6129ea565b005b348015610cbc57600080fd5b50610cd76004803603810190610cd29190614a8a565b612a89565b005b348015610ce557600080fd5b50610d006004803603810190610cfb919061499d565b612b3b565b005b348015610d0e57600080fd5b50610d17612c2b565b604051610d2491906151aa565b60405180910390f35b348015610d3957600080fd5b50610d546004803603810190610d4f9190614adc565b612c31565b005b348015610d6257600080fd5b50610d7d6004803603810190610d7891906148c0565b612cd0565b005b348015610d8b57600080fd5b50610da66004803603810190610da191906149d9565b612e92565b005b348015610db457600080fd5b50610dcf6004803603810190610dca919061499d565b612fb9565b005b348015610ddd57600080fd5b50610de66130a9565b604051610df39190614fb2565b60405180910390f35b348015610e0857600080fd5b50610e116130bc565b604051610e1e9190614ee4565b60405180910390f35b348015610e3357600080fd5b50610e4e6004803603810190610e4991906148c0565b6130e2565b604051610e5b9190614fb2565b60405180910390f35b348015610e7057600080fd5b50610e8b6004803603810190610e8691906148c0565b613102565b005b606060018054610e9c906154af565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec8906154af565b8015610f155780601f10610eea57610100808354040283529160200191610f15565b820191906000526020600020905b815481529060010190602001808311610ef857829003601f168201915b5050505050905090565b610f276132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fab9061514a565b60405180910390fd5b82600f819055508160108190555080601181905550610ff4601154610fe6601054600f546132a090919063ffffffff16565b6132a090919063ffffffff16565b601381905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006110376110306132fe565b8484613306565b6001905092915050565b6110496132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cd9061514a565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601454905090565b6111696132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ed9061514a565b60405180910390fd5b82600c8190555081600d8190555080600e81905550611236600e54611228600d54600c546132a090919063ffffffff16565b6132a090919063ffffffff16565b601281905550505050565b6112496132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd9061514a565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b60006113448484846134d1565b50611406846113516132fe565b6114018560405180606001604052806028815260200161595660289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113b76132fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b613306565b600190509392505050565b6114196132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149d9061514a565b60405180910390fd5b80601960176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b60006115606115157f00000000000000000000000000000000000000000000000000000000000000006121a3565b6115526115417f000000000000000000000000000000000000000000000000000000000000dead6121a3565b601454613c4b90919063ffffffff16565b613c4b90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60006116256115896132fe565b84611620856006600061159a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b613306565b6001905092915050565b6116376132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb9061514a565b60405180910390fd5b8060158190555050565b60086020528060005260406000206000915054906101000a900460ff1681565b601960159054906101000a900460ff1681565b6117096132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d9061514a565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b60076020528060005260406000206000915054906101000a900460ff1681565b600061180a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e9061514a565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156118e257600080fd5b505afa1580156118f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191a91906148e9565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561197c57600080fd5b505afa158015611990573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b491906148e9565b6040518363ffffffff1660e01b81526004016119d1929190614eff565b60206040518083038186803b1580156119e957600080fd5b505afa1580156119fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2191906148e9565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611be2578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611a9e57600080fd5b505afa158015611ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad691906148e9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b3857600080fd5b505afa158015611b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7091906148e9565b6040518363ffffffff1660e01b8152600401611b8d929190614eff565b602060405180830381600087803b158015611ba757600080fd5b505af1158015611bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdf91906148e9565b91505b81601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611cec6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d709061514a565b60405180910390fd5b6000339050828290508585905014611dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbd9061512a565b60405180910390fd5b600080600090505b84849050811015611e3957848482818110611e12577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013582611e2491906152ca565b91508080611e31906154e1565b915050611dce565b5080611e44836121a3565b1015611e85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7c9061502a565b60405180910390fd5b611ed781600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c4b90919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b8686905081101561219a57612006858583818110611f64577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135600560008a8a86818110611fa8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190611fbd91906148c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b60056000898985818110612043577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201602081019061205891906148c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508686828181106120cf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906120e491906148c0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87878581811061216b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013560405161217f91906151aa565b60405180910390a38080612192906154e1565b915050611f1d565b50505050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6121f46132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122789061514a565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b60175481565b60135481565b6123816132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461240e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124059061514a565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960189054906101000a900460ff1681565b600f5481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546124da906154af565b80601f0160208091040260200160405190810160405280929190818152602001828054612506906154af565b80156125535780601f1061252857610100808354040283529160200191612553565b820191906000526020600020905b81548152906001019060200180831161253657829003601f168201915b5050505050905090565b600061262061256a6132fe565b8461261b8560405180606001604052806025815260200161597e60259139600660006125946132fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b613306565b6001905092915050565b6126326132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b69061514a565b60405180910390fd5b80601960166101000a81548160ff02191690831515021790555050565b60006126f06126e96132fe565b84846134d1565b506001905092915050565b6127036132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612790576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127879061514a565b60405180910390fd5b80601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516127d99190614fb2565b60405180910390a150565b600d5481565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60155481565b601960169054906101000a900460ff1681565b600c5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6128e46132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612971576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129689061514a565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161299790614eb4565b60006040518083038185875af1925050503d80600081146129d4576040519150601f19603f3d011682016040523d82523d6000602084013e6129d9565b606091505b50509050806129e757600080fd5b50565b6129f26132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a769061514a565b60405180910390fd5b8060168190555050565b612a916132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b159061514a565b60405180910390fd5b80601960186101000a81548160ff02191690831515021790555050565b612b436132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc79061514a565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b612c396132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612cc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cbd9061514a565b60405180910390fd5b8060178190555050565b612cd86132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5c9061514a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dcc9061504a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612e9a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1e9061514a565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612f62929190614f28565b602060405180830381600087803b158015612f7c57600080fd5b505af1158015612f90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb49190614ab3565b505050565b612fc16132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461304e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130459061514a565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b61310a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318e9061514a565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808314156131ee5760009050613250565b600082846131fc9190615351565b905082848261320b9190615320565b1461324b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132429061510a565b60405180910390fd5b809150505b92915050565b600061329883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c95565b905092915050565b60008082846132af91906152ca565b9050838110156132f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132eb9061508a565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161336d9061518a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156133e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133dd9061506a565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516134c491906151aa565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613542576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135399061516a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156135b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135a99061500a565b60405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156136565750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161368c906150ca565b60405180910390fd5b601960149054906101000a900460ff16156136bc576136b5848484613cf8565b9050613be0565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137605750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137785750601960189054906101000a900460ff165b156137c3576016548211156137c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137b9906150ea565b60405180910390fd5b5b60006137ce306121a3565b9050600060155482101590508080156137f45750601960149054906101000a900460ff16155b801561384a5750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138625750601960159054906101000a900460ff165b1561388c57601960169054906101000a900460ff16156138825760155491505b61388b82613ecb565b5b613915846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139fb5750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613a0f57613a0a878787614196565b613a11565b845b9050601960179054906101000a900460ff168015613a795750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613ade57601754613a9c82613a8e896121a3565b6132a090919063ffffffff16565b1115613add576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ad4906150aa565b60405180910390fd5b5b613b3081600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613bd091906151aa565b60405180910390a3600193505050505b9392505050565b6000838311158290613c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c269190614fe8565b60405180910390fd5b5060008385613c3e91906153ab565b9050809150509392505050565b6000613c8d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613be7565b905092915050565b60008083118290613cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cd39190614fe8565b60405180910390fd5b5060008385613ceb9190615320565b9050809150509392505050565b6000613d83826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e1882600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613eb891906151aa565b60405180910390a3600190509392505050565b6001601960146101000a81548160ff0219169083151502179055506000613eff6013546012546132a090919063ffffffff16565b90506000613f1a600f54600c546132a090919063ffffffff16565b90506000613f35601054600d546132a090919063ffffffff16565b90506000613f716002613f6386613f55878a6131db90919063ffffffff16565b61325690919063ffffffff16565b61325690919063ffffffff16565b90506000613f888287613c4b90919063ffffffff16565b90506000479050613f98826143bd565b6000613fad8247613c4b90919063ffffffff16565b90506000613fd7613fc860028961325690919063ffffffff16565b89613c4b90919063ffffffff16565b90506000614013600261400584613ff78c886131db90919063ffffffff16565b61325690919063ffffffff16565b61325690919063ffffffff16565b9050600061403c8361402e8a876131db90919063ffffffff16565b61325690919063ffffffff16565b90506000614065826140578588613c4b90919063ffffffff16565b613c4b90919063ffffffff16565b905060008211156140da57600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156140d8573d6000803e3d6000fd5b505b600081111561414d57600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561414b573d6000803e3d6000fd5b505b60008311801561415d5750600088115b1561416d5761416c88846146ba565b5b50505050505050505050506000601960146101000a81548160ff02191690831515021790555050565b60008060009050600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561421e576142176064614209601254866131db90919063ffffffff16565b61325690919063ffffffff16565b905061429c565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561429b57614298606461428a601354866131db90919063ffffffff16565b61325690919063ffffffff16565b90505b5b60008111156143a0576142f781600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161439791906151aa565b60405180910390a35b6143b38184613c4b90919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff811115614400577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561442e5781602001602082028036833780820191505090505b509050308160008151811061446c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561450e57600080fd5b505afa158015614522573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061454691906148e9565b81600181518110614580577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506145e730601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613306565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161464b9594939291906151f5565b600060405180830381600087803b15801561466557600080fd5b505af1158015614679573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516146ae9291906151c5565b60405180910390a15050565b6146e730601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613306565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806147336124a2565b426040518863ffffffff1660e01b815260040161475596959493929190614f51565b6060604051808303818588803b15801561476e57600080fd5b505af1158015614782573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906147a79190614b54565b5050505050565b6000813590506147bd81615910565b92915050565b6000815190506147d281615910565b92915050565b60008083601f8401126147ea57600080fd5b8235905067ffffffffffffffff81111561480357600080fd5b60208301915083602082028301111561481b57600080fd5b9250929050565b60008083601f84011261483457600080fd5b8235905067ffffffffffffffff81111561484d57600080fd5b60208301915083602082028301111561486557600080fd5b9250929050565b60008135905061487b81615927565b92915050565b60008151905061489081615927565b92915050565b6000813590506148a58161593e565b92915050565b6000815190506148ba8161593e565b92915050565b6000602082840312156148d257600080fd5b60006148e0848285016147ae565b91505092915050565b6000602082840312156148fb57600080fd5b6000614909848285016147c3565b91505092915050565b6000806040838503121561492557600080fd5b6000614933858286016147ae565b9250506020614944858286016147ae565b9150509250929050565b60008060006060848603121561496357600080fd5b6000614971868287016147ae565b9350506020614982868287016147ae565b925050604061499386828701614896565b9150509250925092565b600080604083850312156149b057600080fd5b60006149be858286016147ae565b92505060206149cf8582860161486c565b9150509250929050565b600080604083850312156149ec57600080fd5b60006149fa858286016147ae565b9250506020614a0b85828601614896565b9150509250929050565b60008060008060408587031215614a2b57600080fd5b600085013567ffffffffffffffff811115614a4557600080fd5b614a51878288016147d8565b9450945050602085013567ffffffffffffffff811115614a7057600080fd5b614a7c87828801614822565b925092505092959194509250565b600060208284031215614a9c57600080fd5b6000614aaa8482850161486c565b91505092915050565b600060208284031215614ac557600080fd5b6000614ad384828501614881565b91505092915050565b600060208284031215614aee57600080fd5b6000614afc84828501614896565b91505092915050565b600080600060608486031215614b1a57600080fd5b6000614b2886828701614896565b9350506020614b3986828701614896565b9250506040614b4a86828701614896565b9150509250925092565b600080600060608486031215614b6957600080fd5b6000614b77868287016148ab565b9350506020614b88868287016148ab565b9250506040614b99868287016148ab565b9150509250925092565b6000614baf8383614bca565b60208301905092915050565b614bc4816153f1565b82525050565b614bd3816153df565b82525050565b614be2816153df565b82525050565b6000614bf38261527a565b614bfd818561529d565b9350614c088361526a565b8060005b83811015614c39578151614c208882614ba3565b9750614c2b83615290565b925050600181019050614c0c565b5085935050505092915050565b614c4f81615403565b82525050565b614c5e81615446565b82525050565b614c6d8161546a565b82525050565b6000614c7e82615285565b614c8881856152b9565b9350614c9881856020860161547c565b614ca1816155b7565b840191505092915050565b6000614cb96023836152b9565b9150614cc4826155c8565b604082019050919050565b6000614cdc601b836152b9565b9150614ce782615617565b602082019050919050565b6000614cff6026836152b9565b9150614d0a82615640565b604082019050919050565b6000614d226022836152b9565b9150614d2d8261568f565b604082019050919050565b6000614d45601b836152b9565b9150614d50826156de565b602082019050919050565b6000614d686025836152b9565b9150614d7382615707565b604082019050919050565b6000614d8b601d836152b9565b9150614d9682615756565b602082019050919050565b6000614dae6028836152b9565b9150614db98261577f565b604082019050919050565b6000614dd16021836152b9565b9150614ddc826157ce565b604082019050919050565b6000614df46016836152b9565b9150614dff8261581d565b602082019050919050565b6000614e176020836152b9565b9150614e2282615846565b602082019050919050565b6000614e3a6025836152b9565b9150614e458261586f565b604082019050919050565b6000614e5d6000836152ae565b9150614e68826158be565b600082019050919050565b6000614e806024836152b9565b9150614e8b826158c1565b604082019050919050565b614e9f8161542f565b82525050565b614eae81615439565b82525050565b6000614ebf82614e50565b9150819050919050565b6000602082019050614ede6000830184614bd9565b92915050565b6000602082019050614ef96000830184614bbb565b92915050565b6000604082019050614f146000830185614bd9565b614f216020830184614bd9565b9392505050565b6000604082019050614f3d6000830185614bd9565b614f4a6020830184614e96565b9392505050565b600060c082019050614f666000830189614bd9565b614f736020830188614e96565b614f806040830187614c64565b614f8d6060830186614c64565b614f9a6080830185614bd9565b614fa760a0830184614e96565b979650505050505050565b6000602082019050614fc76000830184614c46565b92915050565b6000602082019050614fe26000830184614c55565b92915050565b600060208201905081810360008301526150028184614c73565b905092915050565b6000602082019050818103600083015261502381614cac565b9050919050565b6000602082019050818103600083015261504381614ccf565b9050919050565b6000602082019050818103600083015261506381614cf2565b9050919050565b6000602082019050818103600083015261508381614d15565b9050919050565b600060208201905081810360008301526150a381614d38565b9050919050565b600060208201905081810360008301526150c381614d5b565b9050919050565b600060208201905081810360008301526150e381614d7e565b9050919050565b6000602082019050818103600083015261510381614da1565b9050919050565b6000602082019050818103600083015261512381614dc4565b9050919050565b6000602082019050818103600083015261514381614de7565b9050919050565b6000602082019050818103600083015261516381614e0a565b9050919050565b6000602082019050818103600083015261518381614e2d565b9050919050565b600060208201905081810360008301526151a381614e73565b9050919050565b60006020820190506151bf6000830184614e96565b92915050565b60006040820190506151da6000830185614e96565b81810360208301526151ec8184614be8565b90509392505050565b600060a08201905061520a6000830188614e96565b6152176020830187614c64565b81810360408301526152298186614be8565b90506152386060830185614bd9565b6152456080830184614e96565b9695505050505050565b60006020820190506152646000830184614ea5565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006152d58261542f565b91506152e08361542f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156153155761531461552a565b5b828201905092915050565b600061532b8261542f565b91506153368361542f565b92508261534657615345615559565b5b828204905092915050565b600061535c8261542f565b91506153678361542f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156153a05761539f61552a565b5b828202905092915050565b60006153b68261542f565b91506153c18361542f565b9250828210156153d4576153d361552a565b5b828203905092915050565b60006153ea8261540f565b9050919050565b60006153fc8261540f565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061545182615458565b9050919050565b60006154638261540f565b9050919050565b60006154758261542f565b9050919050565b60005b8381101561549a57808201518184015260208101905061547f565b838111156154a9576000848401525b50505050565b600060028204905060018216806154c757607f821691505b602082108114156154db576154da615588565b5b50919050565b60006154ec8261542f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561551f5761551e61552a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b7f426f7420456e656d792061646472657373205265737472696374656421000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b615919816153df565b811461592457600080fd5b50565b61593081615403565b811461593b57600080fd5b50565b6159478161542f565b811461595257600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207ead2b4c567f24e46648c6d27f2e2002714f756923166561de087e243c83d80564736f6c63430008040033

Deployed Bytecode Sourcemap

12839:16326:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16755:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21686:317;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13344:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17921:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20354:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14477:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17032:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21369:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18854:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13919:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22280:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19231:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13256:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20190:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16941:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17418:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19462:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13618:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14592:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19594:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14053:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13561:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20613:748;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28457:697;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17140:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4516:230;;;;;;;;;;;;;:::i;:::-;;13052:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14331:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14403:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14137:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18435:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14735:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13967:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13778:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4291:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16846:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17644:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20053:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22105:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19874:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13877:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14525:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14010:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13719:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14242:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14639:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13835:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17267:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24642:154;;;;;;;;;;;;;:::i;:::-;;19112:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18997:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18572:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14098:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19352:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4754:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24495:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18715:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14693:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13151:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13670:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19734:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16755:83;16792:13;16825:5;16818:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16755:83;:::o;21686:317::-;4435:12;:10;:12::i;:::-;4425:22;;:6;;;;;;;;;;:22;;;4417:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21808:10:::1;21788:17;:30;;;;21849:10;21829:17;:30;;;;21890:10;21870:17;:30;;;;21932:63;21977:17;;21932:40;21954:17;;21932;;:21;;:40;;;;:::i;:::-;:44;;:63;;;;:::i;:::-;21911:18;:84;;;;21686:317:::0;;;:::o;13344:81::-;;;:::o;17921:161::-;17996:4;18013:39;18022:12;:10;:12::i;:::-;18036:7;18045:6;18013:8;:39::i;:::-;18070:4;18063:11;;17921:161;;;;:::o;20354:113::-;4435:12;:10;:12::i;:::-;4425:22;;:6;;;;;;;;;;:22;;;4417:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20452:7:::1;20434:9;:15;20444:4;20434:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;20354:113:::0;;:::o;14477:41::-;;;;;;;;;;;;;:::o;17032:100::-;17085:7;17112:12;;17105:19;;17032:100;:::o;21369:309::-;4435:12;:10;:12::i;:::-;4425:22;;:6;;;;;;;;;;:22;;;4417:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21489:10:::1;21470:16;:29;;;;21529:10;21510:16;:29;;;;21569:10;21550:16;:29;;;;21610:60;21653:16;;21610:38;21631:16;;21610;;:20;;:38;;;;:::i;:::-;:42;;:60;;;;:::i;:::-;21590:17;:80;;;;21369:309:::0;;;:::o;18854:135::-;4435:12;:10;:12::i;:::-;4425:22;;:6;;;;;;;;;;:22;;;4417:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18975:6:::1;18945:19;:27;18965:6;18945:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;18854:135:::0;;:::o;13919:35::-;;;;:::o;22280:313::-;22378:4;22395:36;22405:6;22413:9;22424:6;22395:9;:36::i;:::-;;22442:121;22451:6;22459:12;:10;:12::i;:::-;22473:89;22511:6;22473:89;;;;;;;;;;;;;;;;;:11;:19;22485:6;22473:19;;;;;;;;;;;;;;;:33;22493:12;:10;:12::i;:::-;22473:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;22442:8;:121::i;:::-;22581:4;22574:11;;22280:313;;;;;:::o;19231:113::-;4435:12;:10;:12::i;:::-;4425:22;;:6;;;;;;;;;;:22;;;4417:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19328:8:::1;19309:16;;:27;;;;;;;;;;;;;;;;;;19231:113:::0;:::o;13256:81::-;;;:::o;20190:156::-;20243:7;20270:68;20315:22;20325:11;20315:9;:22::i;:::-;20270:40;20287:22;20297:11;20287:9;:22::i;:::-;20270:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;20263:75;;20190:156;:::o;16941:83::-;16982:5;17007:9;;;;;;;;;;;17000:16;;16941:83;:::o;17418:218::-;17506:4;17523:83;17532:12;:10;:12::i;:::-;17546:7;17555:50;17594:10;17555:11;:25;17567:12;:10;:12::i;:::-;17555:25;;;;;;;;;;;;;;;:34;17581:7;17555:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;17523:8;:83::i;:::-;17624:4;17617:11;;17418:218;;;;:::o;19462:124::-;4435:12;:10;:12::i;:::-;4425:22;;:6;;;;;;;;;;:22;;;4417:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19570:8:::1;19544:23;:34;;;;19462:124:::0;:::o;13618:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;14592:40::-;;;;;;;;;;;;;:::o;19594:132::-;4435:12;:10;:12::i;:::-;4425:22;;:6;;;;;;;;;;:22;;;4417:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19707:10:::1;19681:15;;:37;;;;;;;;;;;;;;;;;;19594:132:::0;:::o;14053:36::-;;;;:::o;13561:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;20613:748::-;20693:22;4435:12;:10;:12::i;:::-;4425:22;;:6;;;;;;;;;;:22;;;4417:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20730:35:::1;20787:16;20730:74;;20853:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20835:53;;;20897:4;20904:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20835:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20818:110;;20970:1;20944:28;;:14;:28;;;20941:225;;;21058:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21040:74;;;21123:4;21130:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21040:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21023:131;;20941:225;21192:14;21178:11;;:28;;;;;;;;;;;;;;;;;;21258:16;21240:15;;:34;;;;;;;;;;;;;;;;;;21349:4;21312:12;:34;21333:11;;;;;;;;;;;21312:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;4495:1;20613:748:::0;;;:::o;28457:697::-;4435:12;:10;:12::i;:::-;4425:22;;:6;;;;;;;;;;:22;;;4417:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28557:15:::1;28575:10;28557:28;;28623:7;;:14;;28604:8;;:15;;:33;28596:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28674:15;28704:6:::0;28713:1:::1;28704:10;;28700:92;28720:7;;:14;;28716:1;:18;28700:92;;;28770:7;;28778:1;28770:10;;;;;;;;;;;;;;;;;;;;;28756:24;;;;;:::i;:::-;;;28736:3;;;;;:::i;:::-;;;;28700:92;;;;28832:10;28810:18;28820:7;28810:9;:18::i;:::-;:32;;28802:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;28905:34;28928:10;28905:9;:18;28915:7;28905:18;;;;;;;;;;;;;;;;:22;;:34;;;;:::i;:::-;28884:9;:18;28894:7;28884:18;;;;;;;;;;;;;;;:55;;;;28955:6;28951:194;28971:8;;:15;;28967:1;:19;28951:194;;;29033:38;29060:7;;29068:1;29060:10;;;;;;;;;;;;;;;;;;;;;29033:9;:22;29043:8;;29052:1;29043:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29033:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;29008:9;:22;29018:8;;29027:1;29018:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29008:22;;;;;;;;;;;;;;;:63;;;;29109:8;;29118:1;29109:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29091:42;;29100:7;29091:42;;;29122:7;;29130:1;29122:10;;;;;;;;;;;;;;;;;;;;;29091:42;;;;;;:::i;:::-;;;;;;;;28988:3;;;;;:::i;:::-;;;;28951:194;;;;4495:1;;28457:697:::0;;;;:::o;17140:119::-;17206:7;17233:9;:18;17243:7;17233:18;;;;;;;;;;;;;;;;17226:25;;17140:119;;;:::o;4516:230::-;4435:12;:10;:12::i;:::-;4425:22;;:6;;;;;;;;;;:22;;;4417:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4623:42:::1;4586:81;;4607:6;::::0;::::1;;;;;;;;4586:81;;;;;;;;;;;;4695:42;4678:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;4516:230::o:0;13052:92::-;;;;;;;;;;;;;:::o;14331:59::-;;;;:::o;14403:58::-;;;;:::o;14137:33::-;;;;:::o;18435:129::-;4435:12;:10;:12::i;:::-;4425:22;;:6;;;;;;;;;;:22;;;4417:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18548:8:::1;18524:12;:21;18537:7;18524:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;18435:129:::0;;:::o;14735:41::-;;;;;;;;;;;;;:::o;13967:36::-;;;;:::o;13778:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;4291:79::-;4329:7;4356:6;;;;;;;;;;;4349:13;;4291:79;:::o;16846:87::-;16885:13;16918:7;16911:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16846:87;:::o;17644:269::-;17737:4;17754:129;17763:12;:10;:12::i;:::-;17777:7;17786:96;17825:15;17786:96;;;;;;;;;;;;;;;;;:11;:25;17798:12;:10;:12::i;:::-;17786:25;;;;;;;;;;;;;;;:34;17812:7;17786:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;17754:8;:129::i;:::-;17901:4;17894:11;;17644:269;;;;:::o;20053:125::-;4435:12;:10;:12::i;:::-;4425:22;;:6;;;;;;;;;;:22;;;4417:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20162:8:::1;20134:25;;:36;;;;;;;;;;;;;;;;;;20053:125:::0;:::o;22105:167::-;22183:4;22200:42;22210:12;:10;:12::i;:::-;22224:9;22235:6;22200:9;:42::i;:::-;;22260:4;22253:11;;22105:167;;;;:::o;19874:171::-;4435:12;:10;:12::i;:::-;4425:22;;:6;;;;;;;;;;:22;;;4417:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19975:8:::1;19951:21;;:32;;;;;;;;;;;;;;;;;;19999:38;20028:8;19999:38;;;;;;:::i;:::-;;;;;;;;19874:171:::0;:::o;13877:35::-;;;;:::o;14525:26::-;;;;;;;;;;;;;:::o;14010:36::-;;;;:::o;13719:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;14242:69::-;;;;:::o;14639:45::-;;;;;;;;;;;;;:::o;13835:35::-;;;;:::o;17267:143::-;17348:7;17375:11;:18;17387:5;17375:18;;;;;;;;;;;;;;;:27;17394:7;17375:27;;;;;;;;;;;;;;;;17368:34;;17267:143;;;;:::o;24642:154::-;4435:12;:10;:12::i;:::-;4425:22;;:6;;;;;;;;;;:22;;;4417:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24696:7:::1;24716:10;24708:24;;24740:21;24708:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24695:71;;;24785:2;24777:11;;;::::0;::::1;;4495:1;24642:154::o:0;19112:111::-;4435:12;:10;:12::i;:::-;4425:22;;:6;;;;;;;;;;:22;;;4417:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19204:11:::1;19189:12;:26;;;;19112:111:::0;:::o;18997:107::-;4435:12;:10;:12::i;:::-;4425:22;;:6;;;;;;;;;;:22;;;4417:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19089:7:::1;19064:22;;:32;;;;;;;;;;;;;;;;;;18997:107:::0;:::o;18572:135::-;4435:12;:10;:12::i;:::-;4425:22;;:6;;;;;;;;;;:22;;;4417:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18691:8:::1;18662:17;:26;18680:7;18662:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;18572:135:::0;;:::o;14098:32::-;;;;:::o;19352:102::-;4435:12;:10;:12::i;:::-;4425:22;;:6;;;;;;;;;;:22;;;4417:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19438:8:::1;19424:10;:22;;;;19352:102:::0;:::o;4754:244::-;4435:12;:10;:12::i;:::-;4425:22;;:6;;;;;;;;;;:22;;;4417:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4863:1:::1;4843:22;;:8;:22;;;;4835:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;4953:8;4924:38;;4945:6;::::0;::::1;;;;;;;;4924:38;;;;;;;;;;;;4982:8;4973:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;4754:244:::0;:::o;24495:139::-;4435:12;:10;:12::i;:::-;4425:22;;:6;;;;;;;;;;:22;;;4417:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24590:6:::1;24583:23;;;24607:10;24618:7;24583:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24495:139:::0;;:::o;18715:127::-;4435:12;:10;:12::i;:::-;4425:22;;:6;;;;;;;;;;:22;;;4417:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18828:6:::1;18802:15;:23;18818:6;18802:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;18715:127:::0;;:::o;14693:35::-;;;;;;;;;;;;;:::o;13151:92::-;;;;;;;;;;;;;:::o;13670:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;19734:132::-;4435:12;:10;:12::i;:::-;4425:22;;:6;;;;;;;;;;:22;;;4417:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19847:10:::1;19821:15;;:37;;;;;;;;;;;;;;;;;;19734:132:::0;:::o;2976:250::-;3034:7;3063:1;3058;:6;3054:47;;;3088:1;3081:8;;;;3054:47;3113:9;3129:1;3125;:5;;;;:::i;:::-;3113:17;;3158:1;3153;3149;:5;;;;:::i;:::-;:10;3141:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3217:1;3210:8;;;2976:250;;;;;:::o;3234:132::-;3292:7;3319:39;3323:1;3326;3319:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3312:46;;3234:132;;;;:::o;2443:181::-;2501:7;2521:9;2537:1;2533;:5;;;;:::i;:::-;2521:17;;2562:1;2557;:6;;2549:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2615:1;2608:8;;;2443:181;;;;:::o;1501:115::-;1554:15;1597:10;1582:26;;1501:115;:::o;18090:337::-;18200:1;18183:19;;:5;:19;;;;18175:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18281:1;18262:21;;:7;:21;;;;18254:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18365:6;18335:11;:18;18347:5;18335:18;;;;;;;;;;;;;;;:27;18354:7;18335:27;;;;;;;;;;;;;;;:36;;;;18403:7;18387:32;;18396:5;18387:32;;;18412:6;18387:32;;;;;;:::i;:::-;;;;;;;;18090:337;;;:::o;22601:1886::-;22688:4;22733:1;22715:20;;:6;:20;;;;22707:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;22817:1;22796:23;;:9;:23;;;;22788:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;22879:9;:17;22889:6;22879:17;;;;;;;;;;;;;;;;;;;;;;;;;22878:18;:43;;;;;22901:9;:20;22911:9;22901:20;;;;;;;;;;;;;;;;;;;;;;;;;22900:21;22878:43;22870:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;22971:16;;;;;;;;;;;22968:1502;;;23021:41;23036:6;23044:9;23055:6;23021:14;:41::i;:::-;23014:48;;;;22968:1502;23120:15;:23;23136:6;23120:23;;;;;;;;;;;;;;;;;;;;;;;;;23119:24;:55;;;;;23148:15;:26;23164:9;23148:26;;;;;;;;;;;;;;;;;;;;;;;;;23147:27;23119:55;:81;;;;;23178:22;;;;;;;;;;;23119:81;23116:196;;;23239:12;;23229:6;:22;;23221:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;23116:196;23328:28;23359:24;23377:4;23359:9;:24::i;:::-;23328:55;;23398:28;23453:23;;23429:20;:47;;23398:78;;23509:23;:44;;;;;23537:16;;;;;;;;;;;23536:17;23509:44;:69;;;;;23558:12;:20;23571:6;23558:20;;;;;;;;;;;;;;;;;;;;;;;;;23557:21;23509:69;:94;;;;;23582:21;;;;;;;;;;;23509:94;23505:305;;;23641:25;;;;;;;;;;;23638:97;;;23712:23;;23689:46;;23638:97;23754:36;23769:20;23754:14;:36::i;:::-;23505:305;23846:53;23868:6;23846:53;;;;;;;;;;;;;;;;;:9;:17;23856:6;23846:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;23826:9;:17;23836:6;23826:17;;;;;;;;;;;;;;;:73;;;;23916:19;23939:17;:25;23957:6;23939:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;23968:17;:28;23986:9;23968:28;;;;;;;;;;;;;;;;;;;;;;;;;23939:57;23938:148;;24052:34;24060:6;24068:9;24079:6;24052:7;:34::i;:::-;23938:148;;;24043:6;23938:148;23916:170;;24106:16;;;;;;;;;;;:51;;;;;24127:19;:30;24147:9;24127:30;;;;;;;;;;;;;;;;;;;;;;;;;24126:31;24106:51;24103:191;;;24227:10;;24186:37;24211:11;24186:20;24196:9;24186;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;24178:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;24103:191;24333:37;24358:11;24333:9;:20;24343:9;24333:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;24310:9;:20;24320:9;24310:20;;;;;;;;;;;;;;;:60;;;;24409:9;24392:40;;24401:6;24392:40;;;24420:11;24392:40;;;;;;:::i;:::-;;;;;;;;24454:4;24447:11;;;;;22601:1886;;;;;;:::o;2776:192::-;2862:7;2895:1;2890;:6;;2898:12;2882:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2922:9;2938:1;2934;:5;;;;:::i;:::-;2922:17;;2959:1;2952:8;;;2776:192;;;;;:::o;2632:136::-;2690:7;2717:43;2721:1;2724;2717:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2710:50;;2632:136;;;;:::o;3374:278::-;3460:7;3492:1;3488;:5;3495:12;3480:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3519:9;3535:1;3531;:5;;;;:::i;:::-;3519:17;;3643:1;3636:8;;;3374:278;;;;;:::o;24804:330::-;24897:4;24934:53;24956:6;24934:53;;;;;;;;;;;;;;;;;:9;:17;24944:6;24934:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;24914:9;:17;24924:6;24914:17;;;;;;;;;;;;;;;:73;;;;25021:32;25046:6;25021:9;:20;25031:9;25021:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;24998:9;:20;25008:9;24998:20;;;;;;;;;;;;;;;:55;;;;25086:9;25069:35;;25078:6;25069:35;;;25097:6;25069:35;;;;;;:::i;:::-;;;;;;;;25122:4;25115:11;;24804:330;;;;;:::o;25142:1449::-;15220:4;15201:16;;:23;;;;;;;;;;;;;;;;;;25216:19:::1;25238:41;25260:18;;25238:17;;:21;;:41;;;;:::i;:::-;25216:63;;25292:22;25317:39;25338:17;;25317:16;;:20;;:39;;;;:::i;:::-;25292:64;;25367:22;25392:39;25413:17;;25392:16;;:20;;:39;;;;:::i;:::-;25367:64;;25530:18;25551:51;25600:1;25551:44;25583:11;25551:27;25563:14;25551:7;:11;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;25530:72;;25613:20;25636:23;25648:10;25636:7;:11;;:23;;;;:::i;:::-;25613:46;;25672:22;25698:21;25672:47;;25730:30;25747:12;25730:16;:30::i;:::-;25771:23;25798:41;25824:14;25798:21;:25;;:41;;;;:::i;:::-;25771:68;;25852:19;25874:38;25890:21;25909:1;25890:14;:18;;:21;;;;:::i;:::-;25874:11;:15;;:38;;;;:::i;:::-;25852:60;;25925:26;25954:59;26011:1;25954:52;25994:11;25954:35;25974:14;25954:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;25925:88;;26024:26;26053:52;26093:11;26053:35;26073:14;26053:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;26024:81;;26116:26;26145:63;26189:18;26145:39;26165:18;26145:15;:19;;:39;;;;:::i;:::-;:43;;:63;;;;:::i;:::-;26116:92;;26245:1;26224:18;:22;26221:107;;;26271:15;;;;;;;;;;;26263:33;;:53;26297:18;26263:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;26221:107;26364:1;26343:18;:22;26340:107;;;26390:15;;;;;;;;;;;26382:33;;:53;26416:18;26382:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;26340:107;26492:1;26471:18;:22;:40;;;;;26510:1;26497:10;:14;26471:40;26468:116;;;26528:44;26541:10;26553:18;26528:12;:44::i;:::-;26468:116;15235:1;;;;;;;;;;;15266:5:::0;15247:16;;:24;;;;;;;;;;;;;;;;;;25142:1449;:::o;27798:622::-;27884:7;27914:17;27934:1;27914:21;;27959:12;:20;27972:6;27959:20;;;;;;;;;;;;;;;;;;;;;;;;;27956:223;;;28008:38;28042:3;28008:29;28019:17;;28008:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;27996:50;;27956:223;;;28076:12;:23;28089:9;28076:23;;;;;;;;;;;;;;;;;;;;;;;;;28073:106;;;28128:39;28163:3;28128:30;28139:18;;28128:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;28116:51;;28073:106;27956:223;28214:1;28202:9;:13;28199:173;;;28259:39;28288:9;28259;:24;28277:4;28259:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;28232:9;:24;28250:4;28232:24;;;;;;;;;;;;;;;:66;;;;28343:4;28318:42;;28327:6;28318:42;;;28350:9;28318:42;;;;;;:::i;:::-;;;;;;;;28199:173;28391:21;28402:9;28391:6;:10;;:21;;;;:::i;:::-;28384:28;;;27798:622;;;;;:::o;26603:666::-;26729:21;26767:1;26753:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26729:40;;26798:4;26780;26785:1;26780:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;26824:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26814:4;26819:1;26814:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;26859:62;26876:4;26891:15;;;;;;;;;;;26909:11;26859:8;:62::i;:::-;26960:15;;;;;;;;;;;:66;;;27041:11;27067:1;27111:4;27138;27174:15;26960:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27226:35;27243:11;27256:4;27226:35;;;;;;;:::i;:::-;;;;;;;;26603:666;;:::o;27277:513::-;27425:62;27442:4;27457:15;;;;;;;;;;;27475:11;27425:8;:62::i;:::-;27530:15;;;;;;;;;;;:31;;;27569:9;27602:4;27622:11;27648:1;27691;27734:7;:5;:7::i;:::-;27756:15;27530:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;27277:513;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;318:367::-;391:8;401:6;451:3;444:4;436:6;432:17;428:27;418:2;;469:1;466;459:12;418:2;505:6;492:20;482:30;;535:18;527:6;524:30;521:2;;;567:1;564;557:12;521:2;604:4;596:6;592:17;580:29;;658:3;650:4;642:6;638:17;628:8;624:32;621:41;618:2;;;675:1;672;665:12;618:2;408:277;;;;;:::o;708:367::-;781:8;791:6;841:3;834:4;826:6;822:17;818:27;808:2;;859:1;856;849:12;808:2;895:6;882:20;872:30;;925:18;917:6;914:30;911:2;;;957:1;954;947:12;911:2;994:4;986:6;982:17;970:29;;1048:3;1040:4;1032:6;1028:17;1018:8;1014:32;1011:41;1008:2;;;1065:1;1062;1055:12;1008:2;798:277;;;;;:::o;1081:133::-;1124:5;1162:6;1149:20;1140:29;;1178:30;1202:5;1178:30;:::i;:::-;1130:84;;;;:::o;1220:137::-;1274:5;1305:6;1299:13;1290:22;;1321:30;1345:5;1321:30;:::i;:::-;1280:77;;;;:::o;1363:139::-;1409:5;1447:6;1434:20;1425:29;;1463:33;1490:5;1463:33;:::i;:::-;1415:87;;;;:::o;1508:143::-;1565:5;1596:6;1590:13;1581:22;;1612:33;1639:5;1612:33;:::i;:::-;1571:80;;;;:::o;1657:262::-;1716:6;1765:2;1753:9;1744:7;1740:23;1736:32;1733:2;;;1781:1;1778;1771:12;1733:2;1824:1;1849:53;1894:7;1885:6;1874:9;1870:22;1849:53;:::i;:::-;1839:63;;1795:117;1723:196;;;;:::o;1925:284::-;1995:6;2044:2;2032:9;2023:7;2019:23;2015:32;2012:2;;;2060:1;2057;2050:12;2012:2;2103:1;2128:64;2184:7;2175:6;2164:9;2160:22;2128:64;:::i;:::-;2118:74;;2074:128;2002:207;;;;:::o;2215:407::-;2283:6;2291;2340:2;2328:9;2319:7;2315:23;2311:32;2308:2;;;2356:1;2353;2346:12;2308:2;2399:1;2424:53;2469:7;2460:6;2449:9;2445:22;2424:53;:::i;:::-;2414:63;;2370:117;2526:2;2552:53;2597:7;2588:6;2577:9;2573:22;2552:53;:::i;:::-;2542:63;;2497:118;2298:324;;;;;:::o;2628:552::-;2705:6;2713;2721;2770:2;2758:9;2749:7;2745:23;2741:32;2738:2;;;2786:1;2783;2776:12;2738:2;2829:1;2854:53;2899:7;2890:6;2879:9;2875:22;2854:53;:::i;:::-;2844:63;;2800:117;2956:2;2982:53;3027:7;3018:6;3007:9;3003:22;2982:53;:::i;:::-;2972:63;;2927:118;3084:2;3110:53;3155:7;3146:6;3135:9;3131:22;3110:53;:::i;:::-;3100:63;;3055:118;2728:452;;;;;:::o;3186:401::-;3251:6;3259;3308:2;3296:9;3287:7;3283:23;3279:32;3276:2;;;3324:1;3321;3314:12;3276:2;3367:1;3392:53;3437:7;3428:6;3417:9;3413:22;3392:53;:::i;:::-;3382:63;;3338:117;3494:2;3520:50;3562:7;3553:6;3542:9;3538:22;3520:50;:::i;:::-;3510:60;;3465:115;3266:321;;;;;:::o;3593:407::-;3661:6;3669;3718:2;3706:9;3697:7;3693:23;3689:32;3686:2;;;3734:1;3731;3724:12;3686:2;3777:1;3802:53;3847:7;3838:6;3827:9;3823:22;3802:53;:::i;:::-;3792:63;;3748:117;3904:2;3930:53;3975:7;3966:6;3955:9;3951:22;3930:53;:::i;:::-;3920:63;;3875:118;3676:324;;;;;:::o;4006:733::-;4128:6;4136;4144;4152;4201:2;4189:9;4180:7;4176:23;4172:32;4169:2;;;4217:1;4214;4207:12;4169:2;4288:1;4277:9;4273:17;4260:31;4318:18;4310:6;4307:30;4304:2;;;4350:1;4347;4340:12;4304:2;4386:80;4458:7;4449:6;4438:9;4434:22;4386:80;:::i;:::-;4368:98;;;;4231:245;4543:2;4532:9;4528:18;4515:32;4574:18;4566:6;4563:30;4560:2;;;4606:1;4603;4596:12;4560:2;4642:80;4714:7;4705:6;4694:9;4690:22;4642:80;:::i;:::-;4624:98;;;;4486:246;4159:580;;;;;;;:::o;4745:256::-;4801:6;4850:2;4838:9;4829:7;4825:23;4821:32;4818:2;;;4866:1;4863;4856:12;4818:2;4909:1;4934:50;4976:7;4967:6;4956:9;4952:22;4934:50;:::i;:::-;4924:60;;4880:114;4808:193;;;;:::o;5007:278::-;5074:6;5123:2;5111:9;5102:7;5098:23;5094:32;5091:2;;;5139:1;5136;5129:12;5091:2;5182:1;5207:61;5260:7;5251:6;5240:9;5236:22;5207:61;:::i;:::-;5197:71;;5153:125;5081:204;;;;:::o;5291:262::-;5350:6;5399:2;5387:9;5378:7;5374:23;5370:32;5367:2;;;5415:1;5412;5405:12;5367:2;5458:1;5483:53;5528:7;5519:6;5508:9;5504:22;5483:53;:::i;:::-;5473:63;;5429:117;5357:196;;;;:::o;5559:552::-;5636:6;5644;5652;5701:2;5689:9;5680:7;5676:23;5672:32;5669:2;;;5717:1;5714;5707:12;5669:2;5760:1;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5731:117;5887:2;5913:53;5958:7;5949:6;5938:9;5934:22;5913:53;:::i;:::-;5903:63;;5858:118;6015:2;6041:53;6086:7;6077:6;6066:9;6062:22;6041:53;:::i;:::-;6031:63;;5986:118;5659:452;;;;;:::o;6117:596::-;6205:6;6213;6221;6270:2;6258:9;6249:7;6245:23;6241:32;6238:2;;;6286:1;6283;6276:12;6238:2;6329:1;6354:64;6410:7;6401:6;6390:9;6386:22;6354:64;:::i;:::-;6344:74;;6300:128;6467:2;6493:64;6549:7;6540:6;6529:9;6525:22;6493:64;:::i;:::-;6483:74;;6438:129;6606:2;6632:64;6688:7;6679:6;6668:9;6664:22;6632:64;:::i;:::-;6622:74;;6577:129;6228:485;;;;;:::o;6719:179::-;6788:10;6809:46;6851:3;6843:6;6809:46;:::i;:::-;6887:4;6882:3;6878:14;6864:28;;6799:99;;;;:::o;6904:142::-;7007:32;7033:5;7007:32;:::i;:::-;7002:3;6995:45;6985:61;;:::o;7052:108::-;7129:24;7147:5;7129:24;:::i;:::-;7124:3;7117:37;7107:53;;:::o;7166:118::-;7253:24;7271:5;7253:24;:::i;:::-;7248:3;7241:37;7231:53;;:::o;7320:732::-;7439:3;7468:54;7516:5;7468:54;:::i;:::-;7538:86;7617:6;7612:3;7538:86;:::i;:::-;7531:93;;7648:56;7698:5;7648:56;:::i;:::-;7727:7;7758:1;7743:284;7768:6;7765:1;7762:13;7743:284;;;7844:6;7838:13;7871:63;7930:3;7915:13;7871:63;:::i;:::-;7864:70;;7957:60;8010:6;7957:60;:::i;:::-;7947:70;;7803:224;7790:1;7787;7783:9;7778:14;;7743:284;;;7747:14;8043:3;8036:10;;7444:608;;;;;;;:::o;8058:109::-;8139:21;8154:5;8139:21;:::i;:::-;8134:3;8127:34;8117:50;;:::o;8173:185::-;8287:64;8345:5;8287:64;:::i;:::-;8282:3;8275:77;8265:93;;:::o;8364:147::-;8459:45;8498:5;8459:45;:::i;:::-;8454:3;8447:58;8437:74;;:::o;8517:364::-;8605:3;8633:39;8666:5;8633:39;:::i;:::-;8688:71;8752:6;8747:3;8688:71;:::i;:::-;8681:78;;8768:52;8813:6;8808:3;8801:4;8794:5;8790:16;8768:52;:::i;:::-;8845:29;8867:6;8845:29;:::i;:::-;8840:3;8836:39;8829:46;;8609:272;;;;;:::o;8887:366::-;9029:3;9050:67;9114:2;9109:3;9050:67;:::i;:::-;9043:74;;9126:93;9215:3;9126:93;:::i;:::-;9244:2;9239:3;9235:12;9228:19;;9033:220;;;:::o;9259:366::-;9401:3;9422:67;9486:2;9481:3;9422:67;:::i;:::-;9415:74;;9498:93;9587:3;9498:93;:::i;:::-;9616:2;9611:3;9607:12;9600:19;;9405:220;;;:::o;9631:366::-;9773:3;9794:67;9858:2;9853:3;9794:67;:::i;:::-;9787:74;;9870:93;9959:3;9870:93;:::i;:::-;9988:2;9983:3;9979:12;9972:19;;9777:220;;;:::o;10003:366::-;10145:3;10166:67;10230:2;10225:3;10166:67;:::i;:::-;10159:74;;10242:93;10331:3;10242:93;:::i;:::-;10360:2;10355:3;10351:12;10344:19;;10149:220;;;:::o;10375:366::-;10517:3;10538:67;10602:2;10597:3;10538:67;:::i;:::-;10531:74;;10614:93;10703:3;10614:93;:::i;:::-;10732:2;10727:3;10723:12;10716:19;;10521:220;;;:::o;10747:366::-;10889:3;10910:67;10974:2;10969:3;10910:67;:::i;:::-;10903:74;;10986:93;11075:3;10986:93;:::i;:::-;11104:2;11099:3;11095:12;11088:19;;10893:220;;;:::o;11119:366::-;11261:3;11282:67;11346:2;11341:3;11282:67;:::i;:::-;11275:74;;11358:93;11447:3;11358:93;:::i;:::-;11476:2;11471:3;11467:12;11460:19;;11265:220;;;:::o;11491:366::-;11633:3;11654:67;11718:2;11713:3;11654:67;:::i;:::-;11647:74;;11730:93;11819:3;11730:93;:::i;:::-;11848:2;11843:3;11839:12;11832:19;;11637:220;;;:::o;11863:366::-;12005:3;12026:67;12090:2;12085:3;12026:67;:::i;:::-;12019:74;;12102:93;12191:3;12102:93;:::i;:::-;12220:2;12215:3;12211:12;12204:19;;12009:220;;;:::o;12235:366::-;12377:3;12398:67;12462:2;12457:3;12398:67;:::i;:::-;12391:74;;12474:93;12563:3;12474:93;:::i;:::-;12592:2;12587:3;12583:12;12576:19;;12381:220;;;:::o;12607:366::-;12749:3;12770:67;12834:2;12829:3;12770:67;:::i;:::-;12763:74;;12846:93;12935:3;12846:93;:::i;:::-;12964:2;12959:3;12955:12;12948:19;;12753:220;;;:::o;12979:366::-;13121:3;13142:67;13206:2;13201:3;13142:67;:::i;:::-;13135:74;;13218:93;13307:3;13218:93;:::i;:::-;13336:2;13331:3;13327:12;13320:19;;13125:220;;;:::o;13351:398::-;13510:3;13531:83;13612:1;13607:3;13531:83;:::i;:::-;13524:90;;13623:93;13712:3;13623:93;:::i;:::-;13741:1;13736:3;13732:11;13725:18;;13514:235;;;:::o;13755:366::-;13897:3;13918:67;13982:2;13977:3;13918:67;:::i;:::-;13911:74;;13994:93;14083:3;13994:93;:::i;:::-;14112:2;14107:3;14103:12;14096:19;;13901:220;;;:::o;14127:118::-;14214:24;14232:5;14214:24;:::i;:::-;14209:3;14202:37;14192:53;;:::o;14251:112::-;14334:22;14350:5;14334:22;:::i;:::-;14329:3;14322:35;14312:51;;:::o;14369:379::-;14553:3;14575:147;14718:3;14575:147;:::i;:::-;14568:154;;14739:3;14732:10;;14557:191;;;:::o;14754:222::-;14847:4;14885:2;14874:9;14870:18;14862:26;;14898:71;14966:1;14955:9;14951:17;14942:6;14898:71;:::i;:::-;14852:124;;;;:::o;14982:254::-;15091:4;15129:2;15118:9;15114:18;15106:26;;15142:87;15226:1;15215:9;15211:17;15202:6;15142:87;:::i;:::-;15096:140;;;;:::o;15242:332::-;15363:4;15401:2;15390:9;15386:18;15378:26;;15414:71;15482:1;15471:9;15467:17;15458:6;15414:71;:::i;:::-;15495:72;15563:2;15552:9;15548:18;15539:6;15495:72;:::i;:::-;15368:206;;;;;:::o;15580:332::-;15701:4;15739:2;15728:9;15724:18;15716:26;;15752:71;15820:1;15809:9;15805:17;15796:6;15752:71;:::i;:::-;15833:72;15901:2;15890:9;15886:18;15877:6;15833:72;:::i;:::-;15706:206;;;;;:::o;15918:807::-;16167:4;16205:3;16194:9;16190:19;16182:27;;16219:71;16287:1;16276:9;16272:17;16263:6;16219:71;:::i;:::-;16300:72;16368:2;16357:9;16353:18;16344:6;16300:72;:::i;:::-;16382:80;16458:2;16447:9;16443:18;16434:6;16382:80;:::i;:::-;16472;16548:2;16537:9;16533:18;16524:6;16472:80;:::i;:::-;16562:73;16630:3;16619:9;16615:19;16606:6;16562:73;:::i;:::-;16645;16713:3;16702:9;16698:19;16689:6;16645:73;:::i;:::-;16172:553;;;;;;;;;:::o;16731:210::-;16818:4;16856:2;16845:9;16841:18;16833:26;;16869:65;16931:1;16920:9;16916:17;16907:6;16869:65;:::i;:::-;16823:118;;;;:::o;16947:276::-;17067:4;17105:2;17094:9;17090:18;17082:26;;17118:98;17213:1;17202:9;17198:17;17189:6;17118:98;:::i;:::-;17072:151;;;;:::o;17229:313::-;17342:4;17380:2;17369:9;17365:18;17357:26;;17429:9;17423:4;17419:20;17415:1;17404:9;17400:17;17393:47;17457:78;17530:4;17521:6;17457:78;:::i;:::-;17449:86;;17347:195;;;;:::o;17548:419::-;17714:4;17752:2;17741:9;17737:18;17729:26;;17801:9;17795:4;17791:20;17787:1;17776:9;17772:17;17765:47;17829:131;17955:4;17829:131;:::i;:::-;17821:139;;17719:248;;;:::o;17973:419::-;18139:4;18177:2;18166:9;18162:18;18154:26;;18226:9;18220:4;18216:20;18212:1;18201:9;18197:17;18190:47;18254:131;18380:4;18254:131;:::i;:::-;18246:139;;18144:248;;;:::o;18398:419::-;18564:4;18602:2;18591:9;18587:18;18579:26;;18651:9;18645:4;18641:20;18637:1;18626:9;18622:17;18615:47;18679:131;18805:4;18679:131;:::i;:::-;18671:139;;18569:248;;;:::o;18823:419::-;18989:4;19027:2;19016:9;19012:18;19004:26;;19076:9;19070:4;19066:20;19062:1;19051:9;19047:17;19040:47;19104:131;19230:4;19104:131;:::i;:::-;19096:139;;18994:248;;;:::o;19248:419::-;19414:4;19452:2;19441:9;19437:18;19429:26;;19501:9;19495:4;19491:20;19487:1;19476:9;19472:17;19465:47;19529:131;19655:4;19529:131;:::i;:::-;19521:139;;19419:248;;;:::o;19673:419::-;19839:4;19877:2;19866:9;19862:18;19854:26;;19926:9;19920:4;19916:20;19912:1;19901:9;19897:17;19890:47;19954:131;20080:4;19954:131;:::i;:::-;19946:139;;19844:248;;;:::o;20098:419::-;20264:4;20302:2;20291:9;20287:18;20279:26;;20351:9;20345:4;20341:20;20337:1;20326:9;20322:17;20315:47;20379:131;20505:4;20379:131;:::i;:::-;20371:139;;20269:248;;;:::o;20523:419::-;20689:4;20727:2;20716:9;20712:18;20704:26;;20776:9;20770:4;20766:20;20762:1;20751:9;20747:17;20740:47;20804:131;20930:4;20804:131;:::i;:::-;20796:139;;20694:248;;;:::o;20948:419::-;21114:4;21152:2;21141:9;21137:18;21129:26;;21201:9;21195:4;21191:20;21187:1;21176:9;21172:17;21165:47;21229:131;21355:4;21229:131;:::i;:::-;21221:139;;21119:248;;;:::o;21373:419::-;21539:4;21577:2;21566:9;21562:18;21554:26;;21626:9;21620:4;21616:20;21612:1;21601:9;21597:17;21590:47;21654:131;21780:4;21654:131;:::i;:::-;21646:139;;21544:248;;;:::o;21798:419::-;21964:4;22002:2;21991:9;21987:18;21979:26;;22051:9;22045:4;22041:20;22037:1;22026:9;22022:17;22015:47;22079:131;22205:4;22079:131;:::i;:::-;22071:139;;21969:248;;;:::o;22223:419::-;22389:4;22427:2;22416:9;22412:18;22404:26;;22476:9;22470:4;22466:20;22462:1;22451:9;22447:17;22440:47;22504:131;22630:4;22504:131;:::i;:::-;22496:139;;22394:248;;;:::o;22648:419::-;22814:4;22852:2;22841:9;22837:18;22829:26;;22901:9;22895:4;22891:20;22887:1;22876:9;22872:17;22865:47;22929:131;23055:4;22929:131;:::i;:::-;22921:139;;22819:248;;;:::o;23073:222::-;23166:4;23204:2;23193:9;23189:18;23181:26;;23217:71;23285:1;23274:9;23270:17;23261:6;23217:71;:::i;:::-;23171:124;;;;:::o;23301:483::-;23472:4;23510:2;23499:9;23495:18;23487:26;;23523:71;23591:1;23580:9;23576:17;23567:6;23523:71;:::i;:::-;23641:9;23635:4;23631:20;23626:2;23615:9;23611:18;23604:48;23669:108;23772:4;23763:6;23669:108;:::i;:::-;23661:116;;23477:307;;;;;:::o;23790:831::-;24053:4;24091:3;24080:9;24076:19;24068:27;;24105:71;24173:1;24162:9;24158:17;24149:6;24105:71;:::i;:::-;24186:80;24262:2;24251:9;24247:18;24238:6;24186:80;:::i;:::-;24313:9;24307:4;24303:20;24298:2;24287:9;24283:18;24276:48;24341:108;24444:4;24435:6;24341:108;:::i;:::-;24333:116;;24459:72;24527:2;24516:9;24512:18;24503:6;24459:72;:::i;:::-;24541:73;24609:3;24598:9;24594:19;24585:6;24541:73;:::i;:::-;24058:563;;;;;;;;:::o;24627:214::-;24716:4;24754:2;24743:9;24739:18;24731:26;;24767:67;24831:1;24820:9;24816:17;24807:6;24767:67;:::i;:::-;24721:120;;;;:::o;24847:132::-;24914:4;24937:3;24929:11;;24967:4;24962:3;24958:14;24950:22;;24919:60;;;:::o;24985:114::-;25052:6;25086:5;25080:12;25070:22;;25059:40;;;:::o;25105:99::-;25157:6;25191:5;25185:12;25175:22;;25164:40;;;:::o;25210:113::-;25280:4;25312;25307:3;25303:14;25295:22;;25285:38;;;:::o;25329:184::-;25428:11;25462:6;25457:3;25450:19;25502:4;25497:3;25493:14;25478:29;;25440:73;;;;:::o;25519:147::-;25620:11;25657:3;25642:18;;25632:34;;;;:::o;25672:169::-;25756:11;25790:6;25785:3;25778:19;25830:4;25825:3;25821:14;25806:29;;25768:73;;;;:::o;25847:305::-;25887:3;25906:20;25924:1;25906:20;:::i;:::-;25901:25;;25940:20;25958:1;25940:20;:::i;:::-;25935:25;;26094:1;26026:66;26022:74;26019:1;26016:81;26013:2;;;26100:18;;:::i;:::-;26013:2;26144:1;26141;26137:9;26130:16;;25891:261;;;;:::o;26158:185::-;26198:1;26215:20;26233:1;26215:20;:::i;:::-;26210:25;;26249:20;26267:1;26249:20;:::i;:::-;26244:25;;26288:1;26278:2;;26293:18;;:::i;:::-;26278:2;26335:1;26332;26328:9;26323:14;;26200:143;;;;:::o;26349:348::-;26389:7;26412:20;26430:1;26412:20;:::i;:::-;26407:25;;26446:20;26464:1;26446:20;:::i;:::-;26441:25;;26634:1;26566:66;26562:74;26559:1;26556:81;26551:1;26544:9;26537:17;26533:105;26530:2;;;26641:18;;:::i;:::-;26530:2;26689:1;26686;26682:9;26671:20;;26397:300;;;;:::o;26703:191::-;26743:4;26763:20;26781:1;26763:20;:::i;:::-;26758:25;;26797:20;26815:1;26797:20;:::i;:::-;26792:25;;26836:1;26833;26830:8;26827:2;;;26841:18;;:::i;:::-;26827:2;26886:1;26883;26879:9;26871:17;;26748:146;;;;:::o;26900:96::-;26937:7;26966:24;26984:5;26966:24;:::i;:::-;26955:35;;26945:51;;;:::o;27002:104::-;27047:7;27076:24;27094:5;27076:24;:::i;:::-;27065:35;;27055:51;;;:::o;27112:90::-;27146:7;27189:5;27182:13;27175:21;27164:32;;27154:48;;;:::o;27208:126::-;27245:7;27285:42;27278:5;27274:54;27263:65;;27253:81;;;:::o;27340:77::-;27377:7;27406:5;27395:16;;27385:32;;;:::o;27423:86::-;27458:7;27498:4;27491:5;27487:16;27476:27;;27466:43;;;:::o;27515:180::-;27592:9;27625:64;27683:5;27625:64;:::i;:::-;27612:77;;27602:93;;;:::o;27701:140::-;27778:9;27811:24;27829:5;27811:24;:::i;:::-;27798:37;;27788:53;;;:::o;27847:121::-;27905:9;27938:24;27956:5;27938:24;:::i;:::-;27925:37;;27915:53;;;:::o;27974:307::-;28042:1;28052:113;28066:6;28063:1;28060:13;28052:113;;;28151:1;28146:3;28142:11;28136:18;28132:1;28127:3;28123:11;28116:39;28088:2;28085:1;28081:10;28076:15;;28052:113;;;28183:6;28180:1;28177:13;28174:2;;;28263:1;28254:6;28249:3;28245:16;28238:27;28174:2;28023:258;;;;:::o;28287:320::-;28331:6;28368:1;28362:4;28358:12;28348:22;;28415:1;28409:4;28405:12;28436:18;28426:2;;28492:4;28484:6;28480:17;28470:27;;28426:2;28554;28546:6;28543:14;28523:18;28520:38;28517:2;;;28573:18;;:::i;:::-;28517:2;28338:269;;;;:::o;28613:233::-;28652:3;28675:24;28693:5;28675:24;:::i;:::-;28666:33;;28721:66;28714:5;28711:77;28708:2;;;28791:18;;:::i;:::-;28708:2;28838:1;28831:5;28827:13;28820:20;;28656:190;;;:::o;28852:180::-;28900:77;28897:1;28890:88;28997:4;28994:1;28987:15;29021:4;29018:1;29011:15;29038:180;29086:77;29083:1;29076:88;29183:4;29180:1;29173:15;29207:4;29204:1;29197:15;29224:180;29272:77;29269:1;29262:88;29369:4;29366:1;29359:15;29393:4;29390:1;29383:15;29410:102;29451:6;29502:2;29498:7;29493:2;29486:5;29482:14;29478:28;29468:38;;29458:54;;;:::o;29518:222::-;29658:34;29654:1;29646:6;29642:14;29635:58;29727:5;29722:2;29714:6;29710:15;29703:30;29624:116;:::o;29746:177::-;29886:29;29882:1;29874:6;29870:14;29863:53;29852:71;:::o;29929:225::-;30069:34;30065:1;30057:6;30053:14;30046:58;30138:8;30133:2;30125:6;30121:15;30114:33;30035:119;:::o;30160:221::-;30300:34;30296:1;30288:6;30284:14;30277:58;30369:4;30364:2;30356:6;30352:15;30345:29;30266:115;:::o;30387:177::-;30527:29;30523:1;30515:6;30511:14;30504:53;30493:71;:::o;30570:224::-;30710:34;30706:1;30698:6;30694:14;30687:58;30779:7;30774:2;30766:6;30762:15;30755:32;30676:118;:::o;30800:179::-;30940:31;30936:1;30928:6;30924:14;30917:55;30906:73;:::o;30985:227::-;31125:34;31121:1;31113:6;31109:14;31102:58;31194:10;31189:2;31181:6;31177:15;31170:35;31091:121;:::o;31218:220::-;31358:34;31354:1;31346:6;31342:14;31335:58;31427:3;31422:2;31414:6;31410:15;31403:28;31324:114;:::o;31444:172::-;31584:24;31580:1;31572:6;31568:14;31561:48;31550:66;:::o;31622:182::-;31762:34;31758:1;31750:6;31746:14;31739:58;31728:76;:::o;31810:224::-;31950:34;31946:1;31938:6;31934:14;31927:58;32019:7;32014:2;32006:6;32002:15;31995:32;31916:118;:::o;32040:114::-;32146:8;:::o;32160:223::-;32300:34;32296:1;32288:6;32284:14;32277:58;32369:6;32364:2;32356:6;32352:15;32345:31;32266:117;:::o;32389:122::-;32462:24;32480:5;32462:24;:::i;:::-;32455:5;32452:35;32442:2;;32501:1;32498;32491:12;32442:2;32432:79;:::o;32517:116::-;32587:21;32602:5;32587:21;:::i;:::-;32580:5;32577:32;32567:2;;32623:1;32620;32613:12;32567:2;32557:76;:::o;32639:122::-;32712:24;32730:5;32712:24;:::i;:::-;32705:5;32702:35;32692:2;;32751:1;32748;32741:12;32692:2;32682:79;:::o

Swarm Source

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