ETH Price: $3,098.17 (+0.48%)
Gas: 9 Gwei

Token

Black Lab (BLAB)
 

Overview

Max Total Supply

100,000 BLAB

Holders

80

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 BLAB

Value
$0.00
0x5039bf8b0e032adddd94ebe6b8bad490b3136cf8
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:
BlackLab

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*
 

/*
https://t.me/BlackLabETH
https://twitter.com/blacklabeth1?s=21&t=e3tDngoDnmlS5_KCxqZ05g
https://medium.com/@blacklabeth/black-lab-eth-278f5b56e028




*/

// 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 BlackLab is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    
    string private _name = "Black Lab";
    string private _symbol = "BLAB";
    uint8 private _decimals = 18;

    address payable public marketingWallet = payable(0x1fD13665E9412769A59EbAe3d19d15b7bBfF45b9);
    address payable public DeveloperWallet = payable(0x2a337569D7846A033c6C8aE4c8E70d66354CDB09);
    address public liquidityReciever;
    
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public immutable zeroAddress = 0x0000000000000000000000000000000000000000;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public blacklist;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;

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

    uint256 public _totalTaxIfBuying;
    uint256 public _totalTaxIfSelling;

    uint256 private _totalSupply = 100000 * 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;
        liquidityReciever = address(msg.sender);

        _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 setLiquidityWalletAddress(address newAddress) external onlyOwner() {
        liquidityReciever = 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
            liquidityReciever,
            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":"liquidityReciever","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"newAddress","type":"address"}],"name":"setLiquidityWalletAddress","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"}]

60c06040526040518060400160405280600981526020017f426c61636b204c61620000000000000000000000000000000000000000000000815250600190805190602001906200005192919062001043565b506040518060400160405280600481526020017f424c414200000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062001043565b506012600360006101000a81548160ff021916908360ff160217905550731fd13665e9412769a59ebae3d19d15b7bbff45b9600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732a337569d7846a033c6c8ae4c8e70d66354cdb09600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff1660601b8152506001600d55605a600e556001600f556001601055605a6011556001601255600360009054906101000a900460ff16600a620002119190620013ab565b620186a0620002219190620014e8565b6015556200025b606462000247600160155462000e7160201b620032601790919060201c565b62000ef560201b620032db1790919060201c565b60165562000295606462000281600260155462000e7160201b620032601790919060201c565b62000ef560201b620032db1790919060201c565b601755620002cf6064620002bb600260155462000e7160201b620032601790919060201c565b62000ef560201b620032db1790919060201c565b6018556001601a60156101000a81548160ff0219169083151502179055506000601a60166101000a81548160ff0219169083151502179055506001601a60176101000a81548160ff0219169083151502179055506001601a60186101000a81548160ff0219169083151502179055503480156200034b57600080fd5b5060006200035e62000f4760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200045c57600080fd5b505afa15801562000471573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049791906200110a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004fa57600080fd5b505afa1580156200050f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200053591906200110a565b6040518363ffffffff1660e01b815260040162000554929190620011ed565b602060405180830381600087803b1580156200056f57600080fd5b505af115801562000584573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005aa91906200110a565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160086000620006e662000f4f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60006200089962000f4f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c600062000ac662000f4f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000c9c600f5462000c88600e54600d5462000f7860201b620033251790919060201c565b62000f7860201b620033251790919060201c565b60138190555062000cdb60125462000cc760115460105462000f7860201b620033251790919060201c565b62000f7860201b620033251790919060201c565b601481905550600160096000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506015546006600062000db362000f4760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000e0162000f4760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60155460405162000e62919062001282565b60405180910390a35062001742565b60008083141562000e86576000905062000eef565b6000828462000e969190620014e8565b905082848262000ea7919062001318565b1462000eea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ee19062001260565b60405180910390fd5b809150505b92915050565b600062000f3f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000fdb60201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000f899190620012bb565b90508381101562000fd1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000fc8906200123e565b60405180910390fd5b8091505092915050565b6000808311829062001025576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200101c91906200121a565b60405180910390fd5b506000838562001036919062001318565b9050809150509392505050565b8280546200105190620015ca565b90600052602060002090601f016020900481019282620010755760008555620010c1565b82601f106200109057805160ff1916838001178555620010c1565b82800160010185558215620010c1579182015b82811115620010c0578251825591602001919060010190620010a3565b5b509050620010d09190620010d4565b5090565b5b80821115620010ef576000816000905550600101620010d5565b5090565b600081519050620011048162001728565b92915050565b6000602082840312156200112357620011226200168d565b5b60006200113384828501620010f3565b91505092915050565b620011478162001549565b82525050565b60006200115a826200129f565b620011668185620012aa565b93506200117881856020860162001594565b620011838162001692565b840191505092915050565b60006200119d601b83620012aa565b9150620011aa82620016b0565b602082019050919050565b6000620011c4602183620012aa565b9150620011d182620016d9565b604082019050919050565b620011e7816200157d565b82525050565b60006040820190506200120460008301856200113c565b6200121360208301846200113c565b9392505050565b600060208201905081810360008301526200123681846200114d565b905092915050565b6000602082019050818103600083015262001259816200118e565b9050919050565b600060208201905081810360008301526200127b81620011b5565b9050919050565b6000602082019050620012996000830184620011dc565b92915050565b600081519050919050565b600082825260208201905092915050565b6000620012c8826200157d565b9150620012d5836200157d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200130d576200130c62001600565b5b828201905092915050565b600062001325826200157d565b915062001332836200157d565b9250826200134557620013446200162f565b5b828204905092915050565b6000808291508390505b6001851115620013a2578086048111156200137a576200137962001600565b5b60018516156200138a5780820291505b80810290506200139a85620016a3565b94506200135a565b94509492505050565b6000620013b8826200157d565b9150620013c58362001587565b9250620013f47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620013fc565b905092915050565b6000826200140e5760019050620014e1565b816200141e5760009050620014e1565b8160018114620014375760028114620014425762001478565b6001915050620014e1565b60ff84111562001457576200145662001600565b5b8360020a91508482111562001471576200147062001600565b5b50620014e1565b5060208310610133831016604e8410600b8410161715620014b25782820a905083811115620014ac57620014ab62001600565b5b620014e1565b620014c1848484600162001350565b92509050818404811115620014db57620014da62001600565b5b81810290505b9392505050565b6000620014f5826200157d565b915062001502836200157d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200153e576200153d62001600565b5b828202905092915050565b600062001556826200155d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015620015b457808201518184015260208101905062001597565b83811115620015c4576000848401525b50505050565b60006002820490506001821680620015e357607f821691505b60208210811415620015fa57620015f96200165e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b620017338162001549565b81146200173f57600080fd5b50565b60805160601c60a05160601c615adf6200177c6000396000818161106b015261155b01526000818161152f01526115870152615adf6000f3fe6080604052600436106103bc5760003560e01c806385261485116101f2578063da00097d1161010d578063f1d5f517116100a0578063f872858a1161006f578063f872858a14610e3b578063f8f6329014610e66578063f9f92be414610e91578063fb4b8e6c14610ece576103c3565b8063f1d5f51714610d97578063f2fde38b14610dc0578063f455444614610de9578063f84ba65d14610e12576103c3565b8063ec28438a116100dc578063ec28438a14610cf1578063ee828db314610d1a578063ef422a1814610d43578063f0cd1dac14610d6c576103c3565b8063da00097d14610c47578063dc44b6a014610c72578063dd62ed3e14610c9d578063e6b2603b14610cda576103c3565b8063a9059cbb11610185578063c860795211610154578063c860795214610b8b578063c867d60b14610bb6578063c9c9afc514610bf3578063d2d7ad8314610c1c576103c3565b8063a9059cbb14610acf578063c49b9a8014610b0c578063c5d2418914610b35578063c816841b14610b60576103c3565b806395d89b41116101c157806395d89b4114610a1357806398e944c814610a3e578063a457c2d714610a69578063a5d69d1f14610aa6576103c3565b8063852614851461095557806388790a68146109805780638b42507f146109ab5780638da5cb5b146109e8576103c3565b806339509351116102e257806367243482116102755780637d1db4a5116102445780637d1db4a5146108ab578063807c2d9c146108d657806382eefb4314610901578063844d591c1461092c576103c3565b8063672434821461080357806370a082311461082c578063715018a61461086957806375f0a87414610880576103c3565b80634cb80fd5116102b15780634cb80fd5146107355780635194f9bf1461075e5780635342acb4146107895780635881f3ef146107c6576103c3565b806339509351146106675780633b97084a146106a45780633ecad271146106cd5780634a74bb021461070a576103c3565b80631870517a1161035a5780632563ae83116103295780632563ae83146105bd57806327c8f835146105e65780632b112e4914610611578063313ce5671461063c576103c3565b80631870517a146105035780632198cf6c1461052c57806323555d571461055557806323b872dd14610580576103c3565b8063095ea7b311610396578063095ea7b314610447578063153b0d1e146104845780631694505e146104ad57806318160ddd146104d8576103c3565b806306fdde03146103c857806308733214146103f35780630930907b1461041c576103c3565b366103c357005b600080fd5b3480156103d457600080fd5b506103dd610ef7565b6040516103ea9190615066565b60405180910390f35b3480156103ff57600080fd5b5061041a60048036038101906104159190614b7b565b610f89565b005b34801561042857600080fd5b50610431611069565b60405161043e9190614f47565b60405180910390f35b34801561045357600080fd5b5061046e60048036038101906104699190614a33565b61108d565b60405161047b9190615030565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a691906149f3565b6110ab565b005b3480156104b957600080fd5b506104c261119b565b6040516104cf919061504b565b60405180910390f35b3480156104e457600080fd5b506104ed6111c1565b6040516104fa9190615228565b60405180910390f35b34801561050f57600080fd5b5061052a60048036038101906105259190614b7b565b6111cb565b005b34801561053857600080fd5b50610553600480360381019061054e91906149f3565b6112ab565b005b34801561056157600080fd5b5061056a61139b565b6040516105779190615228565b60405180910390f35b34801561058c57600080fd5b506105a760048036038101906105a291906149a0565b6113a1565b6040516105b49190615030565b60405180910390f35b3480156105c957600080fd5b506105e460048036038101906105df9190614af4565b61147b565b005b3480156105f257600080fd5b506105fb61152d565b6040516106089190614f47565b60405180910390f35b34801561061d57600080fd5b50610626611551565b6040516106339190615228565b60405180910390f35b34801561064857600080fd5b506106516115cf565b60405161065e91906152cd565b60405180910390f35b34801561067357600080fd5b5061068e60048036038101906106899190614a33565b6115e6565b60405161069b9190615030565b60405180910390f35b3480156106b057600080fd5b506106cb60048036038101906106c69190614b4e565b611699565b005b3480156106d957600080fd5b506106f460048036038101906106ef9190614906565b611738565b6040516107019190615030565b60405180910390f35b34801561071657600080fd5b5061071f611758565b60405161072c9190615030565b60405180910390f35b34801561074157600080fd5b5061075c60048036038101906107579190614906565b61176b565b005b34801561076a57600080fd5b50610773611844565b6040516107809190615228565b60405180910390f35b34801561079557600080fd5b506107b060048036038101906107ab9190614906565b61184a565b6040516107bd9190615030565b60405180910390f35b3480156107d257600080fd5b506107ed60048036038101906107e89190614906565b61186a565b6040516107fa9190614f47565b60405180910390f35b34801561080f57600080fd5b5061082a60048036038101906108259190614a73565b611d4e565b005b34801561083857600080fd5b50610853600480360381019061084e9190614906565b612129565b6040516108609190615228565b60405180910390f35b34801561087557600080fd5b5061087e612172565b005b34801561088c57600080fd5b506108956122c7565b6040516108a29190614f62565b60405180910390f35b3480156108b757600080fd5b506108c06122ed565b6040516108cd9190615228565b60405180910390f35b3480156108e257600080fd5b506108eb6122f3565b6040516108f89190615228565b60405180910390f35b34801561090d57600080fd5b506109166122f9565b6040516109239190615228565b60405180910390f35b34801561093857600080fd5b50610953600480360381019061094e91906149f3565b6122ff565b005b34801561096157600080fd5b5061096a6123ef565b6040516109779190615030565b60405180910390f35b34801561098c57600080fd5b50610995612402565b6040516109a29190615228565b60405180910390f35b3480156109b757600080fd5b506109d260048036038101906109cd9190614906565b612408565b6040516109df9190615030565b60405180910390f35b3480156109f457600080fd5b506109fd612428565b604051610a0a9190614f47565b60405180910390f35b348015610a1f57600080fd5b50610a28612451565b604051610a359190615066565b60405180910390f35b348015610a4a57600080fd5b50610a536124e3565b604051610a609190614f47565b60405180910390f35b348015610a7557600080fd5b50610a906004803603810190610a8b9190614a33565b612509565b604051610a9d9190615030565b60405180910390f35b348015610ab257600080fd5b50610acd6004803603810190610ac89190614af4565b6125d6565b005b348015610adb57600080fd5b50610af66004803603810190610af19190614a33565b612688565b604051610b039190615030565b60405180910390f35b348015610b1857600080fd5b50610b336004803603810190610b2e9190614af4565b6126a7565b005b348015610b4157600080fd5b50610b4a612790565b604051610b579190615228565b60405180910390f35b348015610b6c57600080fd5b50610b75612796565b604051610b829190614f47565b60405180910390f35b348015610b9757600080fd5b50610ba06127bc565b604051610bad9190615228565b60405180910390f35b348015610bc257600080fd5b50610bdd6004803603810190610bd89190614906565b6127c2565b604051610bea9190615030565b60405180910390f35b348015610bff57600080fd5b50610c1a6004803603810190610c159190614906565b6127e2565b005b348015610c2857600080fd5b50610c316128bb565b604051610c3e9190615228565b60405180910390f35b348015610c5357600080fd5b50610c5c6128c1565b604051610c699190615030565b60405180910390f35b348015610c7e57600080fd5b50610c876128d4565b604051610c949190615228565b60405180910390f35b348015610ca957600080fd5b50610cc46004803603810190610cbf9190614960565b6128da565b604051610cd19190615228565b60405180910390f35b348015610ce657600080fd5b50610cef612961565b005b348015610cfd57600080fd5b50610d186004803603810190610d139190614b4e565b612a6f565b005b348015610d2657600080fd5b50610d416004803603810190610d3c9190614af4565b612b0e565b005b348015610d4f57600080fd5b50610d6a6004803603810190610d6591906149f3565b612bc0565b005b348015610d7857600080fd5b50610d81612cb0565b604051610d8e9190615228565b60405180910390f35b348015610da357600080fd5b50610dbe6004803603810190610db99190614b4e565b612cb6565b005b348015610dcc57600080fd5b50610de76004803603810190610de29190614906565b612d55565b005b348015610df557600080fd5b50610e106004803603810190610e0b9190614a33565b612f17565b005b348015610e1e57600080fd5b50610e396004803603810190610e3491906149f3565b61303e565b005b348015610e4757600080fd5b50610e5061312e565b604051610e5d9190615030565b60405180910390f35b348015610e7257600080fd5b50610e7b613141565b604051610e889190614f62565b60405180910390f35b348015610e9d57600080fd5b50610eb86004803603810190610eb39190614906565b613167565b604051610ec59190615030565b60405180910390f35b348015610eda57600080fd5b50610ef56004803603810190610ef09190614906565b613187565b005b606060018054610f069061553f565b80601f0160208091040260200160405190810160405280929190818152602001828054610f329061553f565b8015610f7f5780601f10610f5457610100808354040283529160200191610f7f565b820191906000526020600020905b815481529060010190602001808311610f6257829003601f168201915b5050505050905090565b610f91613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461101e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611015906151c8565b60405180910390fd5b82601081905550816011819055508060128190555061105e60125461105060115460105461332590919063ffffffff16565b61332590919063ffffffff16565b601481905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006110a161109a613383565b848461338b565b6001905092915050565b6110b3613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611140576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611137906151c8565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601554905090565b6111d3613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611260576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611257906151c8565b60405180910390fd5b82600d8190555081600e8190555080600f819055506112a0600f54611292600e54600d5461332590919063ffffffff16565b61332590919063ffffffff16565b601381905550505050565b6112b3613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611340576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611337906151c8565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b60006113ae848484613556565b50611470846113bb613383565b61146b85604051806060016040528060288152602001615a5d60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611421613383565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6c9092919063ffffffff16565b61338b565b600190509392505050565b611483613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611510576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611507906151c8565b60405180910390fd5b80601a60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006115ca61157f7f0000000000000000000000000000000000000000000000000000000000000000612129565b6115bc6115ab7f0000000000000000000000000000000000000000000000000000000000000000612129565b601554613cd090919063ffffffff16565b613cd090919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b600061168f6115f3613383565b8461168a8560076000611604613383565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332590919063ffffffff16565b61338b565b6001905092915050565b6116a1613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461172e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611725906151c8565b60405180910390fd5b8060168190555050565b60096020528060005260406000206000915054906101000a900460ff1681565b601a60159054906101000a900460ff1681565b611773613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f7906151c8565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b60086020528060005260406000206000915054906101000a900460ff1681565b6000611874613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f8906151c8565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561194c57600080fd5b505afa158015611960573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119849190614933565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156119e657600080fd5b505afa1580156119fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1e9190614933565b6040518363ffffffff1660e01b8152600401611a3b929190614f7d565b60206040518083038186803b158015611a5357600080fd5b505afa158015611a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8b9190614933565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c4c578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611b0857600080fd5b505afa158015611b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b409190614933565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ba257600080fd5b505afa158015611bb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bda9190614933565b6040518363ffffffff1660e01b8152600401611bf7929190614f7d565b602060405180830381600087803b158015611c1157600080fd5b505af1158015611c25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c499190614933565b91505b81601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611d56613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dda906151c8565b60405180910390fd5b6000339050828290508585905014611e30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e27906151a8565b60405180910390fd5b600080600090505b84849050811015611e7d57848482818110611e5657611e55615647565b5b9050602002013582611e689190615348565b91508080611e7590615571565b915050611e38565b5080611e8883612129565b1015611ec9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec0906150a8565b60405180910390fd5b611f1b81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cd090919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b8686905081101561212057611ffe858583818110611f8257611f81615647565b5b90506020020135600660008a8a86818110611fa057611f9f615647565b5b9050602002016020810190611fb59190614906565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332590919063ffffffff16565b6006600089898581811061201557612014615647565b5b905060200201602081019061202a9190614906565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555086868281811061207b5761207a615647565b5b90506020020160208101906120909190614906565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8787858181106120f1576120f0615647565b5b905060200201356040516121059190615228565b60405180910390a3808061211890615571565b915050611f61565b50505050505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61217a613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fe906151c8565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b60185481565b60145481565b612307613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238b906151c8565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60189054906101000a900460ff1681565b60105481565b600c6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546124609061553f565b80601f016020809104026020016040519081016040528092919081815260200182805461248c9061553f565b80156124d95780601f106124ae576101008083540402835291602001916124d9565b820191906000526020600020905b8154815290600101906020018083116124bc57829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006125cc612516613383565b846125c785604051806060016040528060258152602001615a856025913960076000612540613383565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6c9092919063ffffffff16565b61338b565b6001905092915050565b6125de613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461266b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612662906151c8565b60405180910390fd5b80601a60166101000a81548160ff02191690831515021790555050565b600061269c612695613383565b8484613556565b506001905092915050565b6126af613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461273c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612733906151c8565b60405180910390fd5b80601a60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516127859190615030565b60405180910390a150565b600e5481565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600b6020528060005260406000206000915054906101000a900460ff1681565b6127ea613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286e906151c8565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b601a60169054906101000a900460ff1681565b600d5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612969613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ed906151c8565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612a1c90614f32565b60006040518083038185875af1925050503d8060008114612a59576040519150601f19603f3d011682016040523d82523d6000602084013e612a5e565b606091505b5050905080612a6c57600080fd5b50565b612a77613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afb906151c8565b60405180910390fd5b8060178190555050565b612b16613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9a906151c8565b60405180910390fd5b80601a60186101000a81548160ff02191690831515021790555050565b612bc8613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4c906151c8565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b612cbe613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d42906151c8565b60405180910390fd5b8060188190555050565b612d5d613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de1906151c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e51906150c8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612f1f613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fa3906151c8565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612fe7929190614fa6565b602060405180830381600087803b15801561300157600080fd5b505af1158015613015573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130399190614b21565b505050565b613046613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146130d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ca906151c8565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b61318f613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461321c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613213906151c8565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083141561327357600090506132d5565b6000828461328191906153cf565b9050828482613290919061539e565b146132d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132c790615188565b60405180910390fd5b809150505b92915050565b600061331d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d1a565b905092915050565b60008082846133349190615348565b905083811015613379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337090615108565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156133fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133f290615208565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561346b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613462906150e8565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516135499190615228565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156135c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135be906151e8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161362e90615088565b60405180910390fd5b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156136db5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61371a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161371190615148565b60405180910390fd5b601a60149054906101000a900460ff16156137415761373a848484613d7d565b9050613c65565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137e55750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137fd5750601a60189054906101000a900460ff165b1561384857601754821115613847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161383e90615168565b60405180910390fd5b5b600061385330612129565b9050600060165482101590508080156138795750601a60149054906101000a900460ff16155b80156138cf5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138e75750601a60159054906101000a900460ff165b1561391157601a60169054906101000a900460ff16156139075760165491505b61391082613f50565b5b61399a846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6c9092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613a805750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613a9457613a8f87878761421b565b613a96565b845b9050601a60179054906101000a900460ff168015613afe5750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613b6357601854613b2182613b1389612129565b61332590919063ffffffff16565b1115613b62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b5990615128565b60405180910390fd5b5b613bb581600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332590919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c559190615228565b60405180910390a3600193505050505b9392505050565b6000838311158290613cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cab9190615066565b60405180910390fd5b5060008385613cc39190615429565b9050809150509392505050565b6000613d1283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613c6c565b905092915050565b60008083118290613d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d589190615066565b60405180910390fd5b5060008385613d70919061539e565b9050809150509392505050565b6000613e08826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6c9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e9d82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332590919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613f3d9190615228565b60405180910390a3600190509392505050565b6001601a60146101000a81548160ff0219169083151502179055506000613f8460145460135461332590919063ffffffff16565b90506000613f9f601054600d5461332590919063ffffffff16565b90506000613fba601154600e5461332590919063ffffffff16565b90506000613ff66002613fe886613fda878a61326090919063ffffffff16565b6132db90919063ffffffff16565b6132db90919063ffffffff16565b9050600061400d8287613cd090919063ffffffff16565b9050600047905061401d82614442565b60006140328247613cd090919063ffffffff16565b9050600061405c61404d6002896132db90919063ffffffff16565b89613cd090919063ffffffff16565b90506000614098600261408a8461407c8c8861326090919063ffffffff16565b6132db90919063ffffffff16565b6132db90919063ffffffff16565b905060006140c1836140b38a8761326090919063ffffffff16565b6132db90919063ffffffff16565b905060006140ea826140dc8588613cd090919063ffffffff16565b613cd090919063ffffffff16565b9050600082111561415f57600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505015801561415d573d6000803e3d6000fd5b505b60008111156141d257600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156141d0573d6000803e3d6000fd5b505b6000831180156141e25750600088115b156141f2576141f188846146cd565b5b50505050505050505050506000601a60146101000a81548160ff02191690831515021790555050565b60008060009050600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156142a35761429c606461428e6013548661326090919063ffffffff16565b6132db90919063ffffffff16565b9050614321565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156143205761431d606461430f6014548661326090919063ffffffff16565b6132db90919063ffffffff16565b90505b5b60008111156144255761437c81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332590919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161441c9190615228565b60405180910390a35b6144388184613cd090919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff81111561445f5761445e615676565b5b60405190808252806020026020018201604052801561448d5781602001602082028036833780820191505090505b50905030816000815181106144a5576144a4615647565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561454757600080fd5b505afa15801561455b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061457f9190614933565b8160018151811061459357614592615647565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506145fa30601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461338b565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161465e959493929190615273565b600060405180830381600087803b15801561467857600080fd5b505af115801561468c573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516146c1929190615243565b60405180910390a15050565b6146fa30601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461338b565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161478396959493929190614fcf565b6060604051808303818588803b15801561479c57600080fd5b505af11580156147b0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906147d59190614bce565b5050505050565b6000813590506147eb81615a17565b92915050565b60008151905061480081615a17565b92915050565b60008083601f84011261481c5761481b6156aa565b5b8235905067ffffffffffffffff811115614839576148386156a5565b5b602083019150836020820283011115614855576148546156af565b5b9250929050565b60008083601f840112614872576148716156aa565b5b8235905067ffffffffffffffff81111561488f5761488e6156a5565b5b6020830191508360208202830111156148ab576148aa6156af565b5b9250929050565b6000813590506148c181615a2e565b92915050565b6000815190506148d681615a2e565b92915050565b6000813590506148eb81615a45565b92915050565b60008151905061490081615a45565b92915050565b60006020828403121561491c5761491b6156b9565b5b600061492a848285016147dc565b91505092915050565b600060208284031215614949576149486156b9565b5b6000614957848285016147f1565b91505092915050565b60008060408385031215614977576149766156b9565b5b6000614985858286016147dc565b9250506020614996858286016147dc565b9150509250929050565b6000806000606084860312156149b9576149b86156b9565b5b60006149c7868287016147dc565b93505060206149d8868287016147dc565b92505060406149e9868287016148dc565b9150509250925092565b60008060408385031215614a0a57614a096156b9565b5b6000614a18858286016147dc565b9250506020614a29858286016148b2565b9150509250929050565b60008060408385031215614a4a57614a496156b9565b5b6000614a58858286016147dc565b9250506020614a69858286016148dc565b9150509250929050565b60008060008060408587031215614a8d57614a8c6156b9565b5b600085013567ffffffffffffffff811115614aab57614aaa6156b4565b5b614ab787828801614806565b9450945050602085013567ffffffffffffffff811115614ada57614ad96156b4565b5b614ae68782880161485c565b925092505092959194509250565b600060208284031215614b0a57614b096156b9565b5b6000614b18848285016148b2565b91505092915050565b600060208284031215614b3757614b366156b9565b5b6000614b45848285016148c7565b91505092915050565b600060208284031215614b6457614b636156b9565b5b6000614b72848285016148dc565b91505092915050565b600080600060608486031215614b9457614b936156b9565b5b6000614ba2868287016148dc565b9350506020614bb3868287016148dc565b9250506040614bc4868287016148dc565b9150509250925092565b600080600060608486031215614be757614be66156b9565b5b6000614bf5868287016148f1565b9350506020614c06868287016148f1565b9250506040614c17868287016148f1565b9150509250925092565b6000614c2d8383614c48565b60208301905092915050565b614c428161546f565b82525050565b614c518161545d565b82525050565b614c608161545d565b82525050565b6000614c71826152f8565b614c7b818561531b565b9350614c86836152e8565b8060005b83811015614cb7578151614c9e8882614c21565b9750614ca98361530e565b925050600181019050614c8a565b5085935050505092915050565b614ccd81615481565b82525050565b614cdc816154c4565b82525050565b614ceb816154d6565b82525050565b6000614cfc82615303565b614d068185615337565b9350614d1681856020860161550c565b614d1f816156be565b840191505092915050565b6000614d37602383615337565b9150614d42826156cf565b604082019050919050565b6000614d5a601b83615337565b9150614d658261571e565b602082019050919050565b6000614d7d602683615337565b9150614d8882615747565b604082019050919050565b6000614da0602283615337565b9150614dab82615796565b604082019050919050565b6000614dc3601b83615337565b9150614dce826157e5565b602082019050919050565b6000614de6602583615337565b9150614df18261580e565b604082019050919050565b6000614e09601d83615337565b9150614e148261585d565b602082019050919050565b6000614e2c602883615337565b9150614e3782615886565b604082019050919050565b6000614e4f602183615337565b9150614e5a826158d5565b604082019050919050565b6000614e72601683615337565b9150614e7d82615924565b602082019050919050565b6000614e95602083615337565b9150614ea08261594d565b602082019050919050565b6000614eb8602583615337565b9150614ec382615976565b604082019050919050565b6000614edb60008361532c565b9150614ee6826159c5565b600082019050919050565b6000614efe602483615337565b9150614f09826159c8565b604082019050919050565b614f1d816154ad565b82525050565b614f2c816154b7565b82525050565b6000614f3d82614ece565b9150819050919050565b6000602082019050614f5c6000830184614c57565b92915050565b6000602082019050614f776000830184614c39565b92915050565b6000604082019050614f926000830185614c57565b614f9f6020830184614c57565b9392505050565b6000604082019050614fbb6000830185614c57565b614fc86020830184614f14565b9392505050565b600060c082019050614fe46000830189614c57565b614ff16020830188614f14565b614ffe6040830187614ce2565b61500b6060830186614ce2565b6150186080830185614c57565b61502560a0830184614f14565b979650505050505050565b60006020820190506150456000830184614cc4565b92915050565b60006020820190506150606000830184614cd3565b92915050565b600060208201905081810360008301526150808184614cf1565b905092915050565b600060208201905081810360008301526150a181614d2a565b9050919050565b600060208201905081810360008301526150c181614d4d565b9050919050565b600060208201905081810360008301526150e181614d70565b9050919050565b6000602082019050818103600083015261510181614d93565b9050919050565b6000602082019050818103600083015261512181614db6565b9050919050565b6000602082019050818103600083015261514181614dd9565b9050919050565b6000602082019050818103600083015261516181614dfc565b9050919050565b6000602082019050818103600083015261518181614e1f565b9050919050565b600060208201905081810360008301526151a181614e42565b9050919050565b600060208201905081810360008301526151c181614e65565b9050919050565b600060208201905081810360008301526151e181614e88565b9050919050565b6000602082019050818103600083015261520181614eab565b9050919050565b6000602082019050818103600083015261522181614ef1565b9050919050565b600060208201905061523d6000830184614f14565b92915050565b60006040820190506152586000830185614f14565b818103602083015261526a8184614c66565b90509392505050565b600060a0820190506152886000830188614f14565b6152956020830187614ce2565b81810360408301526152a78186614c66565b90506152b66060830185614c57565b6152c36080830184614f14565b9695505050505050565b60006020820190506152e26000830184614f23565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000615353826154ad565b915061535e836154ad565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115615393576153926155ba565b5b828201905092915050565b60006153a9826154ad565b91506153b4836154ad565b9250826153c4576153c36155e9565b5b828204905092915050565b60006153da826154ad565b91506153e5836154ad565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561541e5761541d6155ba565b5b828202905092915050565b6000615434826154ad565b915061543f836154ad565b925082821015615452576154516155ba565b5b828203905092915050565b60006154688261548d565b9050919050565b600061547a8261548d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006154cf826154e8565b9050919050565b60006154e1826154ad565b9050919050565b60006154f3826154fa565b9050919050565b60006155058261548d565b9050919050565b60005b8381101561552a57808201518184015260208101905061550f565b83811115615539576000848401525b50505050565b6000600282049050600182168061555757607f821691505b6020821081141561556b5761556a615618565b5b50919050565b600061557c826154ad565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156155af576155ae6155ba565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b7f426f7420456e656d792061646472657373205265737472696374656421000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b615a208161545d565b8114615a2b57600080fd5b50565b615a3781615481565b8114615a4257600080fd5b50565b615a4e816154ad565b8114615a5957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205de771bea08bb2b28ab71adce6fc6931db8e64553336c04fbb7fd8d9346a785a64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106103bc5760003560e01c806385261485116101f2578063da00097d1161010d578063f1d5f517116100a0578063f872858a1161006f578063f872858a14610e3b578063f8f6329014610e66578063f9f92be414610e91578063fb4b8e6c14610ece576103c3565b8063f1d5f51714610d97578063f2fde38b14610dc0578063f455444614610de9578063f84ba65d14610e12576103c3565b8063ec28438a116100dc578063ec28438a14610cf1578063ee828db314610d1a578063ef422a1814610d43578063f0cd1dac14610d6c576103c3565b8063da00097d14610c47578063dc44b6a014610c72578063dd62ed3e14610c9d578063e6b2603b14610cda576103c3565b8063a9059cbb11610185578063c860795211610154578063c860795214610b8b578063c867d60b14610bb6578063c9c9afc514610bf3578063d2d7ad8314610c1c576103c3565b8063a9059cbb14610acf578063c49b9a8014610b0c578063c5d2418914610b35578063c816841b14610b60576103c3565b806395d89b41116101c157806395d89b4114610a1357806398e944c814610a3e578063a457c2d714610a69578063a5d69d1f14610aa6576103c3565b8063852614851461095557806388790a68146109805780638b42507f146109ab5780638da5cb5b146109e8576103c3565b806339509351116102e257806367243482116102755780637d1db4a5116102445780637d1db4a5146108ab578063807c2d9c146108d657806382eefb4314610901578063844d591c1461092c576103c3565b8063672434821461080357806370a082311461082c578063715018a61461086957806375f0a87414610880576103c3565b80634cb80fd5116102b15780634cb80fd5146107355780635194f9bf1461075e5780635342acb4146107895780635881f3ef146107c6576103c3565b806339509351146106675780633b97084a146106a45780633ecad271146106cd5780634a74bb021461070a576103c3565b80631870517a1161035a5780632563ae83116103295780632563ae83146105bd57806327c8f835146105e65780632b112e4914610611578063313ce5671461063c576103c3565b80631870517a146105035780632198cf6c1461052c57806323555d571461055557806323b872dd14610580576103c3565b8063095ea7b311610396578063095ea7b314610447578063153b0d1e146104845780631694505e146104ad57806318160ddd146104d8576103c3565b806306fdde03146103c857806308733214146103f35780630930907b1461041c576103c3565b366103c357005b600080fd5b3480156103d457600080fd5b506103dd610ef7565b6040516103ea9190615066565b60405180910390f35b3480156103ff57600080fd5b5061041a60048036038101906104159190614b7b565b610f89565b005b34801561042857600080fd5b50610431611069565b60405161043e9190614f47565b60405180910390f35b34801561045357600080fd5b5061046e60048036038101906104699190614a33565b61108d565b60405161047b9190615030565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a691906149f3565b6110ab565b005b3480156104b957600080fd5b506104c261119b565b6040516104cf919061504b565b60405180910390f35b3480156104e457600080fd5b506104ed6111c1565b6040516104fa9190615228565b60405180910390f35b34801561050f57600080fd5b5061052a60048036038101906105259190614b7b565b6111cb565b005b34801561053857600080fd5b50610553600480360381019061054e91906149f3565b6112ab565b005b34801561056157600080fd5b5061056a61139b565b6040516105779190615228565b60405180910390f35b34801561058c57600080fd5b506105a760048036038101906105a291906149a0565b6113a1565b6040516105b49190615030565b60405180910390f35b3480156105c957600080fd5b506105e460048036038101906105df9190614af4565b61147b565b005b3480156105f257600080fd5b506105fb61152d565b6040516106089190614f47565b60405180910390f35b34801561061d57600080fd5b50610626611551565b6040516106339190615228565b60405180910390f35b34801561064857600080fd5b506106516115cf565b60405161065e91906152cd565b60405180910390f35b34801561067357600080fd5b5061068e60048036038101906106899190614a33565b6115e6565b60405161069b9190615030565b60405180910390f35b3480156106b057600080fd5b506106cb60048036038101906106c69190614b4e565b611699565b005b3480156106d957600080fd5b506106f460048036038101906106ef9190614906565b611738565b6040516107019190615030565b60405180910390f35b34801561071657600080fd5b5061071f611758565b60405161072c9190615030565b60405180910390f35b34801561074157600080fd5b5061075c60048036038101906107579190614906565b61176b565b005b34801561076a57600080fd5b50610773611844565b6040516107809190615228565b60405180910390f35b34801561079557600080fd5b506107b060048036038101906107ab9190614906565b61184a565b6040516107bd9190615030565b60405180910390f35b3480156107d257600080fd5b506107ed60048036038101906107e89190614906565b61186a565b6040516107fa9190614f47565b60405180910390f35b34801561080f57600080fd5b5061082a60048036038101906108259190614a73565b611d4e565b005b34801561083857600080fd5b50610853600480360381019061084e9190614906565b612129565b6040516108609190615228565b60405180910390f35b34801561087557600080fd5b5061087e612172565b005b34801561088c57600080fd5b506108956122c7565b6040516108a29190614f62565b60405180910390f35b3480156108b757600080fd5b506108c06122ed565b6040516108cd9190615228565b60405180910390f35b3480156108e257600080fd5b506108eb6122f3565b6040516108f89190615228565b60405180910390f35b34801561090d57600080fd5b506109166122f9565b6040516109239190615228565b60405180910390f35b34801561093857600080fd5b50610953600480360381019061094e91906149f3565b6122ff565b005b34801561096157600080fd5b5061096a6123ef565b6040516109779190615030565b60405180910390f35b34801561098c57600080fd5b50610995612402565b6040516109a29190615228565b60405180910390f35b3480156109b757600080fd5b506109d260048036038101906109cd9190614906565b612408565b6040516109df9190615030565b60405180910390f35b3480156109f457600080fd5b506109fd612428565b604051610a0a9190614f47565b60405180910390f35b348015610a1f57600080fd5b50610a28612451565b604051610a359190615066565b60405180910390f35b348015610a4a57600080fd5b50610a536124e3565b604051610a609190614f47565b60405180910390f35b348015610a7557600080fd5b50610a906004803603810190610a8b9190614a33565b612509565b604051610a9d9190615030565b60405180910390f35b348015610ab257600080fd5b50610acd6004803603810190610ac89190614af4565b6125d6565b005b348015610adb57600080fd5b50610af66004803603810190610af19190614a33565b612688565b604051610b039190615030565b60405180910390f35b348015610b1857600080fd5b50610b336004803603810190610b2e9190614af4565b6126a7565b005b348015610b4157600080fd5b50610b4a612790565b604051610b579190615228565b60405180910390f35b348015610b6c57600080fd5b50610b75612796565b604051610b829190614f47565b60405180910390f35b348015610b9757600080fd5b50610ba06127bc565b604051610bad9190615228565b60405180910390f35b348015610bc257600080fd5b50610bdd6004803603810190610bd89190614906565b6127c2565b604051610bea9190615030565b60405180910390f35b348015610bff57600080fd5b50610c1a6004803603810190610c159190614906565b6127e2565b005b348015610c2857600080fd5b50610c316128bb565b604051610c3e9190615228565b60405180910390f35b348015610c5357600080fd5b50610c5c6128c1565b604051610c699190615030565b60405180910390f35b348015610c7e57600080fd5b50610c876128d4565b604051610c949190615228565b60405180910390f35b348015610ca957600080fd5b50610cc46004803603810190610cbf9190614960565b6128da565b604051610cd19190615228565b60405180910390f35b348015610ce657600080fd5b50610cef612961565b005b348015610cfd57600080fd5b50610d186004803603810190610d139190614b4e565b612a6f565b005b348015610d2657600080fd5b50610d416004803603810190610d3c9190614af4565b612b0e565b005b348015610d4f57600080fd5b50610d6a6004803603810190610d6591906149f3565b612bc0565b005b348015610d7857600080fd5b50610d81612cb0565b604051610d8e9190615228565b60405180910390f35b348015610da357600080fd5b50610dbe6004803603810190610db99190614b4e565b612cb6565b005b348015610dcc57600080fd5b50610de76004803603810190610de29190614906565b612d55565b005b348015610df557600080fd5b50610e106004803603810190610e0b9190614a33565b612f17565b005b348015610e1e57600080fd5b50610e396004803603810190610e3491906149f3565b61303e565b005b348015610e4757600080fd5b50610e5061312e565b604051610e5d9190615030565b60405180910390f35b348015610e7257600080fd5b50610e7b613141565b604051610e889190614f62565b60405180910390f35b348015610e9d57600080fd5b50610eb86004803603810190610eb39190614906565b613167565b604051610ec59190615030565b60405180910390f35b348015610eda57600080fd5b50610ef56004803603810190610ef09190614906565b613187565b005b606060018054610f069061553f565b80601f0160208091040260200160405190810160405280929190818152602001828054610f329061553f565b8015610f7f5780601f10610f5457610100808354040283529160200191610f7f565b820191906000526020600020905b815481529060010190602001808311610f6257829003601f168201915b5050505050905090565b610f91613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461101e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611015906151c8565b60405180910390fd5b82601081905550816011819055508060128190555061105e60125461105060115460105461332590919063ffffffff16565b61332590919063ffffffff16565b601481905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006110a161109a613383565b848461338b565b6001905092915050565b6110b3613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611140576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611137906151c8565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601554905090565b6111d3613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611260576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611257906151c8565b60405180910390fd5b82600d8190555081600e8190555080600f819055506112a0600f54611292600e54600d5461332590919063ffffffff16565b61332590919063ffffffff16565b601381905550505050565b6112b3613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611340576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611337906151c8565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b60006113ae848484613556565b50611470846113bb613383565b61146b85604051806060016040528060288152602001615a5d60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611421613383565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6c9092919063ffffffff16565b61338b565b600190509392505050565b611483613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611510576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611507906151c8565b60405180910390fd5b80601a60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b60006115ca61157f7f0000000000000000000000000000000000000000000000000000000000000000612129565b6115bc6115ab7f000000000000000000000000000000000000000000000000000000000000dead612129565b601554613cd090919063ffffffff16565b613cd090919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b600061168f6115f3613383565b8461168a8560076000611604613383565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332590919063ffffffff16565b61338b565b6001905092915050565b6116a1613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461172e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611725906151c8565b60405180910390fd5b8060168190555050565b60096020528060005260406000206000915054906101000a900460ff1681565b601a60159054906101000a900460ff1681565b611773613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f7906151c8565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b60086020528060005260406000206000915054906101000a900460ff1681565b6000611874613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f8906151c8565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561194c57600080fd5b505afa158015611960573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119849190614933565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156119e657600080fd5b505afa1580156119fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1e9190614933565b6040518363ffffffff1660e01b8152600401611a3b929190614f7d565b60206040518083038186803b158015611a5357600080fd5b505afa158015611a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8b9190614933565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c4c578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611b0857600080fd5b505afa158015611b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b409190614933565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ba257600080fd5b505afa158015611bb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bda9190614933565b6040518363ffffffff1660e01b8152600401611bf7929190614f7d565b602060405180830381600087803b158015611c1157600080fd5b505af1158015611c25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c499190614933565b91505b81601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611d56613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dda906151c8565b60405180910390fd5b6000339050828290508585905014611e30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e27906151a8565b60405180910390fd5b600080600090505b84849050811015611e7d57848482818110611e5657611e55615647565b5b9050602002013582611e689190615348565b91508080611e7590615571565b915050611e38565b5080611e8883612129565b1015611ec9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec0906150a8565b60405180910390fd5b611f1b81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cd090919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b8686905081101561212057611ffe858583818110611f8257611f81615647565b5b90506020020135600660008a8a86818110611fa057611f9f615647565b5b9050602002016020810190611fb59190614906565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332590919063ffffffff16565b6006600089898581811061201557612014615647565b5b905060200201602081019061202a9190614906565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555086868281811061207b5761207a615647565b5b90506020020160208101906120909190614906565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8787858181106120f1576120f0615647565b5b905060200201356040516121059190615228565b60405180910390a3808061211890615571565b915050611f61565b50505050505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61217a613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fe906151c8565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b60185481565b60145481565b612307613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238b906151c8565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60189054906101000a900460ff1681565b60105481565b600c6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546124609061553f565b80601f016020809104026020016040519081016040528092919081815260200182805461248c9061553f565b80156124d95780601f106124ae576101008083540402835291602001916124d9565b820191906000526020600020905b8154815290600101906020018083116124bc57829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006125cc612516613383565b846125c785604051806060016040528060258152602001615a856025913960076000612540613383565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6c9092919063ffffffff16565b61338b565b6001905092915050565b6125de613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461266b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612662906151c8565b60405180910390fd5b80601a60166101000a81548160ff02191690831515021790555050565b600061269c612695613383565b8484613556565b506001905092915050565b6126af613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461273c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612733906151c8565b60405180910390fd5b80601a60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516127859190615030565b60405180910390a150565b600e5481565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600b6020528060005260406000206000915054906101000a900460ff1681565b6127ea613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286e906151c8565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b601a60169054906101000a900460ff1681565b600d5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612969613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ed906151c8565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612a1c90614f32565b60006040518083038185875af1925050503d8060008114612a59576040519150601f19603f3d011682016040523d82523d6000602084013e612a5e565b606091505b5050905080612a6c57600080fd5b50565b612a77613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afb906151c8565b60405180910390fd5b8060178190555050565b612b16613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9a906151c8565b60405180910390fd5b80601a60186101000a81548160ff02191690831515021790555050565b612bc8613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4c906151c8565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b612cbe613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d42906151c8565b60405180910390fd5b8060188190555050565b612d5d613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de1906151c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e51906150c8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612f1f613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fa3906151c8565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612fe7929190614fa6565b602060405180830381600087803b15801561300157600080fd5b505af1158015613015573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130399190614b21565b505050565b613046613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146130d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ca906151c8565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b61318f613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461321c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613213906151c8565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083141561327357600090506132d5565b6000828461328191906153cf565b9050828482613290919061539e565b146132d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132c790615188565b60405180910390fd5b809150505b92915050565b600061331d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d1a565b905092915050565b60008082846133349190615348565b905083811015613379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337090615108565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156133fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133f290615208565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561346b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613462906150e8565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516135499190615228565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156135c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135be906151e8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161362e90615088565b60405180910390fd5b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156136db5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61371a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161371190615148565b60405180910390fd5b601a60149054906101000a900460ff16156137415761373a848484613d7d565b9050613c65565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137e55750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137fd5750601a60189054906101000a900460ff165b1561384857601754821115613847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161383e90615168565b60405180910390fd5b5b600061385330612129565b9050600060165482101590508080156138795750601a60149054906101000a900460ff16155b80156138cf5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138e75750601a60159054906101000a900460ff165b1561391157601a60169054906101000a900460ff16156139075760165491505b61391082613f50565b5b61399a846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6c9092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613a805750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613a9457613a8f87878761421b565b613a96565b845b9050601a60179054906101000a900460ff168015613afe5750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613b6357601854613b2182613b1389612129565b61332590919063ffffffff16565b1115613b62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b5990615128565b60405180910390fd5b5b613bb581600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332590919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c559190615228565b60405180910390a3600193505050505b9392505050565b6000838311158290613cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cab9190615066565b60405180910390fd5b5060008385613cc39190615429565b9050809150509392505050565b6000613d1283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613c6c565b905092915050565b60008083118290613d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d589190615066565b60405180910390fd5b5060008385613d70919061539e565b9050809150509392505050565b6000613e08826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6c9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e9d82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332590919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613f3d9190615228565b60405180910390a3600190509392505050565b6001601a60146101000a81548160ff0219169083151502179055506000613f8460145460135461332590919063ffffffff16565b90506000613f9f601054600d5461332590919063ffffffff16565b90506000613fba601154600e5461332590919063ffffffff16565b90506000613ff66002613fe886613fda878a61326090919063ffffffff16565b6132db90919063ffffffff16565b6132db90919063ffffffff16565b9050600061400d8287613cd090919063ffffffff16565b9050600047905061401d82614442565b60006140328247613cd090919063ffffffff16565b9050600061405c61404d6002896132db90919063ffffffff16565b89613cd090919063ffffffff16565b90506000614098600261408a8461407c8c8861326090919063ffffffff16565b6132db90919063ffffffff16565b6132db90919063ffffffff16565b905060006140c1836140b38a8761326090919063ffffffff16565b6132db90919063ffffffff16565b905060006140ea826140dc8588613cd090919063ffffffff16565b613cd090919063ffffffff16565b9050600082111561415f57600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505015801561415d573d6000803e3d6000fd5b505b60008111156141d257600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156141d0573d6000803e3d6000fd5b505b6000831180156141e25750600088115b156141f2576141f188846146cd565b5b50505050505050505050506000601a60146101000a81548160ff02191690831515021790555050565b60008060009050600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156142a35761429c606461428e6013548661326090919063ffffffff16565b6132db90919063ffffffff16565b9050614321565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156143205761431d606461430f6014548661326090919063ffffffff16565b6132db90919063ffffffff16565b90505b5b60008111156144255761437c81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332590919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161441c9190615228565b60405180910390a35b6144388184613cd090919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff81111561445f5761445e615676565b5b60405190808252806020026020018201604052801561448d5781602001602082028036833780820191505090505b50905030816000815181106144a5576144a4615647565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561454757600080fd5b505afa15801561455b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061457f9190614933565b8160018151811061459357614592615647565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506145fa30601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461338b565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161465e959493929190615273565b600060405180830381600087803b15801561467857600080fd5b505af115801561468c573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516146c1929190615243565b60405180910390a15050565b6146fa30601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461338b565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161478396959493929190614fcf565b6060604051808303818588803b15801561479c57600080fd5b505af11580156147b0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906147d59190614bce565b5050505050565b6000813590506147eb81615a17565b92915050565b60008151905061480081615a17565b92915050565b60008083601f84011261481c5761481b6156aa565b5b8235905067ffffffffffffffff811115614839576148386156a5565b5b602083019150836020820283011115614855576148546156af565b5b9250929050565b60008083601f840112614872576148716156aa565b5b8235905067ffffffffffffffff81111561488f5761488e6156a5565b5b6020830191508360208202830111156148ab576148aa6156af565b5b9250929050565b6000813590506148c181615a2e565b92915050565b6000815190506148d681615a2e565b92915050565b6000813590506148eb81615a45565b92915050565b60008151905061490081615a45565b92915050565b60006020828403121561491c5761491b6156b9565b5b600061492a848285016147dc565b91505092915050565b600060208284031215614949576149486156b9565b5b6000614957848285016147f1565b91505092915050565b60008060408385031215614977576149766156b9565b5b6000614985858286016147dc565b9250506020614996858286016147dc565b9150509250929050565b6000806000606084860312156149b9576149b86156b9565b5b60006149c7868287016147dc565b93505060206149d8868287016147dc565b92505060406149e9868287016148dc565b9150509250925092565b60008060408385031215614a0a57614a096156b9565b5b6000614a18858286016147dc565b9250506020614a29858286016148b2565b9150509250929050565b60008060408385031215614a4a57614a496156b9565b5b6000614a58858286016147dc565b9250506020614a69858286016148dc565b9150509250929050565b60008060008060408587031215614a8d57614a8c6156b9565b5b600085013567ffffffffffffffff811115614aab57614aaa6156b4565b5b614ab787828801614806565b9450945050602085013567ffffffffffffffff811115614ada57614ad96156b4565b5b614ae68782880161485c565b925092505092959194509250565b600060208284031215614b0a57614b096156b9565b5b6000614b18848285016148b2565b91505092915050565b600060208284031215614b3757614b366156b9565b5b6000614b45848285016148c7565b91505092915050565b600060208284031215614b6457614b636156b9565b5b6000614b72848285016148dc565b91505092915050565b600080600060608486031215614b9457614b936156b9565b5b6000614ba2868287016148dc565b9350506020614bb3868287016148dc565b9250506040614bc4868287016148dc565b9150509250925092565b600080600060608486031215614be757614be66156b9565b5b6000614bf5868287016148f1565b9350506020614c06868287016148f1565b9250506040614c17868287016148f1565b9150509250925092565b6000614c2d8383614c48565b60208301905092915050565b614c428161546f565b82525050565b614c518161545d565b82525050565b614c608161545d565b82525050565b6000614c71826152f8565b614c7b818561531b565b9350614c86836152e8565b8060005b83811015614cb7578151614c9e8882614c21565b9750614ca98361530e565b925050600181019050614c8a565b5085935050505092915050565b614ccd81615481565b82525050565b614cdc816154c4565b82525050565b614ceb816154d6565b82525050565b6000614cfc82615303565b614d068185615337565b9350614d1681856020860161550c565b614d1f816156be565b840191505092915050565b6000614d37602383615337565b9150614d42826156cf565b604082019050919050565b6000614d5a601b83615337565b9150614d658261571e565b602082019050919050565b6000614d7d602683615337565b9150614d8882615747565b604082019050919050565b6000614da0602283615337565b9150614dab82615796565b604082019050919050565b6000614dc3601b83615337565b9150614dce826157e5565b602082019050919050565b6000614de6602583615337565b9150614df18261580e565b604082019050919050565b6000614e09601d83615337565b9150614e148261585d565b602082019050919050565b6000614e2c602883615337565b9150614e3782615886565b604082019050919050565b6000614e4f602183615337565b9150614e5a826158d5565b604082019050919050565b6000614e72601683615337565b9150614e7d82615924565b602082019050919050565b6000614e95602083615337565b9150614ea08261594d565b602082019050919050565b6000614eb8602583615337565b9150614ec382615976565b604082019050919050565b6000614edb60008361532c565b9150614ee6826159c5565b600082019050919050565b6000614efe602483615337565b9150614f09826159c8565b604082019050919050565b614f1d816154ad565b82525050565b614f2c816154b7565b82525050565b6000614f3d82614ece565b9150819050919050565b6000602082019050614f5c6000830184614c57565b92915050565b6000602082019050614f776000830184614c39565b92915050565b6000604082019050614f926000830185614c57565b614f9f6020830184614c57565b9392505050565b6000604082019050614fbb6000830185614c57565b614fc86020830184614f14565b9392505050565b600060c082019050614fe46000830189614c57565b614ff16020830188614f14565b614ffe6040830187614ce2565b61500b6060830186614ce2565b6150186080830185614c57565b61502560a0830184614f14565b979650505050505050565b60006020820190506150456000830184614cc4565b92915050565b60006020820190506150606000830184614cd3565b92915050565b600060208201905081810360008301526150808184614cf1565b905092915050565b600060208201905081810360008301526150a181614d2a565b9050919050565b600060208201905081810360008301526150c181614d4d565b9050919050565b600060208201905081810360008301526150e181614d70565b9050919050565b6000602082019050818103600083015261510181614d93565b9050919050565b6000602082019050818103600083015261512181614db6565b9050919050565b6000602082019050818103600083015261514181614dd9565b9050919050565b6000602082019050818103600083015261516181614dfc565b9050919050565b6000602082019050818103600083015261518181614e1f565b9050919050565b600060208201905081810360008301526151a181614e42565b9050919050565b600060208201905081810360008301526151c181614e65565b9050919050565b600060208201905081810360008301526151e181614e88565b9050919050565b6000602082019050818103600083015261520181614eab565b9050919050565b6000602082019050818103600083015261522181614ef1565b9050919050565b600060208201905061523d6000830184614f14565b92915050565b60006040820190506152586000830185614f14565b818103602083015261526a8184614c66565b90509392505050565b600060a0820190506152886000830188614f14565b6152956020830187614ce2565b81810360408301526152a78186614c66565b90506152b66060830185614c57565b6152c36080830184614f14565b9695505050505050565b60006020820190506152e26000830184614f23565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000615353826154ad565b915061535e836154ad565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115615393576153926155ba565b5b828201905092915050565b60006153a9826154ad565b91506153b4836154ad565b9250826153c4576153c36155e9565b5b828204905092915050565b60006153da826154ad565b91506153e5836154ad565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561541e5761541d6155ba565b5b828202905092915050565b6000615434826154ad565b915061543f836154ad565b925082821015615452576154516155ba565b5b828203905092915050565b60006154688261548d565b9050919050565b600061547a8261548d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006154cf826154e8565b9050919050565b60006154e1826154ad565b9050919050565b60006154f3826154fa565b9050919050565b60006155058261548d565b9050919050565b60005b8381101561552a57808201518184015260208101905061550f565b83811115615539576000848401525b50505050565b6000600282049050600182168061555757607f821691505b6020821081141561556b5761556a615618565b5b50919050565b600061557c826154ad565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156155af576155ae6155ba565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b7f426f7420456e656d792061646472657373205265737472696374656421000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b615a208161545d565b8114615a2b57600080fd5b50565b615a3781615481565b8114615a4257600080fd5b50565b615a4e816154ad565b8114615a5957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205de771bea08bb2b28ab71adce6fc6931db8e64553336c04fbb7fd8d9346a785a64736f6c63430008070033

Deployed Bytecode Sourcemap

11612:16569:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15619:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20692:317;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12157:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16785:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19360:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13291:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15896:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20375:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17718:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12733:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21286:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18095:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12069:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19196:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15805:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16282:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18326:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12431:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13406:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18458:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12868:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12374:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19619:748;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27473:697;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16004:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3289:230;;;;;;;;;;;;;:::i;:::-;;11826:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13145:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13217:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12952:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17299:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13549:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12781:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12591:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3064:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15710:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12024:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16508:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19059:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21111:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18880:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12690:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13339:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12824:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12532:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18598:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13056:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13453:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12648:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16131:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23648:154;;;;;;;;;;;;;:::i;:::-;;17976:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17861:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17436:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12913:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18216:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3527:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23501:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17579:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13507:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11925:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12483:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18740:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15619:83;15656:13;15689:5;15682:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15619:83;:::o;20692:317::-;3208:12;:10;:12::i;:::-;3198:22;;:6;;;;;;;;;;:22;;;3190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20814:10:::1;20794:17;:30;;;;20855:10;20835:17;:30;;;;20896:10;20876:17;:30;;;;20938:63;20983:17;;20938:40;20960:17;;20938;;:21;;:40;;;;:::i;:::-;:44;;:63;;;;:::i;:::-;20917:18;:84;;;;20692:317:::0;;;:::o;12157:81::-;;;:::o;16785:161::-;16860:4;16877:39;16886:12;:10;:12::i;:::-;16900:7;16909:6;16877:8;:39::i;:::-;16934:4;16927:11;;16785:161;;;;:::o;19360:113::-;3208:12;:10;:12::i;:::-;3198:22;;:6;;;;;;;;;;:22;;;3190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19458:7:::1;19440:9;:15;19450:4;19440:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;19360:113:::0;;:::o;13291:41::-;;;;;;;;;;;;;:::o;15896:100::-;15949:7;15976:12;;15969:19;;15896:100;:::o;20375:309::-;3208:12;:10;:12::i;:::-;3198:22;;:6;;;;;;;;;;:22;;;3190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20495:10:::1;20476:16;:29;;;;20535:10;20516:16;:29;;;;20575:10;20556:16;:29;;;;20616:60;20659:16;;20616:38;20637:16;;20616;;:20;;:38;;;;:::i;:::-;:42;;:60;;;;:::i;:::-;20596:17;:80;;;;20375:309:::0;;;:::o;17718:135::-;3208:12;:10;:12::i;:::-;3198:22;;:6;;;;;;;;;;:22;;;3190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17839:6:::1;17809:19;:27;17829:6;17809:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;17718:135:::0;;:::o;12733:35::-;;;;:::o;21286:313::-;21384:4;21401:36;21411:6;21419:9;21430:6;21401:9;:36::i;:::-;;21448:121;21457:6;21465:12;:10;:12::i;:::-;21479:89;21517:6;21479:89;;;;;;;;;;;;;;;;;:11;:19;21491:6;21479:19;;;;;;;;;;;;;;;:33;21499:12;:10;:12::i;:::-;21479:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;21448:8;:121::i;:::-;21587:4;21580:11;;21286:313;;;;;:::o;18095:113::-;3208:12;:10;:12::i;:::-;3198:22;;:6;;;;;;;;;;:22;;;3190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18192:8:::1;18173:16;;:27;;;;;;;;;;;;;;;;;;18095:113:::0;:::o;12069:81::-;;;:::o;19196:156::-;19249:7;19276:68;19321:22;19331:11;19321:9;:22::i;:::-;19276:40;19293:22;19303:11;19293:9;:22::i;:::-;19276:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;19269:75;;19196:156;:::o;15805:83::-;15846:5;15871:9;;;;;;;;;;;15864:16;;15805:83;:::o;16282:218::-;16370:4;16387:83;16396:12;:10;:12::i;:::-;16410:7;16419:50;16458:10;16419:11;:25;16431:12;:10;:12::i;:::-;16419:25;;;;;;;;;;;;;;;:34;16445:7;16419:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;16387:8;:83::i;:::-;16488:4;16481:11;;16282:218;;;;:::o;18326:124::-;3208:12;:10;:12::i;:::-;3198:22;;:6;;;;;;;;;;:22;;;3190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18434:8:::1;18408:23;:34;;;;18326:124:::0;:::o;12431:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;13406:40::-;;;;;;;;;;;;;:::o;18458:132::-;3208:12;:10;:12::i;:::-;3198:22;;:6;;;;;;;;;;:22;;;3190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18571:10:::1;18545:15;;:37;;;;;;;;;;;;;;;;;;18458:132:::0;:::o;12868:36::-;;;;:::o;12374:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;19619:748::-;19699:22;3208:12;:10;:12::i;:::-;3198:22;;:6;;;;;;;;;;:22;;;3190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19736:35:::1;19793:16;19736:74;;19859:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19841:53;;;19903:4;19910:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19841:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19824:110;;19976:1;19950:28;;:14;:28;;;19947:225;;;20064:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20046:74;;;20129:4;20136:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20046:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20029:131;;19947:225;20198:14;20184:11;;:28;;;;;;;;;;;;;;;;;;20264:16;20246:15;;:34;;;;;;;;;;;;;;;;;;20355:4;20318:12;:34;20339:11;;;;;;;;;;;20318:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;19723:644;19619:748:::0;;;:::o;27473:697::-;3208:12;:10;:12::i;:::-;3198:22;;:6;;;;;;;;;;:22;;;3190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27573:15:::1;27591:10;27573:28;;27639:7;;:14;;27620:8;;:15;;:33;27612:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27690:15;27720:6:::0;27729:1:::1;27720:10;;27716:92;27736:7;;:14;;27732:1;:18;27716:92;;;27786:7;;27794:1;27786:10;;;;;;;:::i;:::-;;;;;;;;27772:24;;;;;:::i;:::-;;;27752:3;;;;;:::i;:::-;;;;27716:92;;;;27848:10;27826:18;27836:7;27826:9;:18::i;:::-;:32;;27818:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;27921:34;27944:10;27921:9;:18;27931:7;27921:18;;;;;;;;;;;;;;;;:22;;:34;;;;:::i;:::-;27900:9;:18;27910:7;27900:18;;;;;;;;;;;;;;;:55;;;;27971:6;27967:194;27987:8;;:15;;27983:1;:19;27967:194;;;28049:38;28076:7;;28084:1;28076:10;;;;;;;:::i;:::-;;;;;;;;28049:9;:22;28059:8;;28068:1;28059:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;28049:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;28024:9;:22;28034:8;;28043:1;28034:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;28024:22;;;;;;;;;;;;;;;:63;;;;28125:8;;28134:1;28125:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;28107:42;;28116:7;28107:42;;;28138:7;;28146:1;28138:10;;;;;;;:::i;:::-;;;;;;;;28107:42;;;;;;:::i;:::-;;;;;;;;28004:3;;;;;:::i;:::-;;;;27967:194;;;;27562:608;;27473:697:::0;;;;:::o;16004:119::-;16070:7;16097:9;:18;16107:7;16097:18;;;;;;;;;;;;;;;;16090:25;;16004:119;;;:::o;3289:230::-;3208:12;:10;:12::i;:::-;3198:22;;:6;;;;;;;;;;:22;;;3190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3396:42:::1;3359:81;;3380:6;::::0;::::1;;;;;;;;3359:81;;;;;;;;;;;;3468:42;3451:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;3289:230::o:0;11826:92::-;;;;;;;;;;;;;:::o;13145:59::-;;;;:::o;13217:58::-;;;;:::o;12952:33::-;;;;:::o;17299:129::-;3208:12;:10;:12::i;:::-;3198:22;;:6;;;;;;;;;;:22;;;3190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17412:8:::1;17388:12;:21;17401:7;17388:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17299:129:::0;;:::o;13549:41::-;;;;;;;;;;;;;:::o;12781:36::-;;;;:::o;12591:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;3064:79::-;3102:7;3129:6;;;;;;;;;;;3122:13;;3064:79;:::o;15710:87::-;15749:13;15782:7;15775:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15710:87;:::o;12024:32::-;;;;;;;;;;;;;:::o;16508:269::-;16601:4;16618:129;16627:12;:10;:12::i;:::-;16641:7;16650:96;16689:15;16650:96;;;;;;;;;;;;;;;;;:11;:25;16662:12;:10;:12::i;:::-;16650:25;;;;;;;;;;;;;;;:34;16676:7;16650:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;16618:8;:129::i;:::-;16765:4;16758:11;;16508:269;;;;:::o;19059:125::-;3208:12;:10;:12::i;:::-;3198:22;;:6;;;;;;;;;;:22;;;3190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19168:8:::1;19140:25;;:36;;;;;;;;;;;;;;;;;;19059:125:::0;:::o;21111:167::-;21189:4;21206:42;21216:12;:10;:12::i;:::-;21230:9;21241:6;21206:9;:42::i;:::-;;21266:4;21259:11;;21111:167;;;;:::o;18880:171::-;3208:12;:10;:12::i;:::-;3198:22;;:6;;;;;;;;;;:22;;;3190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18981:8:::1;18957:21;;:32;;;;;;;;;;;;;;;;;;19005:38;19034:8;19005:38;;;;;;:::i;:::-;;;;;;;;18880:171:::0;:::o;12690:36::-;;;;:::o;13339:26::-;;;;;;;;;;;;;:::o;12824:37::-;;;;:::o;12532:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;18598:134::-;3208:12;:10;:12::i;:::-;3198:22;;:6;;;;;;;;;;:22;;;3190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18713:10:::1;18685:17;;:39;;;;;;;;;;;;;;;;;;18598:134:::0;:::o;13056:69::-;;;;:::o;13453:45::-;;;;;;;;;;;;;:::o;12648:35::-;;;;:::o;16131:143::-;16212:7;16239:11;:18;16251:5;16239:18;;;;;;;;;;;;;;;:27;16258:7;16239:27;;;;;;;;;;;;;;;;16232:34;;16131:143;;;;:::o;23648:154::-;3208:12;:10;:12::i;:::-;3198:22;;:6;;;;;;;;;;:22;;;3190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23702:7:::1;23722:10;23714:24;;23746:21;23714:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23701:71;;;23791:2;23783:11;;;::::0;::::1;;23690:112;23648:154::o:0;17976:111::-;3208:12;:10;:12::i;:::-;3198:22;;:6;;;;;;;;;;:22;;;3190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18068:11:::1;18053:12;:26;;;;17976:111:::0;:::o;17861:107::-;3208:12;:10;:12::i;:::-;3198:22;;:6;;;;;;;;;;:22;;;3190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17953:7:::1;17928:22;;:32;;;;;;;;;;;;;;;;;;17861:107:::0;:::o;17436:135::-;3208:12;:10;:12::i;:::-;3198:22;;:6;;;;;;;;;;:22;;;3190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17555:8:::1;17526:17;:26;17544:7;17526:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;17436:135:::0;;:::o;12913:32::-;;;;:::o;18216:102::-;3208:12;:10;:12::i;:::-;3198:22;;:6;;;;;;;;;;:22;;;3190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18302:8:::1;18288:10;:22;;;;18216:102:::0;:::o;3527:244::-;3208:12;:10;:12::i;:::-;3198:22;;:6;;;;;;;;;;:22;;;3190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3636:1:::1;3616:22;;:8;:22;;;;3608:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3726:8;3697:38;;3718:6;::::0;::::1;;;;;;;;3697:38;;;;;;;;;;;;3755:8;3746:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3527:244:::0;:::o;23501:139::-;3208:12;:10;:12::i;:::-;3198:22;;:6;;;;;;;;;;:22;;;3190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23596:6:::1;23589:23;;;23613:10;23624:7;23589:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23501:139:::0;;:::o;17579:127::-;3208:12;:10;:12::i;:::-;3198:22;;:6;;;;;;;;;;:22;;;3190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17692:6:::1;17666:15;:23;17682:6;17666:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17579:127:::0;;:::o;13507:35::-;;;;;;;;;;;;;:::o;11925:92::-;;;;;;;;;;;;;:::o;12483:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;18740:132::-;3208:12;:10;:12::i;:::-;3198:22;;:6;;;;;;;;;;:22;;;3190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18853:10:::1;18827:15;;:37;;;;;;;;;;;;;;;;;;18740:132:::0;:::o;1749:250::-;1807:7;1836:1;1831;:6;1827:47;;;1861:1;1854:8;;;;1827:47;1886:9;1902:1;1898;:5;;;;:::i;:::-;1886:17;;1931:1;1926;1922;:5;;;;:::i;:::-;:10;1914:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1990:1;1983:8;;;1749:250;;;;;:::o;2007:132::-;2065:7;2092:39;2096:1;2099;2092:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2085:46;;2007:132;;;;:::o;1216:181::-;1274:7;1294:9;1310:1;1306;:5;;;;:::i;:::-;1294:17;;1335:1;1330;:6;;1322:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1388:1;1381:8;;;1216:181;;;;:::o;274:115::-;327:15;370:10;355:26;;274:115;:::o;16954:337::-;17064:1;17047:19;;:5;:19;;;;17039:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17145:1;17126:21;;:7;:21;;;;17118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17229:6;17199:11;:18;17211:5;17199:18;;;;;;;;;;;;;;;:27;17218:7;17199:27;;;;;;;;;;;;;;;:36;;;;17267:7;17251:32;;17260:5;17251:32;;;17276:6;17251:32;;;;;;:::i;:::-;;;;;;;;16954:337;;;:::o;21607:1886::-;21694:4;21739:1;21721:20;;:6;:20;;;;21713:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21823:1;21802:23;;:9;:23;;;;21794:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21885:9;:17;21895:6;21885:17;;;;;;;;;;;;;;;;;;;;;;;;;21884:18;:43;;;;;21907:9;:20;21917:9;21907:20;;;;;;;;;;;;;;;;;;;;;;;;;21906:21;21884:43;21876:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;21977:16;;;;;;;;;;;21974:1502;;;22027:41;22042:6;22050:9;22061:6;22027:14;:41::i;:::-;22020:48;;;;21974:1502;22126:15;:23;22142:6;22126:23;;;;;;;;;;;;;;;;;;;;;;;;;22125:24;:55;;;;;22154:15;:26;22170:9;22154:26;;;;;;;;;;;;;;;;;;;;;;;;;22153:27;22125:55;:81;;;;;22184:22;;;;;;;;;;;22125:81;22122:196;;;22245:12;;22235:6;:22;;22227:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;22122:196;22334:28;22365:24;22383:4;22365:9;:24::i;:::-;22334:55;;22404:28;22459:23;;22435:20;:47;;22404:78;;22515:23;:44;;;;;22543:16;;;;;;;;;;;22542:17;22515:44;:69;;;;;22564:12;:20;22577:6;22564:20;;;;;;;;;;;;;;;;;;;;;;;;;22563:21;22515:69;:94;;;;;22588:21;;;;;;;;;;;22515:94;22511:305;;;22647:25;;;;;;;;;;;22644:97;;;22718:23;;22695:46;;22644:97;22760:36;22775:20;22760:14;:36::i;:::-;22511:305;22852:53;22874:6;22852:53;;;;;;;;;;;;;;;;;:9;:17;22862:6;22852:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;22832:9;:17;22842:6;22832:17;;;;;;;;;;;;;;;:73;;;;22922:19;22945:17;:25;22963:6;22945:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;22974:17;:28;22992:9;22974:28;;;;;;;;;;;;;;;;;;;;;;;;;22945:57;22944:148;;23058:34;23066:6;23074:9;23085:6;23058:7;:34::i;:::-;22944:148;;;23049:6;22944:148;22922:170;;23112:16;;;;;;;;;;;:51;;;;;23133:19;:30;23153:9;23133:30;;;;;;;;;;;;;;;;;;;;;;;;;23132:31;23112:51;23109:191;;;23233:10;;23192:37;23217:11;23192:20;23202:9;23192;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;23184:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;23109:191;23339:37;23364:11;23339:9;:20;23349:9;23339:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;23316:9;:20;23326:9;23316:20;;;;;;;;;;;;;;;:60;;;;23415:9;23398:40;;23407:6;23398:40;;;23426:11;23398:40;;;;;;:::i;:::-;;;;;;;;23460:4;23453:11;;;;;21607:1886;;;;;;:::o;1549:192::-;1635:7;1668:1;1663;:6;;1671:12;1655:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1695:9;1711:1;1707;:5;;;;:::i;:::-;1695:17;;1732:1;1725:8;;;1549:192;;;;;:::o;1405:136::-;1463:7;1490:43;1494:1;1497;1490:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1483:50;;1405:136;;;;:::o;2147:278::-;2233:7;2265:1;2261;:5;2268:12;2253:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2292:9;2308:1;2304;:5;;;;:::i;:::-;2292:17;;2416:1;2409:8;;;2147:278;;;;;:::o;23810:330::-;23903:4;23940:53;23962:6;23940:53;;;;;;;;;;;;;;;;;:9;:17;23950:6;23940:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;23920:9;:17;23930:6;23920:17;;;;;;;;;;;;;;;:73;;;;24027:32;24052:6;24027:9;:20;24037:9;24027:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;24004:9;:20;24014:9;24004:20;;;;;;;;;;;;;;;:55;;;;24092:9;24075:35;;24084:6;24075:35;;;24103:6;24075:35;;;;;;:::i;:::-;;;;;;;;24128:4;24121:11;;23810:330;;;;;:::o;24148:1449::-;14034:4;14015:16;;:23;;;;;;;;;;;;;;;;;;24222:19:::1;24244:41;24266:18;;24244:17;;:21;;:41;;;;:::i;:::-;24222:63;;24298:22;24323:39;24344:17;;24323:16;;:20;;:39;;;;:::i;:::-;24298:64;;24373:22;24398:39;24419:17;;24398:16;;:20;;:39;;;;:::i;:::-;24373:64;;24536:18;24557:51;24606:1;24557:44;24589:11;24557:27;24569:14;24557:7;:11;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;24536:72;;24619:20;24642:23;24654:10;24642:7;:11;;:23;;;;:::i;:::-;24619:46;;24678:22;24704:21;24678:47;;24736:30;24753:12;24736:16;:30::i;:::-;24777:23;24804:41;24830:14;24804:21;:25;;:41;;;;:::i;:::-;24777:68;;24858:19;24880:38;24896:21;24915:1;24896:14;:18;;:21;;;;:::i;:::-;24880:11;:15;;:38;;;;:::i;:::-;24858:60;;24931:26;24960:59;25017:1;24960:52;25000:11;24960:35;24980:14;24960:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;24931:88;;25030:26;25059:52;25099:11;25059:35;25079:14;25059:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;25030:81;;25122:26;25151:63;25195:18;25151:39;25171:18;25151:15;:19;;:39;;;;:::i;:::-;:43;;:63;;;;:::i;:::-;25122:92;;25251:1;25230:18;:22;25227:107;;;25277:15;;;;;;;;;;;25269:33;;:53;25303:18;25269:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25227:107;25370:1;25349:18;:22;25346:107;;;25396:15;;;;;;;;;;;25388:33;;:53;25422:18;25388:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25346:107;25498:1;25477:18;:22;:40;;;;;25516:1;25503:10;:14;25477:40;25474:116;;;25534:44;25547:10;25559:18;25534:12;:44::i;:::-;25474:116;24209:1388;;;;;;;;;;;14080:5:::0;14061:16;;:24;;;;;;;;;;;;;;;;;;24148:1449;:::o;26814:622::-;26900:7;26930:17;26950:1;26930:21;;26975:12;:20;26988:6;26975:20;;;;;;;;;;;;;;;;;;;;;;;;;26972:223;;;27024:38;27058:3;27024:29;27035:17;;27024:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;27012:50;;26972:223;;;27092:12;:23;27105:9;27092:23;;;;;;;;;;;;;;;;;;;;;;;;;27089:106;;;27144:39;27179:3;27144:30;27155:18;;27144:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;27132:51;;27089:106;26972:223;27230:1;27218:9;:13;27215:173;;;27275:39;27304:9;27275;:24;27293:4;27275:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;27248:9;:24;27266:4;27248:24;;;;;;;;;;;;;;;:66;;;;27359:4;27334:42;;27343:6;27334:42;;;27366:9;27334:42;;;;;;:::i;:::-;;;;;;;;27215:173;27407:21;27418:9;27407:6;:10;;:21;;;;:::i;:::-;27400:28;;;26814:622;;;;;:::o;25609:666::-;25735:21;25773:1;25759:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25735:40;;25804:4;25786;25791:1;25786:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;25830:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25820:4;25825:1;25820:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;25865:62;25882:4;25897:15;;;;;;;;;;;25915:11;25865:8;:62::i;:::-;25966:15;;;;;;;;;;;:66;;;26047:11;26073:1;26117:4;26144;26180:15;25966:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26232:35;26249:11;26262:4;26232:35;;;;;;;:::i;:::-;;;;;;;;25664:611;25609:666;:::o;26283:523::-;26431:62;26448:4;26463:15;;;;;;;;;;;26481:11;26431:8;:62::i;:::-;26536:15;;;;;;;;;;;:31;;;26575:9;26608:4;26628:11;26654:1;26697;26740:17;;;;;;;;;;;26772:15;26536:262;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;26283:523;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;318:568::-;391:8;401:6;451:3;444:4;436:6;432:17;428:27;418:122;;459:79;;:::i;:::-;418:122;572:6;559:20;549:30;;602:18;594:6;591:30;588:117;;;624:79;;:::i;:::-;588:117;738:4;730:6;726:17;714:29;;792:3;784:4;776:6;772:17;762:8;758:32;755:41;752:128;;;799:79;;:::i;:::-;752:128;318:568;;;;;:::o;909:::-;982:8;992:6;1042:3;1035:4;1027:6;1023:17;1019:27;1009:122;;1050:79;;:::i;:::-;1009:122;1163:6;1150:20;1140:30;;1193:18;1185:6;1182:30;1179:117;;;1215:79;;:::i;:::-;1179:117;1329:4;1321:6;1317:17;1305:29;;1383:3;1375:4;1367:6;1363:17;1353:8;1349:32;1346:41;1343:128;;;1390:79;;:::i;:::-;1343:128;909:568;;;;;:::o;1483:133::-;1526:5;1564:6;1551:20;1542:29;;1580:30;1604:5;1580:30;:::i;:::-;1483:133;;;;:::o;1622:137::-;1676:5;1707:6;1701:13;1692:22;;1723:30;1747:5;1723:30;:::i;:::-;1622:137;;;;:::o;1765:139::-;1811:5;1849:6;1836:20;1827:29;;1865:33;1892:5;1865:33;:::i;:::-;1765:139;;;;:::o;1910:143::-;1967:5;1998:6;1992:13;1983:22;;2014:33;2041:5;2014:33;:::i;:::-;1910:143;;;;:::o;2059:329::-;2118:6;2167:2;2155:9;2146:7;2142:23;2138:32;2135:119;;;2173:79;;:::i;:::-;2135:119;2293:1;2318:53;2363:7;2354:6;2343:9;2339:22;2318:53;:::i;:::-;2308:63;;2264:117;2059:329;;;;:::o;2394:351::-;2464:6;2513:2;2501:9;2492:7;2488:23;2484:32;2481:119;;;2519:79;;:::i;:::-;2481:119;2639:1;2664:64;2720:7;2711:6;2700:9;2696:22;2664:64;:::i;:::-;2654:74;;2610:128;2394:351;;;;:::o;2751:474::-;2819:6;2827;2876:2;2864:9;2855:7;2851:23;2847:32;2844:119;;;2882:79;;:::i;:::-;2844:119;3002:1;3027:53;3072:7;3063:6;3052:9;3048:22;3027:53;:::i;:::-;3017:63;;2973:117;3129:2;3155:53;3200:7;3191:6;3180:9;3176:22;3155:53;:::i;:::-;3145:63;;3100:118;2751:474;;;;;:::o;3231:619::-;3308:6;3316;3324;3373:2;3361:9;3352:7;3348:23;3344:32;3341:119;;;3379:79;;:::i;:::-;3341:119;3499:1;3524:53;3569:7;3560:6;3549:9;3545:22;3524:53;:::i;:::-;3514:63;;3470:117;3626:2;3652:53;3697:7;3688:6;3677:9;3673:22;3652:53;:::i;:::-;3642:63;;3597:118;3754:2;3780:53;3825:7;3816:6;3805:9;3801:22;3780:53;:::i;:::-;3770:63;;3725:118;3231:619;;;;;:::o;3856:468::-;3921:6;3929;3978:2;3966:9;3957:7;3953:23;3949:32;3946:119;;;3984:79;;:::i;:::-;3946:119;4104:1;4129:53;4174:7;4165:6;4154:9;4150:22;4129:53;:::i;:::-;4119:63;;4075:117;4231:2;4257:50;4299:7;4290:6;4279:9;4275:22;4257:50;:::i;:::-;4247:60;;4202:115;3856:468;;;;;:::o;4330:474::-;4398:6;4406;4455:2;4443:9;4434:7;4430:23;4426:32;4423:119;;;4461:79;;:::i;:::-;4423:119;4581:1;4606:53;4651:7;4642:6;4631:9;4627:22;4606:53;:::i;:::-;4596:63;;4552:117;4708:2;4734:53;4779:7;4770:6;4759:9;4755:22;4734:53;:::i;:::-;4724:63;;4679:118;4330:474;;;;;:::o;4810:934::-;4932:6;4940;4948;4956;5005:2;4993:9;4984:7;4980:23;4976:32;4973:119;;;5011:79;;:::i;:::-;4973:119;5159:1;5148:9;5144:17;5131:31;5189:18;5181:6;5178:30;5175:117;;;5211:79;;:::i;:::-;5175:117;5324:80;5396:7;5387:6;5376:9;5372:22;5324:80;:::i;:::-;5306:98;;;;5102:312;5481:2;5470:9;5466:18;5453:32;5512:18;5504:6;5501:30;5498:117;;;5534:79;;:::i;:::-;5498:117;5647:80;5719:7;5710:6;5699:9;5695:22;5647:80;:::i;:::-;5629:98;;;;5424:313;4810:934;;;;;;;:::o;5750:323::-;5806:6;5855:2;5843:9;5834:7;5830:23;5826:32;5823:119;;;5861:79;;:::i;:::-;5823:119;5981:1;6006:50;6048:7;6039:6;6028:9;6024:22;6006:50;:::i;:::-;5996:60;;5952:114;5750:323;;;;:::o;6079:345::-;6146:6;6195:2;6183:9;6174:7;6170:23;6166:32;6163:119;;;6201:79;;:::i;:::-;6163:119;6321:1;6346:61;6399:7;6390:6;6379:9;6375:22;6346:61;:::i;:::-;6336:71;;6292:125;6079:345;;;;:::o;6430:329::-;6489:6;6538:2;6526:9;6517:7;6513:23;6509:32;6506:119;;;6544:79;;:::i;:::-;6506:119;6664:1;6689:53;6734:7;6725:6;6714:9;6710:22;6689:53;:::i;:::-;6679:63;;6635:117;6430:329;;;;:::o;6765:619::-;6842:6;6850;6858;6907:2;6895:9;6886:7;6882:23;6878:32;6875:119;;;6913:79;;:::i;:::-;6875:119;7033:1;7058:53;7103:7;7094:6;7083:9;7079:22;7058:53;:::i;:::-;7048:63;;7004:117;7160:2;7186:53;7231:7;7222:6;7211:9;7207:22;7186:53;:::i;:::-;7176:63;;7131:118;7288:2;7314:53;7359:7;7350:6;7339:9;7335:22;7314:53;:::i;:::-;7304:63;;7259:118;6765:619;;;;;:::o;7390:663::-;7478:6;7486;7494;7543:2;7531:9;7522:7;7518:23;7514:32;7511:119;;;7549:79;;:::i;:::-;7511:119;7669:1;7694:64;7750:7;7741:6;7730:9;7726:22;7694:64;:::i;:::-;7684:74;;7640:128;7807:2;7833:64;7889:7;7880:6;7869:9;7865:22;7833:64;:::i;:::-;7823:74;;7778:129;7946:2;7972:64;8028:7;8019:6;8008:9;8004:22;7972:64;:::i;:::-;7962:74;;7917:129;7390:663;;;;;:::o;8059:179::-;8128:10;8149:46;8191:3;8183:6;8149:46;:::i;:::-;8227:4;8222:3;8218:14;8204:28;;8059:179;;;;:::o;8244:142::-;8347:32;8373:5;8347:32;:::i;:::-;8342:3;8335:45;8244:142;;:::o;8392:108::-;8469:24;8487:5;8469:24;:::i;:::-;8464:3;8457:37;8392:108;;:::o;8506:118::-;8593:24;8611:5;8593:24;:::i;:::-;8588:3;8581:37;8506:118;;:::o;8660:732::-;8779:3;8808:54;8856:5;8808:54;:::i;:::-;8878:86;8957:6;8952:3;8878:86;:::i;:::-;8871:93;;8988:56;9038:5;8988:56;:::i;:::-;9067:7;9098:1;9083:284;9108:6;9105:1;9102:13;9083:284;;;9184:6;9178:13;9211:63;9270:3;9255:13;9211:63;:::i;:::-;9204:70;;9297:60;9350:6;9297:60;:::i;:::-;9287:70;;9143:224;9130:1;9127;9123:9;9118:14;;9083:284;;;9087:14;9383:3;9376:10;;8784:608;;;8660:732;;;;:::o;9398:109::-;9479:21;9494:5;9479:21;:::i;:::-;9474:3;9467:34;9398:109;;:::o;9513:185::-;9627:64;9685:5;9627:64;:::i;:::-;9622:3;9615:77;9513:185;;:::o;9704:147::-;9799:45;9838:5;9799:45;:::i;:::-;9794:3;9787:58;9704:147;;:::o;9857:364::-;9945:3;9973:39;10006:5;9973:39;:::i;:::-;10028:71;10092:6;10087:3;10028:71;:::i;:::-;10021:78;;10108:52;10153:6;10148:3;10141:4;10134:5;10130:16;10108:52;:::i;:::-;10185:29;10207:6;10185:29;:::i;:::-;10180:3;10176:39;10169:46;;9949:272;9857:364;;;;:::o;10227:366::-;10369:3;10390:67;10454:2;10449:3;10390:67;:::i;:::-;10383:74;;10466:93;10555:3;10466:93;:::i;:::-;10584:2;10579:3;10575:12;10568:19;;10227:366;;;:::o;10599:::-;10741:3;10762:67;10826:2;10821:3;10762:67;:::i;:::-;10755:74;;10838:93;10927:3;10838:93;:::i;:::-;10956:2;10951:3;10947:12;10940:19;;10599:366;;;:::o;10971:::-;11113:3;11134:67;11198:2;11193:3;11134:67;:::i;:::-;11127:74;;11210:93;11299:3;11210:93;:::i;:::-;11328:2;11323:3;11319:12;11312:19;;10971:366;;;:::o;11343:::-;11485:3;11506:67;11570:2;11565:3;11506:67;:::i;:::-;11499:74;;11582:93;11671:3;11582:93;:::i;:::-;11700:2;11695:3;11691:12;11684:19;;11343:366;;;:::o;11715:::-;11857:3;11878:67;11942:2;11937:3;11878:67;:::i;:::-;11871:74;;11954:93;12043:3;11954:93;:::i;:::-;12072:2;12067:3;12063:12;12056:19;;11715:366;;;:::o;12087:::-;12229:3;12250:67;12314:2;12309:3;12250:67;:::i;:::-;12243:74;;12326:93;12415:3;12326:93;:::i;:::-;12444:2;12439:3;12435:12;12428:19;;12087:366;;;:::o;12459:::-;12601:3;12622:67;12686:2;12681:3;12622:67;:::i;:::-;12615:74;;12698:93;12787:3;12698:93;:::i;:::-;12816:2;12811:3;12807:12;12800:19;;12459:366;;;:::o;12831:::-;12973:3;12994:67;13058:2;13053:3;12994:67;:::i;:::-;12987:74;;13070:93;13159:3;13070:93;:::i;:::-;13188:2;13183:3;13179:12;13172:19;;12831:366;;;:::o;13203:::-;13345:3;13366:67;13430:2;13425:3;13366:67;:::i;:::-;13359:74;;13442:93;13531:3;13442:93;:::i;:::-;13560:2;13555:3;13551:12;13544:19;;13203:366;;;:::o;13575:::-;13717:3;13738:67;13802:2;13797:3;13738:67;:::i;:::-;13731:74;;13814:93;13903:3;13814:93;:::i;:::-;13932:2;13927:3;13923:12;13916:19;;13575:366;;;:::o;13947:::-;14089:3;14110:67;14174:2;14169:3;14110:67;:::i;:::-;14103:74;;14186:93;14275:3;14186:93;:::i;:::-;14304:2;14299:3;14295:12;14288:19;;13947:366;;;:::o;14319:::-;14461:3;14482:67;14546:2;14541:3;14482:67;:::i;:::-;14475:74;;14558:93;14647:3;14558:93;:::i;:::-;14676:2;14671:3;14667:12;14660:19;;14319:366;;;:::o;14691:398::-;14850:3;14871:83;14952:1;14947:3;14871:83;:::i;:::-;14864:90;;14963:93;15052:3;14963:93;:::i;:::-;15081:1;15076:3;15072:11;15065:18;;14691:398;;;:::o;15095:366::-;15237:3;15258:67;15322:2;15317:3;15258:67;:::i;:::-;15251:74;;15334:93;15423:3;15334:93;:::i;:::-;15452:2;15447:3;15443:12;15436:19;;15095:366;;;:::o;15467:118::-;15554:24;15572:5;15554:24;:::i;:::-;15549:3;15542:37;15467:118;;:::o;15591:112::-;15674:22;15690:5;15674:22;:::i;:::-;15669:3;15662:35;15591:112;;:::o;15709:379::-;15893:3;15915:147;16058:3;15915:147;:::i;:::-;15908:154;;16079:3;16072:10;;15709:379;;;:::o;16094:222::-;16187:4;16225:2;16214:9;16210:18;16202:26;;16238:71;16306:1;16295:9;16291:17;16282:6;16238:71;:::i;:::-;16094:222;;;;:::o;16322:254::-;16431:4;16469:2;16458:9;16454:18;16446:26;;16482:87;16566:1;16555:9;16551:17;16542:6;16482:87;:::i;:::-;16322:254;;;;:::o;16582:332::-;16703:4;16741:2;16730:9;16726:18;16718:26;;16754:71;16822:1;16811:9;16807:17;16798:6;16754:71;:::i;:::-;16835:72;16903:2;16892:9;16888:18;16879:6;16835:72;:::i;:::-;16582:332;;;;;:::o;16920:::-;17041:4;17079:2;17068:9;17064:18;17056:26;;17092:71;17160:1;17149:9;17145:17;17136:6;17092:71;:::i;:::-;17173:72;17241:2;17230:9;17226:18;17217:6;17173:72;:::i;:::-;16920:332;;;;;:::o;17258:807::-;17507:4;17545:3;17534:9;17530:19;17522:27;;17559:71;17627:1;17616:9;17612:17;17603:6;17559:71;:::i;:::-;17640:72;17708:2;17697:9;17693:18;17684:6;17640:72;:::i;:::-;17722:80;17798:2;17787:9;17783:18;17774:6;17722:80;:::i;:::-;17812;17888:2;17877:9;17873:18;17864:6;17812:80;:::i;:::-;17902:73;17970:3;17959:9;17955:19;17946:6;17902:73;:::i;:::-;17985;18053:3;18042:9;18038:19;18029:6;17985:73;:::i;:::-;17258:807;;;;;;;;;:::o;18071:210::-;18158:4;18196:2;18185:9;18181:18;18173:26;;18209:65;18271:1;18260:9;18256:17;18247:6;18209:65;:::i;:::-;18071:210;;;;:::o;18287:276::-;18407:4;18445:2;18434:9;18430:18;18422:26;;18458:98;18553:1;18542:9;18538:17;18529:6;18458:98;:::i;:::-;18287:276;;;;:::o;18569:313::-;18682:4;18720:2;18709:9;18705:18;18697:26;;18769:9;18763:4;18759:20;18755:1;18744:9;18740:17;18733:47;18797:78;18870:4;18861:6;18797:78;:::i;:::-;18789:86;;18569:313;;;;:::o;18888:419::-;19054:4;19092:2;19081:9;19077:18;19069:26;;19141:9;19135:4;19131:20;19127:1;19116:9;19112:17;19105:47;19169:131;19295:4;19169:131;:::i;:::-;19161:139;;18888:419;;;:::o;19313:::-;19479:4;19517:2;19506:9;19502:18;19494:26;;19566:9;19560:4;19556:20;19552:1;19541:9;19537:17;19530:47;19594:131;19720:4;19594:131;:::i;:::-;19586:139;;19313:419;;;:::o;19738:::-;19904:4;19942:2;19931:9;19927:18;19919:26;;19991:9;19985:4;19981:20;19977:1;19966:9;19962:17;19955:47;20019:131;20145:4;20019:131;:::i;:::-;20011:139;;19738:419;;;:::o;20163:::-;20329:4;20367:2;20356:9;20352:18;20344:26;;20416:9;20410:4;20406:20;20402:1;20391:9;20387:17;20380:47;20444:131;20570:4;20444:131;:::i;:::-;20436:139;;20163:419;;;:::o;20588:::-;20754:4;20792:2;20781:9;20777:18;20769:26;;20841:9;20835:4;20831:20;20827:1;20816:9;20812:17;20805:47;20869:131;20995:4;20869:131;:::i;:::-;20861:139;;20588:419;;;:::o;21013:::-;21179:4;21217:2;21206:9;21202:18;21194:26;;21266:9;21260:4;21256:20;21252:1;21241:9;21237:17;21230:47;21294:131;21420:4;21294:131;:::i;:::-;21286:139;;21013:419;;;:::o;21438:::-;21604:4;21642:2;21631:9;21627:18;21619:26;;21691:9;21685:4;21681:20;21677:1;21666:9;21662:17;21655:47;21719:131;21845:4;21719:131;:::i;:::-;21711:139;;21438:419;;;:::o;21863:::-;22029:4;22067:2;22056:9;22052:18;22044:26;;22116:9;22110:4;22106:20;22102:1;22091:9;22087:17;22080:47;22144:131;22270:4;22144:131;:::i;:::-;22136:139;;21863:419;;;:::o;22288:::-;22454:4;22492:2;22481:9;22477:18;22469:26;;22541:9;22535:4;22531:20;22527:1;22516:9;22512:17;22505:47;22569:131;22695:4;22569:131;:::i;:::-;22561:139;;22288:419;;;:::o;22713:::-;22879:4;22917:2;22906:9;22902:18;22894:26;;22966:9;22960:4;22956:20;22952:1;22941:9;22937:17;22930:47;22994:131;23120:4;22994:131;:::i;:::-;22986:139;;22713:419;;;:::o;23138:::-;23304:4;23342:2;23331:9;23327:18;23319:26;;23391:9;23385:4;23381:20;23377:1;23366:9;23362:17;23355:47;23419:131;23545:4;23419:131;:::i;:::-;23411:139;;23138:419;;;:::o;23563:::-;23729:4;23767:2;23756:9;23752:18;23744:26;;23816:9;23810:4;23806:20;23802:1;23791:9;23787:17;23780:47;23844:131;23970:4;23844:131;:::i;:::-;23836:139;;23563:419;;;:::o;23988:::-;24154:4;24192:2;24181:9;24177:18;24169:26;;24241:9;24235:4;24231:20;24227:1;24216:9;24212:17;24205:47;24269:131;24395:4;24269:131;:::i;:::-;24261:139;;23988:419;;;:::o;24413:222::-;24506:4;24544:2;24533:9;24529:18;24521:26;;24557:71;24625:1;24614:9;24610:17;24601:6;24557:71;:::i;:::-;24413:222;;;;:::o;24641:483::-;24812:4;24850:2;24839:9;24835:18;24827:26;;24863:71;24931:1;24920:9;24916:17;24907:6;24863:71;:::i;:::-;24981:9;24975:4;24971:20;24966:2;24955:9;24951:18;24944:48;25009:108;25112:4;25103:6;25009:108;:::i;:::-;25001:116;;24641:483;;;;;:::o;25130:831::-;25393:4;25431:3;25420:9;25416:19;25408:27;;25445:71;25513:1;25502:9;25498:17;25489:6;25445:71;:::i;:::-;25526:80;25602:2;25591:9;25587:18;25578:6;25526:80;:::i;:::-;25653:9;25647:4;25643:20;25638:2;25627:9;25623:18;25616:48;25681:108;25784:4;25775:6;25681:108;:::i;:::-;25673:116;;25799:72;25867:2;25856:9;25852:18;25843:6;25799:72;:::i;:::-;25881:73;25949:3;25938:9;25934:19;25925:6;25881:73;:::i;:::-;25130:831;;;;;;;;:::o;25967:214::-;26056:4;26094:2;26083:9;26079:18;26071:26;;26107:67;26171:1;26160:9;26156:17;26147:6;26107:67;:::i;:::-;25967:214;;;;:::o;26268:132::-;26335:4;26358:3;26350:11;;26388:4;26383:3;26379:14;26371:22;;26268:132;;;:::o;26406:114::-;26473:6;26507:5;26501:12;26491:22;;26406:114;;;:::o;26526:99::-;26578:6;26612:5;26606:12;26596:22;;26526:99;;;:::o;26631:113::-;26701:4;26733;26728:3;26724:14;26716:22;;26631:113;;;:::o;26750:184::-;26849:11;26883:6;26878:3;26871:19;26923:4;26918:3;26914:14;26899:29;;26750:184;;;;:::o;26940:147::-;27041:11;27078:3;27063:18;;26940:147;;;;:::o;27093:169::-;27177:11;27211:6;27206:3;27199:19;27251:4;27246:3;27242:14;27227:29;;27093:169;;;;:::o;27268:305::-;27308:3;27327:20;27345:1;27327:20;:::i;:::-;27322:25;;27361:20;27379:1;27361:20;:::i;:::-;27356:25;;27515:1;27447:66;27443:74;27440:1;27437:81;27434:107;;;27521:18;;:::i;:::-;27434:107;27565:1;27562;27558:9;27551:16;;27268:305;;;;:::o;27579:185::-;27619:1;27636:20;27654:1;27636:20;:::i;:::-;27631:25;;27670:20;27688:1;27670:20;:::i;:::-;27665:25;;27709:1;27699:35;;27714:18;;:::i;:::-;27699:35;27756:1;27753;27749:9;27744:14;;27579:185;;;;:::o;27770:348::-;27810:7;27833:20;27851:1;27833:20;:::i;:::-;27828:25;;27867:20;27885:1;27867:20;:::i;:::-;27862:25;;28055:1;27987:66;27983:74;27980:1;27977:81;27972:1;27965:9;27958:17;27954:105;27951:131;;;28062:18;;:::i;:::-;27951:131;28110:1;28107;28103:9;28092:20;;27770:348;;;;:::o;28124:191::-;28164:4;28184:20;28202:1;28184:20;:::i;:::-;28179:25;;28218:20;28236:1;28218:20;:::i;:::-;28213:25;;28257:1;28254;28251:8;28248:34;;;28262:18;;:::i;:::-;28248:34;28307:1;28304;28300:9;28292:17;;28124:191;;;;:::o;28321:96::-;28358:7;28387:24;28405:5;28387:24;:::i;:::-;28376:35;;28321:96;;;:::o;28423:104::-;28468:7;28497:24;28515:5;28497:24;:::i;:::-;28486:35;;28423:104;;;:::o;28533:90::-;28567:7;28610:5;28603:13;28596:21;28585:32;;28533:90;;;:::o;28629:126::-;28666:7;28706:42;28699:5;28695:54;28684:65;;28629:126;;;:::o;28761:77::-;28798:7;28827:5;28816:16;;28761:77;;;:::o;28844:86::-;28879:7;28919:4;28912:5;28908:16;28897:27;;28844:86;;;:::o;28936:153::-;29013:9;29046:37;29077:5;29046:37;:::i;:::-;29033:50;;28936:153;;;:::o;29095:121::-;29153:9;29186:24;29204:5;29186:24;:::i;:::-;29173:37;;29095:121;;;:::o;29222:126::-;29272:9;29305:37;29336:5;29305:37;:::i;:::-;29292:50;;29222:126;;;:::o;29354:113::-;29404:9;29437:24;29455:5;29437:24;:::i;:::-;29424:37;;29354:113;;;:::o;29473:307::-;29541:1;29551:113;29565:6;29562:1;29559:13;29551:113;;;29650:1;29645:3;29641:11;29635:18;29631:1;29626:3;29622:11;29615:39;29587:2;29584:1;29580:10;29575:15;;29551:113;;;29682:6;29679:1;29676:13;29673:101;;;29762:1;29753:6;29748:3;29744:16;29737:27;29673:101;29522:258;29473:307;;;:::o;29786:320::-;29830:6;29867:1;29861:4;29857:12;29847:22;;29914:1;29908:4;29904:12;29935:18;29925:81;;29991:4;29983:6;29979:17;29969:27;;29925:81;30053:2;30045:6;30042:14;30022:18;30019:38;30016:84;;;30072:18;;:::i;:::-;30016:84;29837:269;29786:320;;;:::o;30112:233::-;30151:3;30174:24;30192:5;30174:24;:::i;:::-;30165:33;;30220:66;30213:5;30210:77;30207:103;;;30290:18;;:::i;:::-;30207:103;30337:1;30330:5;30326:13;30319:20;;30112:233;;;:::o;30351:180::-;30399:77;30396:1;30389:88;30496:4;30493:1;30486:15;30520:4;30517:1;30510:15;30537:180;30585:77;30582:1;30575:88;30682:4;30679:1;30672:15;30706:4;30703:1;30696:15;30723:180;30771:77;30768:1;30761:88;30868:4;30865:1;30858:15;30892:4;30889:1;30882:15;30909:180;30957:77;30954:1;30947:88;31054:4;31051:1;31044:15;31078:4;31075:1;31068:15;31095:180;31143:77;31140:1;31133:88;31240:4;31237:1;31230:15;31264:4;31261:1;31254:15;31281:117;31390:1;31387;31380:12;31404:117;31513:1;31510;31503:12;31527:117;31636:1;31633;31626:12;31650:117;31759:1;31756;31749:12;31773:117;31882:1;31879;31872:12;31896:102;31937:6;31988:2;31984:7;31979:2;31972:5;31968:14;31964:28;31954:38;;31896:102;;;:::o;32004:222::-;32144:34;32140:1;32132:6;32128:14;32121:58;32213:5;32208:2;32200:6;32196:15;32189:30;32004:222;:::o;32232:177::-;32372:29;32368:1;32360:6;32356:14;32349:53;32232:177;:::o;32415:225::-;32555:34;32551:1;32543:6;32539:14;32532:58;32624:8;32619:2;32611:6;32607:15;32600:33;32415:225;:::o;32646:221::-;32786:34;32782:1;32774:6;32770:14;32763:58;32855:4;32850:2;32842:6;32838:15;32831:29;32646:221;:::o;32873:177::-;33013:29;33009:1;33001:6;32997:14;32990:53;32873:177;:::o;33056:224::-;33196:34;33192:1;33184:6;33180:14;33173:58;33265:7;33260:2;33252:6;33248:15;33241:32;33056:224;:::o;33286:179::-;33426:31;33422:1;33414:6;33410:14;33403:55;33286:179;:::o;33471:227::-;33611:34;33607:1;33599:6;33595:14;33588:58;33680:10;33675:2;33667:6;33663:15;33656:35;33471:227;:::o;33704:220::-;33844:34;33840:1;33832:6;33828:14;33821:58;33913:3;33908:2;33900:6;33896:15;33889:28;33704:220;:::o;33930:172::-;34070:24;34066:1;34058:6;34054:14;34047:48;33930:172;:::o;34108:182::-;34248:34;34244:1;34236:6;34232:14;34225:58;34108:182;:::o;34296:224::-;34436:34;34432:1;34424:6;34420:14;34413:58;34505:7;34500:2;34492:6;34488:15;34481:32;34296:224;:::o;34526:114::-;;:::o;34646:223::-;34786:34;34782:1;34774:6;34770:14;34763:58;34855:6;34850:2;34842:6;34838:15;34831:31;34646:223;:::o;34875:122::-;34948:24;34966:5;34948:24;:::i;:::-;34941:5;34938:35;34928:63;;34987:1;34984;34977:12;34928:63;34875:122;:::o;35003:116::-;35073:21;35088:5;35073:21;:::i;:::-;35066:5;35063:32;35053:60;;35109:1;35106;35099:12;35053:60;35003:116;:::o;35125:122::-;35198:24;35216:5;35198:24;:::i;:::-;35191:5;35188:35;35178:63;;35237:1;35234;35227:12;35178:63;35125:122;:::o

Swarm Source

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