ETH Price: $3,375.33 (+3.07%)
Gas: 2 Gwei

Token

Spirited Away Dragon (haku)
 

Overview

Max Total Supply

1,000,000 haku

Holders

46

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
13,661.012996187545588032 haku

Value
$0.00
0xcd52426f30ad7cb3bd61a60ddae8e2675cf0b632
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:
SpiritedAwayDragon

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-19
*/

/*

/*

Spirited Away Dragon ETH

https://t.me/SpiritedAwayDragon

https://link.medium.com/aG1xIBb7Rvb

https://twitter.com/haku_spirited

*/

// 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 SpiritedAwayDragon is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    
    string private _name = "Spirited Away Dragon";
    string private _symbol = "haku";
    uint8 private _decimals = 18;

    address payable public marketingWallet = payable(0xeCeEa12EEA634c665b407276D920babc08F2c084);
    address payable public DeveloperWallet = payable(0x665a81930cd70ba9dA391c964B65CE630F2c9A18);
    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 = 50;
    uint256 public _buyDeveloperFee = 1;
    
    uint256 public _sellLiquidityFee = 1;
    uint256 public _sellMarketingFee = 50;
    uint256 public _sellDeveloperFee = 1;

    uint256 public _totalTaxIfBuying;
    uint256 public _totalTaxIfSelling;

    uint256 private _totalSupply = 1000000 * 10**_decimals;

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

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

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

    bool public checkWalletLimit = true;
    bool public EnableTransactionLimit = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);

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

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

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

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

        isMarketPair[address(uniswapPair)] = true;
        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"}]

60c06040526040518060400160405280601481526020017f5370697269746564204177617920447261676f6e000000000000000000000000815250600190805190602001906200005192919062001043565b506040518060400160405280600481526020017f68616b7500000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062001043565b506012600360006101000a81548160ff021916908360ff16021790555073eceea12eea634c665b407276d920babc08f2c084600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073665a81930cd70ba9da391c964b65ce630f2c9a18600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff1660601b8152506001600d556032600e556001600f55600160105560326011556001601255600360009054906101000a900460ff16600a620002119190620013ab565b620f4240620002219190620014e8565b6015556200025b606462000247600160155462000e7160201b620032601790919060201c565b62000ef560201b620032db1790919060201c565b60165562000295606462000281600260155462000e7160201b620032601790919060201c565b62000ef560201b620032db1790919060201c565b601755620002cf6064620002bb600260155462000e7160201b620032601790919060201c565b62000ef560201b620032db1790919060201c565b6018556001601a60156101000a81548160ff0219169083151502179055506000601a60166101000a81548160ff0219169083151502179055506001601a60176101000a81548160ff0219169083151502179055506001601a60186101000a81548160ff0219169083151502179055503480156200034b57600080fd5b5060006200035e62000f4760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200045c57600080fd5b505afa15801562000471573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049791906200110a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004fa57600080fd5b505afa1580156200050f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200053591906200110a565b6040518363ffffffff1660e01b815260040162000554929190620011ed565b602060405180830381600087803b1580156200056f57600080fd5b505af115801562000584573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005aa91906200110a565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160086000620006e662000f4f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60006200089962000f4f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c600062000ac662000f4f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000c9c600f5462000c88600e54600d5462000f7860201b620033251790919060201c565b62000f7860201b620033251790919060201c565b60138190555062000cdb60125462000cc760115460105462000f7860201b620033251790919060201c565b62000f7860201b620033251790919060201c565b601481905550600160096000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506015546006600062000db362000f4760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000e0162000f4760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60155460405162000e62919062001282565b60405180910390a35062001742565b60008083141562000e86576000905062000eef565b6000828462000e969190620014e8565b905082848262000ea7919062001318565b1462000eea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ee19062001260565b60405180910390fd5b809150505b92915050565b600062000f3f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000fdb60201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000f899190620012bb565b90508381101562000fd1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000fc8906200123e565b60405180910390fd5b8091505092915050565b6000808311829062001025576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200101c91906200121a565b60405180910390fd5b506000838562001036919062001318565b9050809150509392505050565b8280546200105190620015ca565b90600052602060002090601f016020900481019282620010755760008555620010c1565b82601f106200109057805160ff1916838001178555620010c1565b82800160010185558215620010c1579182015b82811115620010c0578251825591602001919060010190620010a3565b5b509050620010d09190620010d4565b5090565b5b80821115620010ef576000816000905550600101620010d5565b5090565b600081519050620011048162001728565b92915050565b6000602082840312156200112357620011226200168d565b5b60006200113384828501620010f3565b91505092915050565b620011478162001549565b82525050565b60006200115a826200129f565b620011668185620012aa565b93506200117881856020860162001594565b620011838162001692565b840191505092915050565b60006200119d601b83620012aa565b9150620011aa82620016b0565b602082019050919050565b6000620011c4602183620012aa565b9150620011d182620016d9565b604082019050919050565b620011e7816200157d565b82525050565b60006040820190506200120460008301856200113c565b6200121360208301846200113c565b9392505050565b600060208201905081810360008301526200123681846200114d565b905092915050565b6000602082019050818103600083015262001259816200118e565b9050919050565b600060208201905081810360008301526200127b81620011b5565b9050919050565b6000602082019050620012996000830184620011dc565b92915050565b600081519050919050565b600082825260208201905092915050565b6000620012c8826200157d565b9150620012d5836200157d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200130d576200130c62001600565b5b828201905092915050565b600062001325826200157d565b915062001332836200157d565b9250826200134557620013446200162f565b5b828204905092915050565b6000808291508390505b6001851115620013a2578086048111156200137a576200137962001600565b5b60018516156200138a5780820291505b80810290506200139a85620016a3565b94506200135a565b94509492505050565b6000620013b8826200157d565b9150620013c58362001587565b9250620013f47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620013fc565b905092915050565b6000826200140e5760019050620014e1565b816200141e5760009050620014e1565b8160018114620014375760028114620014425762001478565b6001915050620014e1565b60ff84111562001457576200145662001600565b5b8360020a91508482111562001471576200147062001600565b5b50620014e1565b5060208310610133831016604e8410600b8410161715620014b25782820a905083811115620014ac57620014ab62001600565b5b620014e1565b620014c1848484600162001350565b92509050818404811115620014db57620014da62001600565b5b81810290505b9392505050565b6000620014f5826200157d565b915062001502836200157d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200153e576200153d62001600565b5b828202905092915050565b600062001556826200155d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015620015b457808201518184015260208101905062001597565b83811115620015c4576000848401525b50505050565b60006002820490506001821680620015e357607f821691505b60208210811415620015fa57620015f96200165e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b620017338162001549565b81146200173f57600080fd5b50565b60805160601c60a05160601c615adf6200177c6000396000818161106b015261155b01526000818161152f01526115870152615adf6000f3fe6080604052600436106103bc5760003560e01c806385261485116101f2578063da00097d1161010d578063f1d5f517116100a0578063f872858a1161006f578063f872858a14610e3b578063f8f6329014610e66578063f9f92be414610e91578063fb4b8e6c14610ece576103c3565b8063f1d5f51714610d97578063f2fde38b14610dc0578063f455444614610de9578063f84ba65d14610e12576103c3565b8063ec28438a116100dc578063ec28438a14610cf1578063ee828db314610d1a578063ef422a1814610d43578063f0cd1dac14610d6c576103c3565b8063da00097d14610c47578063dc44b6a014610c72578063dd62ed3e14610c9d578063e6b2603b14610cda576103c3565b8063a9059cbb11610185578063c860795211610154578063c860795214610b8b578063c867d60b14610bb6578063c9c9afc514610bf3578063d2d7ad8314610c1c576103c3565b8063a9059cbb14610acf578063c49b9a8014610b0c578063c5d2418914610b35578063c816841b14610b60576103c3565b806395d89b41116101c157806395d89b4114610a1357806398e944c814610a3e578063a457c2d714610a69578063a5d69d1f14610aa6576103c3565b8063852614851461095557806388790a68146109805780638b42507f146109ab5780638da5cb5b146109e8576103c3565b806339509351116102e257806367243482116102755780637d1db4a5116102445780637d1db4a5146108ab578063807c2d9c146108d657806382eefb4314610901578063844d591c1461092c576103c3565b8063672434821461080357806370a082311461082c578063715018a61461086957806375f0a87414610880576103c3565b80634cb80fd5116102b15780634cb80fd5146107355780635194f9bf1461075e5780635342acb4146107895780635881f3ef146107c6576103c3565b806339509351146106675780633b97084a146106a45780633ecad271146106cd5780634a74bb021461070a576103c3565b80631870517a1161035a5780632563ae83116103295780632563ae83146105bd57806327c8f835146105e65780632b112e4914610611578063313ce5671461063c576103c3565b80631870517a146105035780632198cf6c1461052c57806323555d571461055557806323b872dd14610580576103c3565b8063095ea7b311610396578063095ea7b314610447578063153b0d1e146104845780631694505e146104ad57806318160ddd146104d8576103c3565b806306fdde03146103c857806308733214146103f35780630930907b1461041c576103c3565b366103c357005b600080fd5b3480156103d457600080fd5b506103dd610ef7565b6040516103ea9190615066565b60405180910390f35b3480156103ff57600080fd5b5061041a60048036038101906104159190614b7b565b610f89565b005b34801561042857600080fd5b50610431611069565b60405161043e9190614f47565b60405180910390f35b34801561045357600080fd5b5061046e60048036038101906104699190614a33565b61108d565b60405161047b9190615030565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a691906149f3565b6110ab565b005b3480156104b957600080fd5b506104c261119b565b6040516104cf919061504b565b60405180910390f35b3480156104e457600080fd5b506104ed6111c1565b6040516104fa9190615228565b60405180910390f35b34801561050f57600080fd5b5061052a60048036038101906105259190614b7b565b6111cb565b005b34801561053857600080fd5b50610553600480360381019061054e91906149f3565b6112ab565b005b34801561056157600080fd5b5061056a61139b565b6040516105779190615228565b60405180910390f35b34801561058c57600080fd5b506105a760048036038101906105a291906149a0565b6113a1565b6040516105b49190615030565b60405180910390f35b3480156105c957600080fd5b506105e460048036038101906105df9190614af4565b61147b565b005b3480156105f257600080fd5b506105fb61152d565b6040516106089190614f47565b60405180910390f35b34801561061d57600080fd5b50610626611551565b6040516106339190615228565b60405180910390f35b34801561064857600080fd5b506106516115cf565b60405161065e91906152cd565b60405180910390f35b34801561067357600080fd5b5061068e60048036038101906106899190614a33565b6115e6565b60405161069b9190615030565b60405180910390f35b3480156106b057600080fd5b506106cb60048036038101906106c69190614b4e565b611699565b005b3480156106d957600080fd5b506106f460048036038101906106ef9190614906565b611738565b6040516107019190615030565b60405180910390f35b34801561071657600080fd5b5061071f611758565b60405161072c9190615030565b60405180910390f35b34801561074157600080fd5b5061075c60048036038101906107579190614906565b61176b565b005b34801561076a57600080fd5b50610773611844565b6040516107809190615228565b60405180910390f35b34801561079557600080fd5b506107b060048036038101906107ab9190614906565b61184a565b6040516107bd9190615030565b60405180910390f35b3480156107d257600080fd5b506107ed60048036038101906107e89190614906565b61186a565b6040516107fa9190614f47565b60405180910390f35b34801561080f57600080fd5b5061082a60048036038101906108259190614a73565b611d4e565b005b34801561083857600080fd5b50610853600480360381019061084e9190614906565b612129565b6040516108609190615228565b60405180910390f35b34801561087557600080fd5b5061087e612172565b005b34801561088c57600080fd5b506108956122c7565b6040516108a29190614f62565b60405180910390f35b3480156108b757600080fd5b506108c06122ed565b6040516108cd9190615228565b60405180910390f35b3480156108e257600080fd5b506108eb6122f3565b6040516108f89190615228565b60405180910390f35b34801561090d57600080fd5b506109166122f9565b6040516109239190615228565b60405180910390f35b34801561093857600080fd5b50610953600480360381019061094e91906149f3565b6122ff565b005b34801561096157600080fd5b5061096a6123ef565b6040516109779190615030565b60405180910390f35b34801561098c57600080fd5b50610995612402565b6040516109a29190615228565b60405180910390f35b3480156109b757600080fd5b506109d260048036038101906109cd9190614906565b612408565b6040516109df9190615030565b60405180910390f35b3480156109f457600080fd5b506109fd612428565b604051610a0a9190614f47565b60405180910390f35b348015610a1f57600080fd5b50610a28612451565b604051610a359190615066565b60405180910390f35b348015610a4a57600080fd5b50610a536124e3565b604051610a609190614f47565b60405180910390f35b348015610a7557600080fd5b50610a906004803603810190610a8b9190614a33565b612509565b604051610a9d9190615030565b60405180910390f35b348015610ab257600080fd5b50610acd6004803603810190610ac89190614af4565b6125d6565b005b348015610adb57600080fd5b50610af66004803603810190610af19190614a33565b612688565b604051610b039190615030565b60405180910390f35b348015610b1857600080fd5b50610b336004803603810190610b2e9190614af4565b6126a7565b005b348015610b4157600080fd5b50610b4a612790565b604051610b579190615228565b60405180910390f35b348015610b6c57600080fd5b50610b75612796565b604051610b829190614f47565b60405180910390f35b348015610b9757600080fd5b50610ba06127bc565b604051610bad9190615228565b60405180910390f35b348015610bc257600080fd5b50610bdd6004803603810190610bd89190614906565b6127c2565b604051610bea9190615030565b60405180910390f35b348015610bff57600080fd5b50610c1a6004803603810190610c159190614906565b6127e2565b005b348015610c2857600080fd5b50610c316128bb565b604051610c3e9190615228565b60405180910390f35b348015610c5357600080fd5b50610c5c6128c1565b604051610c699190615030565b60405180910390f35b348015610c7e57600080fd5b50610c876128d4565b604051610c949190615228565b60405180910390f35b348015610ca957600080fd5b50610cc46004803603810190610cbf9190614960565b6128da565b604051610cd19190615228565b60405180910390f35b348015610ce657600080fd5b50610cef612961565b005b348015610cfd57600080fd5b50610d186004803603810190610d139190614b4e565b612a6f565b005b348015610d2657600080fd5b50610d416004803603810190610d3c9190614af4565b612b0e565b005b348015610d4f57600080fd5b50610d6a6004803603810190610d6591906149f3565b612bc0565b005b348015610d7857600080fd5b50610d81612cb0565b604051610d8e9190615228565b60405180910390f35b348015610da357600080fd5b50610dbe6004803603810190610db99190614b4e565b612cb6565b005b348015610dcc57600080fd5b50610de76004803603810190610de29190614906565b612d55565b005b348015610df557600080fd5b50610e106004803603810190610e0b9190614a33565b612f17565b005b348015610e1e57600080fd5b50610e396004803603810190610e3491906149f3565b61303e565b005b348015610e4757600080fd5b50610e5061312e565b604051610e5d9190615030565b60405180910390f35b348015610e7257600080fd5b50610e7b613141565b604051610e889190614f62565b60405180910390f35b348015610e9d57600080fd5b50610eb86004803603810190610eb39190614906565b613167565b604051610ec59190615030565b60405180910390f35b348015610eda57600080fd5b50610ef56004803603810190610ef09190614906565b613187565b005b606060018054610f069061553f565b80601f0160208091040260200160405190810160405280929190818152602001828054610f329061553f565b8015610f7f5780601f10610f5457610100808354040283529160200191610f7f565b820191906000526020600020905b815481529060010190602001808311610f6257829003601f168201915b5050505050905090565b610f91613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461101e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611015906151c8565b60405180910390fd5b82601081905550816011819055508060128190555061105e60125461105060115460105461332590919063ffffffff16565b61332590919063ffffffff16565b601481905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006110a161109a613383565b848461338b565b6001905092915050565b6110b3613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611140576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611137906151c8565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601554905090565b6111d3613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611260576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611257906151c8565b60405180910390fd5b82600d8190555081600e8190555080600f819055506112a0600f54611292600e54600d5461332590919063ffffffff16565b61332590919063ffffffff16565b601381905550505050565b6112b3613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611340576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611337906151c8565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b60006113ae848484613556565b50611470846113bb613383565b61146b85604051806060016040528060288152602001615a5d60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611421613383565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6c9092919063ffffffff16565b61338b565b600190509392505050565b611483613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611510576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611507906151c8565b60405180910390fd5b80601a60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006115ca61157f7f0000000000000000000000000000000000000000000000000000000000000000612129565b6115bc6115ab7f0000000000000000000000000000000000000000000000000000000000000000612129565b601554613cd090919063ffffffff16565b613cd090919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b600061168f6115f3613383565b8461168a8560076000611604613383565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332590919063ffffffff16565b61338b565b6001905092915050565b6116a1613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461172e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611725906151c8565b60405180910390fd5b8060168190555050565b60096020528060005260406000206000915054906101000a900460ff1681565b601a60159054906101000a900460ff1681565b611773613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f7906151c8565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b60086020528060005260406000206000915054906101000a900460ff1681565b6000611874613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f8906151c8565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561194c57600080fd5b505afa158015611960573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119849190614933565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156119e657600080fd5b505afa1580156119fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1e9190614933565b6040518363ffffffff1660e01b8152600401611a3b929190614f7d565b60206040518083038186803b158015611a5357600080fd5b505afa158015611a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8b9190614933565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c4c578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611b0857600080fd5b505afa158015611b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b409190614933565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ba257600080fd5b505afa158015611bb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bda9190614933565b6040518363ffffffff1660e01b8152600401611bf7929190614f7d565b602060405180830381600087803b158015611c1157600080fd5b505af1158015611c25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c499190614933565b91505b81601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611d56613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dda906151c8565b60405180910390fd5b6000339050828290508585905014611e30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e27906151a8565b60405180910390fd5b600080600090505b84849050811015611e7d57848482818110611e5657611e55615647565b5b9050602002013582611e689190615348565b91508080611e7590615571565b915050611e38565b5080611e8883612129565b1015611ec9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec0906150a8565b60405180910390fd5b611f1b81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cd090919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b8686905081101561212057611ffe858583818110611f8257611f81615647565b5b90506020020135600660008a8a86818110611fa057611f9f615647565b5b9050602002016020810190611fb59190614906565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332590919063ffffffff16565b6006600089898581811061201557612014615647565b5b905060200201602081019061202a9190614906565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555086868281811061207b5761207a615647565b5b90506020020160208101906120909190614906565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8787858181106120f1576120f0615647565b5b905060200201356040516121059190615228565b60405180910390a3808061211890615571565b915050611f61565b50505050505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61217a613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fe906151c8565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b60185481565b60145481565b612307613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238b906151c8565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60189054906101000a900460ff1681565b60105481565b600c6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546124609061553f565b80601f016020809104026020016040519081016040528092919081815260200182805461248c9061553f565b80156124d95780601f106124ae576101008083540402835291602001916124d9565b820191906000526020600020905b8154815290600101906020018083116124bc57829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006125cc612516613383565b846125c785604051806060016040528060258152602001615a856025913960076000612540613383565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6c9092919063ffffffff16565b61338b565b6001905092915050565b6125de613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461266b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612662906151c8565b60405180910390fd5b80601a60166101000a81548160ff02191690831515021790555050565b600061269c612695613383565b8484613556565b506001905092915050565b6126af613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461273c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612733906151c8565b60405180910390fd5b80601a60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516127859190615030565b60405180910390a150565b600e5481565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600b6020528060005260406000206000915054906101000a900460ff1681565b6127ea613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286e906151c8565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b601a60169054906101000a900460ff1681565b600d5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612969613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ed906151c8565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612a1c90614f32565b60006040518083038185875af1925050503d8060008114612a59576040519150601f19603f3d011682016040523d82523d6000602084013e612a5e565b606091505b5050905080612a6c57600080fd5b50565b612a77613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afb906151c8565b60405180910390fd5b8060178190555050565b612b16613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9a906151c8565b60405180910390fd5b80601a60186101000a81548160ff02191690831515021790555050565b612bc8613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4c906151c8565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b612cbe613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d42906151c8565b60405180910390fd5b8060188190555050565b612d5d613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de1906151c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e51906150c8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612f1f613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fa3906151c8565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612fe7929190614fa6565b602060405180830381600087803b15801561300157600080fd5b505af1158015613015573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130399190614b21565b505050565b613046613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146130d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ca906151c8565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b61318f613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461321c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613213906151c8565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083141561327357600090506132d5565b6000828461328191906153cf565b9050828482613290919061539e565b146132d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132c790615188565b60405180910390fd5b809150505b92915050565b600061331d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d1a565b905092915050565b60008082846133349190615348565b905083811015613379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337090615108565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156133fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133f290615208565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561346b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613462906150e8565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516135499190615228565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156135c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135be906151e8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161362e90615088565b60405180910390fd5b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156136db5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61371a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161371190615148565b60405180910390fd5b601a60149054906101000a900460ff16156137415761373a848484613d7d565b9050613c65565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137e55750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137fd5750601a60189054906101000a900460ff165b1561384857601754821115613847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161383e90615168565b60405180910390fd5b5b600061385330612129565b9050600060165482101590508080156138795750601a60149054906101000a900460ff16155b80156138cf5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138e75750601a60159054906101000a900460ff165b1561391157601a60169054906101000a900460ff16156139075760165491505b61391082613f50565b5b61399a846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6c9092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613a805750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613a9457613a8f87878761421b565b613a96565b845b9050601a60179054906101000a900460ff168015613afe5750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613b6357601854613b2182613b1389612129565b61332590919063ffffffff16565b1115613b62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b5990615128565b60405180910390fd5b5b613bb581600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332590919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c559190615228565b60405180910390a3600193505050505b9392505050565b6000838311158290613cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cab9190615066565b60405180910390fd5b5060008385613cc39190615429565b9050809150509392505050565b6000613d1283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613c6c565b905092915050565b60008083118290613d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d589190615066565b60405180910390fd5b5060008385613d70919061539e565b9050809150509392505050565b6000613e08826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6c9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e9d82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332590919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613f3d9190615228565b60405180910390a3600190509392505050565b6001601a60146101000a81548160ff0219169083151502179055506000613f8460145460135461332590919063ffffffff16565b90506000613f9f601054600d5461332590919063ffffffff16565b90506000613fba601154600e5461332590919063ffffffff16565b90506000613ff66002613fe886613fda878a61326090919063ffffffff16565b6132db90919063ffffffff16565b6132db90919063ffffffff16565b9050600061400d8287613cd090919063ffffffff16565b9050600047905061401d82614442565b60006140328247613cd090919063ffffffff16565b9050600061405c61404d6002896132db90919063ffffffff16565b89613cd090919063ffffffff16565b90506000614098600261408a8461407c8c8861326090919063ffffffff16565b6132db90919063ffffffff16565b6132db90919063ffffffff16565b905060006140c1836140b38a8761326090919063ffffffff16565b6132db90919063ffffffff16565b905060006140ea826140dc8588613cd090919063ffffffff16565b613cd090919063ffffffff16565b9050600082111561415f57600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505015801561415d573d6000803e3d6000fd5b505b60008111156141d257600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156141d0573d6000803e3d6000fd5b505b6000831180156141e25750600088115b156141f2576141f188846146cd565b5b50505050505050505050506000601a60146101000a81548160ff02191690831515021790555050565b60008060009050600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156142a35761429c606461428e6013548661326090919063ffffffff16565b6132db90919063ffffffff16565b9050614321565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156143205761431d606461430f6014548661326090919063ffffffff16565b6132db90919063ffffffff16565b90505b5b60008111156144255761437c81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332590919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161441c9190615228565b60405180910390a35b6144388184613cd090919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff81111561445f5761445e615676565b5b60405190808252806020026020018201604052801561448d5781602001602082028036833780820191505090505b50905030816000815181106144a5576144a4615647565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561454757600080fd5b505afa15801561455b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061457f9190614933565b8160018151811061459357614592615647565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506145fa30601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461338b565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161465e959493929190615273565b600060405180830381600087803b15801561467857600080fd5b505af115801561468c573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516146c1929190615243565b60405180910390a15050565b6146fa30601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461338b565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161478396959493929190614fcf565b6060604051808303818588803b15801561479c57600080fd5b505af11580156147b0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906147d59190614bce565b5050505050565b6000813590506147eb81615a17565b92915050565b60008151905061480081615a17565b92915050565b60008083601f84011261481c5761481b6156aa565b5b8235905067ffffffffffffffff811115614839576148386156a5565b5b602083019150836020820283011115614855576148546156af565b5b9250929050565b60008083601f840112614872576148716156aa565b5b8235905067ffffffffffffffff81111561488f5761488e6156a5565b5b6020830191508360208202830111156148ab576148aa6156af565b5b9250929050565b6000813590506148c181615a2e565b92915050565b6000815190506148d681615a2e565b92915050565b6000813590506148eb81615a45565b92915050565b60008151905061490081615a45565b92915050565b60006020828403121561491c5761491b6156b9565b5b600061492a848285016147dc565b91505092915050565b600060208284031215614949576149486156b9565b5b6000614957848285016147f1565b91505092915050565b60008060408385031215614977576149766156b9565b5b6000614985858286016147dc565b9250506020614996858286016147dc565b9150509250929050565b6000806000606084860312156149b9576149b86156b9565b5b60006149c7868287016147dc565b93505060206149d8868287016147dc565b92505060406149e9868287016148dc565b9150509250925092565b60008060408385031215614a0a57614a096156b9565b5b6000614a18858286016147dc565b9250506020614a29858286016148b2565b9150509250929050565b60008060408385031215614a4a57614a496156b9565b5b6000614a58858286016147dc565b9250506020614a69858286016148dc565b9150509250929050565b60008060008060408587031215614a8d57614a8c6156b9565b5b600085013567ffffffffffffffff811115614aab57614aaa6156b4565b5b614ab787828801614806565b9450945050602085013567ffffffffffffffff811115614ada57614ad96156b4565b5b614ae68782880161485c565b925092505092959194509250565b600060208284031215614b0a57614b096156b9565b5b6000614b18848285016148b2565b91505092915050565b600060208284031215614b3757614b366156b9565b5b6000614b45848285016148c7565b91505092915050565b600060208284031215614b6457614b636156b9565b5b6000614b72848285016148dc565b91505092915050565b600080600060608486031215614b9457614b936156b9565b5b6000614ba2868287016148dc565b9350506020614bb3868287016148dc565b9250506040614bc4868287016148dc565b9150509250925092565b600080600060608486031215614be757614be66156b9565b5b6000614bf5868287016148f1565b9350506020614c06868287016148f1565b9250506040614c17868287016148f1565b9150509250925092565b6000614c2d8383614c48565b60208301905092915050565b614c428161546f565b82525050565b614c518161545d565b82525050565b614c608161545d565b82525050565b6000614c71826152f8565b614c7b818561531b565b9350614c86836152e8565b8060005b83811015614cb7578151614c9e8882614c21565b9750614ca98361530e565b925050600181019050614c8a565b5085935050505092915050565b614ccd81615481565b82525050565b614cdc816154c4565b82525050565b614ceb816154d6565b82525050565b6000614cfc82615303565b614d068185615337565b9350614d1681856020860161550c565b614d1f816156be565b840191505092915050565b6000614d37602383615337565b9150614d42826156cf565b604082019050919050565b6000614d5a601b83615337565b9150614d658261571e565b602082019050919050565b6000614d7d602683615337565b9150614d8882615747565b604082019050919050565b6000614da0602283615337565b9150614dab82615796565b604082019050919050565b6000614dc3601b83615337565b9150614dce826157e5565b602082019050919050565b6000614de6602583615337565b9150614df18261580e565b604082019050919050565b6000614e09601d83615337565b9150614e148261585d565b602082019050919050565b6000614e2c602883615337565b9150614e3782615886565b604082019050919050565b6000614e4f602183615337565b9150614e5a826158d5565b604082019050919050565b6000614e72601683615337565b9150614e7d82615924565b602082019050919050565b6000614e95602083615337565b9150614ea08261594d565b602082019050919050565b6000614eb8602583615337565b9150614ec382615976565b604082019050919050565b6000614edb60008361532c565b9150614ee6826159c5565b600082019050919050565b6000614efe602483615337565b9150614f09826159c8565b604082019050919050565b614f1d816154ad565b82525050565b614f2c816154b7565b82525050565b6000614f3d82614ece565b9150819050919050565b6000602082019050614f5c6000830184614c57565b92915050565b6000602082019050614f776000830184614c39565b92915050565b6000604082019050614f926000830185614c57565b614f9f6020830184614c57565b9392505050565b6000604082019050614fbb6000830185614c57565b614fc86020830184614f14565b9392505050565b600060c082019050614fe46000830189614c57565b614ff16020830188614f14565b614ffe6040830187614ce2565b61500b6060830186614ce2565b6150186080830185614c57565b61502560a0830184614f14565b979650505050505050565b60006020820190506150456000830184614cc4565b92915050565b60006020820190506150606000830184614cd3565b92915050565b600060208201905081810360008301526150808184614cf1565b905092915050565b600060208201905081810360008301526150a181614d2a565b9050919050565b600060208201905081810360008301526150c181614d4d565b9050919050565b600060208201905081810360008301526150e181614d70565b9050919050565b6000602082019050818103600083015261510181614d93565b9050919050565b6000602082019050818103600083015261512181614db6565b9050919050565b6000602082019050818103600083015261514181614dd9565b9050919050565b6000602082019050818103600083015261516181614dfc565b9050919050565b6000602082019050818103600083015261518181614e1f565b9050919050565b600060208201905081810360008301526151a181614e42565b9050919050565b600060208201905081810360008301526151c181614e65565b9050919050565b600060208201905081810360008301526151e181614e88565b9050919050565b6000602082019050818103600083015261520181614eab565b9050919050565b6000602082019050818103600083015261522181614ef1565b9050919050565b600060208201905061523d6000830184614f14565b92915050565b60006040820190506152586000830185614f14565b818103602083015261526a8184614c66565b90509392505050565b600060a0820190506152886000830188614f14565b6152956020830187614ce2565b81810360408301526152a78186614c66565b90506152b66060830185614c57565b6152c36080830184614f14565b9695505050505050565b60006020820190506152e26000830184614f23565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000615353826154ad565b915061535e836154ad565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115615393576153926155ba565b5b828201905092915050565b60006153a9826154ad565b91506153b4836154ad565b9250826153c4576153c36155e9565b5b828204905092915050565b60006153da826154ad565b91506153e5836154ad565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561541e5761541d6155ba565b5b828202905092915050565b6000615434826154ad565b915061543f836154ad565b925082821015615452576154516155ba565b5b828203905092915050565b60006154688261548d565b9050919050565b600061547a8261548d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006154cf826154e8565b9050919050565b60006154e1826154ad565b9050919050565b60006154f3826154fa565b9050919050565b60006155058261548d565b9050919050565b60005b8381101561552a57808201518184015260208101905061550f565b83811115615539576000848401525b50505050565b6000600282049050600182168061555757607f821691505b6020821081141561556b5761556a615618565b5b50919050565b600061557c826154ad565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156155af576155ae6155ba565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b7f426f7420456e656d792061646472657373205265737472696374656421000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b615a208161545d565b8114615a2b57600080fd5b50565b615a3781615481565b8114615a4257600080fd5b50565b615a4e816154ad565b8114615a5957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220c638ef3b99dd5a50026aca99a69ad61bd7bafe1fe971c0776327fad1f56c3dc564736f6c63430008070033

Deployed Bytecode

0x6080604052600436106103bc5760003560e01c806385261485116101f2578063da00097d1161010d578063f1d5f517116100a0578063f872858a1161006f578063f872858a14610e3b578063f8f6329014610e66578063f9f92be414610e91578063fb4b8e6c14610ece576103c3565b8063f1d5f51714610d97578063f2fde38b14610dc0578063f455444614610de9578063f84ba65d14610e12576103c3565b8063ec28438a116100dc578063ec28438a14610cf1578063ee828db314610d1a578063ef422a1814610d43578063f0cd1dac14610d6c576103c3565b8063da00097d14610c47578063dc44b6a014610c72578063dd62ed3e14610c9d578063e6b2603b14610cda576103c3565b8063a9059cbb11610185578063c860795211610154578063c860795214610b8b578063c867d60b14610bb6578063c9c9afc514610bf3578063d2d7ad8314610c1c576103c3565b8063a9059cbb14610acf578063c49b9a8014610b0c578063c5d2418914610b35578063c816841b14610b60576103c3565b806395d89b41116101c157806395d89b4114610a1357806398e944c814610a3e578063a457c2d714610a69578063a5d69d1f14610aa6576103c3565b8063852614851461095557806388790a68146109805780638b42507f146109ab5780638da5cb5b146109e8576103c3565b806339509351116102e257806367243482116102755780637d1db4a5116102445780637d1db4a5146108ab578063807c2d9c146108d657806382eefb4314610901578063844d591c1461092c576103c3565b8063672434821461080357806370a082311461082c578063715018a61461086957806375f0a87414610880576103c3565b80634cb80fd5116102b15780634cb80fd5146107355780635194f9bf1461075e5780635342acb4146107895780635881f3ef146107c6576103c3565b806339509351146106675780633b97084a146106a45780633ecad271146106cd5780634a74bb021461070a576103c3565b80631870517a1161035a5780632563ae83116103295780632563ae83146105bd57806327c8f835146105e65780632b112e4914610611578063313ce5671461063c576103c3565b80631870517a146105035780632198cf6c1461052c57806323555d571461055557806323b872dd14610580576103c3565b8063095ea7b311610396578063095ea7b314610447578063153b0d1e146104845780631694505e146104ad57806318160ddd146104d8576103c3565b806306fdde03146103c857806308733214146103f35780630930907b1461041c576103c3565b366103c357005b600080fd5b3480156103d457600080fd5b506103dd610ef7565b6040516103ea9190615066565b60405180910390f35b3480156103ff57600080fd5b5061041a60048036038101906104159190614b7b565b610f89565b005b34801561042857600080fd5b50610431611069565b60405161043e9190614f47565b60405180910390f35b34801561045357600080fd5b5061046e60048036038101906104699190614a33565b61108d565b60405161047b9190615030565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a691906149f3565b6110ab565b005b3480156104b957600080fd5b506104c261119b565b6040516104cf919061504b565b60405180910390f35b3480156104e457600080fd5b506104ed6111c1565b6040516104fa9190615228565b60405180910390f35b34801561050f57600080fd5b5061052a60048036038101906105259190614b7b565b6111cb565b005b34801561053857600080fd5b50610553600480360381019061054e91906149f3565b6112ab565b005b34801561056157600080fd5b5061056a61139b565b6040516105779190615228565b60405180910390f35b34801561058c57600080fd5b506105a760048036038101906105a291906149a0565b6113a1565b6040516105b49190615030565b60405180910390f35b3480156105c957600080fd5b506105e460048036038101906105df9190614af4565b61147b565b005b3480156105f257600080fd5b506105fb61152d565b6040516106089190614f47565b60405180910390f35b34801561061d57600080fd5b50610626611551565b6040516106339190615228565b60405180910390f35b34801561064857600080fd5b506106516115cf565b60405161065e91906152cd565b60405180910390f35b34801561067357600080fd5b5061068e60048036038101906106899190614a33565b6115e6565b60405161069b9190615030565b60405180910390f35b3480156106b057600080fd5b506106cb60048036038101906106c69190614b4e565b611699565b005b3480156106d957600080fd5b506106f460048036038101906106ef9190614906565b611738565b6040516107019190615030565b60405180910390f35b34801561071657600080fd5b5061071f611758565b60405161072c9190615030565b60405180910390f35b34801561074157600080fd5b5061075c60048036038101906107579190614906565b61176b565b005b34801561076a57600080fd5b50610773611844565b6040516107809190615228565b60405180910390f35b34801561079557600080fd5b506107b060048036038101906107ab9190614906565b61184a565b6040516107bd9190615030565b60405180910390f35b3480156107d257600080fd5b506107ed60048036038101906107e89190614906565b61186a565b6040516107fa9190614f47565b60405180910390f35b34801561080f57600080fd5b5061082a60048036038101906108259190614a73565b611d4e565b005b34801561083857600080fd5b50610853600480360381019061084e9190614906565b612129565b6040516108609190615228565b60405180910390f35b34801561087557600080fd5b5061087e612172565b005b34801561088c57600080fd5b506108956122c7565b6040516108a29190614f62565b60405180910390f35b3480156108b757600080fd5b506108c06122ed565b6040516108cd9190615228565b60405180910390f35b3480156108e257600080fd5b506108eb6122f3565b6040516108f89190615228565b60405180910390f35b34801561090d57600080fd5b506109166122f9565b6040516109239190615228565b60405180910390f35b34801561093857600080fd5b50610953600480360381019061094e91906149f3565b6122ff565b005b34801561096157600080fd5b5061096a6123ef565b6040516109779190615030565b60405180910390f35b34801561098c57600080fd5b50610995612402565b6040516109a29190615228565b60405180910390f35b3480156109b757600080fd5b506109d260048036038101906109cd9190614906565b612408565b6040516109df9190615030565b60405180910390f35b3480156109f457600080fd5b506109fd612428565b604051610a0a9190614f47565b60405180910390f35b348015610a1f57600080fd5b50610a28612451565b604051610a359190615066565b60405180910390f35b348015610a4a57600080fd5b50610a536124e3565b604051610a609190614f47565b60405180910390f35b348015610a7557600080fd5b50610a906004803603810190610a8b9190614a33565b612509565b604051610a9d9190615030565b60405180910390f35b348015610ab257600080fd5b50610acd6004803603810190610ac89190614af4565b6125d6565b005b348015610adb57600080fd5b50610af66004803603810190610af19190614a33565b612688565b604051610b039190615030565b60405180910390f35b348015610b1857600080fd5b50610b336004803603810190610b2e9190614af4565b6126a7565b005b348015610b4157600080fd5b50610b4a612790565b604051610b579190615228565b60405180910390f35b348015610b6c57600080fd5b50610b75612796565b604051610b829190614f47565b60405180910390f35b348015610b9757600080fd5b50610ba06127bc565b604051610bad9190615228565b60405180910390f35b348015610bc257600080fd5b50610bdd6004803603810190610bd89190614906565b6127c2565b604051610bea9190615030565b60405180910390f35b348015610bff57600080fd5b50610c1a6004803603810190610c159190614906565b6127e2565b005b348015610c2857600080fd5b50610c316128bb565b604051610c3e9190615228565b60405180910390f35b348015610c5357600080fd5b50610c5c6128c1565b604051610c699190615030565b60405180910390f35b348015610c7e57600080fd5b50610c876128d4565b604051610c949190615228565b60405180910390f35b348015610ca957600080fd5b50610cc46004803603810190610cbf9190614960565b6128da565b604051610cd19190615228565b60405180910390f35b348015610ce657600080fd5b50610cef612961565b005b348015610cfd57600080fd5b50610d186004803603810190610d139190614b4e565b612a6f565b005b348015610d2657600080fd5b50610d416004803603810190610d3c9190614af4565b612b0e565b005b348015610d4f57600080fd5b50610d6a6004803603810190610d6591906149f3565b612bc0565b005b348015610d7857600080fd5b50610d81612cb0565b604051610d8e9190615228565b60405180910390f35b348015610da357600080fd5b50610dbe6004803603810190610db99190614b4e565b612cb6565b005b348015610dcc57600080fd5b50610de76004803603810190610de29190614906565b612d55565b005b348015610df557600080fd5b50610e106004803603810190610e0b9190614a33565b612f17565b005b348015610e1e57600080fd5b50610e396004803603810190610e3491906149f3565b61303e565b005b348015610e4757600080fd5b50610e5061312e565b604051610e5d9190615030565b60405180910390f35b348015610e7257600080fd5b50610e7b613141565b604051610e889190614f62565b60405180910390f35b348015610e9d57600080fd5b50610eb86004803603810190610eb39190614906565b613167565b604051610ec59190615030565b60405180910390f35b348015610eda57600080fd5b50610ef56004803603810190610ef09190614906565b613187565b005b606060018054610f069061553f565b80601f0160208091040260200160405190810160405280929190818152602001828054610f329061553f565b8015610f7f5780601f10610f5457610100808354040283529160200191610f7f565b820191906000526020600020905b815481529060010190602001808311610f6257829003601f168201915b5050505050905090565b610f91613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461101e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611015906151c8565b60405180910390fd5b82601081905550816011819055508060128190555061105e60125461105060115460105461332590919063ffffffff16565b61332590919063ffffffff16565b601481905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006110a161109a613383565b848461338b565b6001905092915050565b6110b3613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611140576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611137906151c8565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601554905090565b6111d3613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611260576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611257906151c8565b60405180910390fd5b82600d8190555081600e8190555080600f819055506112a0600f54611292600e54600d5461332590919063ffffffff16565b61332590919063ffffffff16565b601381905550505050565b6112b3613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611340576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611337906151c8565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b60006113ae848484613556565b50611470846113bb613383565b61146b85604051806060016040528060288152602001615a5d60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611421613383565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6c9092919063ffffffff16565b61338b565b600190509392505050565b611483613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611510576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611507906151c8565b60405180910390fd5b80601a60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b60006115ca61157f7f0000000000000000000000000000000000000000000000000000000000000000612129565b6115bc6115ab7f000000000000000000000000000000000000000000000000000000000000dead612129565b601554613cd090919063ffffffff16565b613cd090919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b600061168f6115f3613383565b8461168a8560076000611604613383565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332590919063ffffffff16565b61338b565b6001905092915050565b6116a1613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461172e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611725906151c8565b60405180910390fd5b8060168190555050565b60096020528060005260406000206000915054906101000a900460ff1681565b601a60159054906101000a900460ff1681565b611773613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f7906151c8565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b60086020528060005260406000206000915054906101000a900460ff1681565b6000611874613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f8906151c8565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561194c57600080fd5b505afa158015611960573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119849190614933565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156119e657600080fd5b505afa1580156119fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1e9190614933565b6040518363ffffffff1660e01b8152600401611a3b929190614f7d565b60206040518083038186803b158015611a5357600080fd5b505afa158015611a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8b9190614933565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c4c578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611b0857600080fd5b505afa158015611b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b409190614933565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ba257600080fd5b505afa158015611bb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bda9190614933565b6040518363ffffffff1660e01b8152600401611bf7929190614f7d565b602060405180830381600087803b158015611c1157600080fd5b505af1158015611c25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c499190614933565b91505b81601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611d56613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dda906151c8565b60405180910390fd5b6000339050828290508585905014611e30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e27906151a8565b60405180910390fd5b600080600090505b84849050811015611e7d57848482818110611e5657611e55615647565b5b9050602002013582611e689190615348565b91508080611e7590615571565b915050611e38565b5080611e8883612129565b1015611ec9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec0906150a8565b60405180910390fd5b611f1b81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cd090919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b8686905081101561212057611ffe858583818110611f8257611f81615647565b5b90506020020135600660008a8a86818110611fa057611f9f615647565b5b9050602002016020810190611fb59190614906565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332590919063ffffffff16565b6006600089898581811061201557612014615647565b5b905060200201602081019061202a9190614906565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555086868281811061207b5761207a615647565b5b90506020020160208101906120909190614906565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8787858181106120f1576120f0615647565b5b905060200201356040516121059190615228565b60405180910390a3808061211890615571565b915050611f61565b50505050505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61217a613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fe906151c8565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b60185481565b60145481565b612307613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238b906151c8565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60189054906101000a900460ff1681565b60105481565b600c6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546124609061553f565b80601f016020809104026020016040519081016040528092919081815260200182805461248c9061553f565b80156124d95780601f106124ae576101008083540402835291602001916124d9565b820191906000526020600020905b8154815290600101906020018083116124bc57829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006125cc612516613383565b846125c785604051806060016040528060258152602001615a856025913960076000612540613383565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6c9092919063ffffffff16565b61338b565b6001905092915050565b6125de613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461266b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612662906151c8565b60405180910390fd5b80601a60166101000a81548160ff02191690831515021790555050565b600061269c612695613383565b8484613556565b506001905092915050565b6126af613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461273c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612733906151c8565b60405180910390fd5b80601a60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516127859190615030565b60405180910390a150565b600e5481565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600b6020528060005260406000206000915054906101000a900460ff1681565b6127ea613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286e906151c8565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b601a60169054906101000a900460ff1681565b600d5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612969613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ed906151c8565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612a1c90614f32565b60006040518083038185875af1925050503d8060008114612a59576040519150601f19603f3d011682016040523d82523d6000602084013e612a5e565b606091505b5050905080612a6c57600080fd5b50565b612a77613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afb906151c8565b60405180910390fd5b8060178190555050565b612b16613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9a906151c8565b60405180910390fd5b80601a60186101000a81548160ff02191690831515021790555050565b612bc8613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4c906151c8565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b612cbe613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d42906151c8565b60405180910390fd5b8060188190555050565b612d5d613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de1906151c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e51906150c8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612f1f613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fa3906151c8565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612fe7929190614fa6565b602060405180830381600087803b15801561300157600080fd5b505af1158015613015573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130399190614b21565b505050565b613046613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146130d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ca906151c8565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b61318f613383565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461321c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613213906151c8565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083141561327357600090506132d5565b6000828461328191906153cf565b9050828482613290919061539e565b146132d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132c790615188565b60405180910390fd5b809150505b92915050565b600061331d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d1a565b905092915050565b60008082846133349190615348565b905083811015613379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337090615108565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156133fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133f290615208565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561346b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613462906150e8565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516135499190615228565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156135c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135be906151e8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161362e90615088565b60405180910390fd5b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156136db5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61371a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161371190615148565b60405180910390fd5b601a60149054906101000a900460ff16156137415761373a848484613d7d565b9050613c65565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137e55750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137fd5750601a60189054906101000a900460ff165b1561384857601754821115613847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161383e90615168565b60405180910390fd5b5b600061385330612129565b9050600060165482101590508080156138795750601a60149054906101000a900460ff16155b80156138cf5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138e75750601a60159054906101000a900460ff165b1561391157601a60169054906101000a900460ff16156139075760165491505b61391082613f50565b5b61399a846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6c9092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613a805750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613a9457613a8f87878761421b565b613a96565b845b9050601a60179054906101000a900460ff168015613afe5750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613b6357601854613b2182613b1389612129565b61332590919063ffffffff16565b1115613b62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b5990615128565b60405180910390fd5b5b613bb581600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332590919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c559190615228565b60405180910390a3600193505050505b9392505050565b6000838311158290613cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cab9190615066565b60405180910390fd5b5060008385613cc39190615429565b9050809150509392505050565b6000613d1283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613c6c565b905092915050565b60008083118290613d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d589190615066565b60405180910390fd5b5060008385613d70919061539e565b9050809150509392505050565b6000613e08826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6c9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e9d82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332590919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613f3d9190615228565b60405180910390a3600190509392505050565b6001601a60146101000a81548160ff0219169083151502179055506000613f8460145460135461332590919063ffffffff16565b90506000613f9f601054600d5461332590919063ffffffff16565b90506000613fba601154600e5461332590919063ffffffff16565b90506000613ff66002613fe886613fda878a61326090919063ffffffff16565b6132db90919063ffffffff16565b6132db90919063ffffffff16565b9050600061400d8287613cd090919063ffffffff16565b9050600047905061401d82614442565b60006140328247613cd090919063ffffffff16565b9050600061405c61404d6002896132db90919063ffffffff16565b89613cd090919063ffffffff16565b90506000614098600261408a8461407c8c8861326090919063ffffffff16565b6132db90919063ffffffff16565b6132db90919063ffffffff16565b905060006140c1836140b38a8761326090919063ffffffff16565b6132db90919063ffffffff16565b905060006140ea826140dc8588613cd090919063ffffffff16565b613cd090919063ffffffff16565b9050600082111561415f57600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505015801561415d573d6000803e3d6000fd5b505b60008111156141d257600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156141d0573d6000803e3d6000fd5b505b6000831180156141e25750600088115b156141f2576141f188846146cd565b5b50505050505050505050506000601a60146101000a81548160ff02191690831515021790555050565b60008060009050600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156142a35761429c606461428e6013548661326090919063ffffffff16565b6132db90919063ffffffff16565b9050614321565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156143205761431d606461430f6014548661326090919063ffffffff16565b6132db90919063ffffffff16565b90505b5b60008111156144255761437c81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332590919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161441c9190615228565b60405180910390a35b6144388184613cd090919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff81111561445f5761445e615676565b5b60405190808252806020026020018201604052801561448d5781602001602082028036833780820191505090505b50905030816000815181106144a5576144a4615647565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561454757600080fd5b505afa15801561455b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061457f9190614933565b8160018151811061459357614592615647565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506145fa30601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461338b565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161465e959493929190615273565b600060405180830381600087803b15801561467857600080fd5b505af115801561468c573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516146c1929190615243565b60405180910390a15050565b6146fa30601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461338b565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161478396959493929190614fcf565b6060604051808303818588803b15801561479c57600080fd5b505af11580156147b0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906147d59190614bce565b5050505050565b6000813590506147eb81615a17565b92915050565b60008151905061480081615a17565b92915050565b60008083601f84011261481c5761481b6156aa565b5b8235905067ffffffffffffffff811115614839576148386156a5565b5b602083019150836020820283011115614855576148546156af565b5b9250929050565b60008083601f840112614872576148716156aa565b5b8235905067ffffffffffffffff81111561488f5761488e6156a5565b5b6020830191508360208202830111156148ab576148aa6156af565b5b9250929050565b6000813590506148c181615a2e565b92915050565b6000815190506148d681615a2e565b92915050565b6000813590506148eb81615a45565b92915050565b60008151905061490081615a45565b92915050565b60006020828403121561491c5761491b6156b9565b5b600061492a848285016147dc565b91505092915050565b600060208284031215614949576149486156b9565b5b6000614957848285016147f1565b91505092915050565b60008060408385031215614977576149766156b9565b5b6000614985858286016147dc565b9250506020614996858286016147dc565b9150509250929050565b6000806000606084860312156149b9576149b86156b9565b5b60006149c7868287016147dc565b93505060206149d8868287016147dc565b92505060406149e9868287016148dc565b9150509250925092565b60008060408385031215614a0a57614a096156b9565b5b6000614a18858286016147dc565b9250506020614a29858286016148b2565b9150509250929050565b60008060408385031215614a4a57614a496156b9565b5b6000614a58858286016147dc565b9250506020614a69858286016148dc565b9150509250929050565b60008060008060408587031215614a8d57614a8c6156b9565b5b600085013567ffffffffffffffff811115614aab57614aaa6156b4565b5b614ab787828801614806565b9450945050602085013567ffffffffffffffff811115614ada57614ad96156b4565b5b614ae68782880161485c565b925092505092959194509250565b600060208284031215614b0a57614b096156b9565b5b6000614b18848285016148b2565b91505092915050565b600060208284031215614b3757614b366156b9565b5b6000614b45848285016148c7565b91505092915050565b600060208284031215614b6457614b636156b9565b5b6000614b72848285016148dc565b91505092915050565b600080600060608486031215614b9457614b936156b9565b5b6000614ba2868287016148dc565b9350506020614bb3868287016148dc565b9250506040614bc4868287016148dc565b9150509250925092565b600080600060608486031215614be757614be66156b9565b5b6000614bf5868287016148f1565b9350506020614c06868287016148f1565b9250506040614c17868287016148f1565b9150509250925092565b6000614c2d8383614c48565b60208301905092915050565b614c428161546f565b82525050565b614c518161545d565b82525050565b614c608161545d565b82525050565b6000614c71826152f8565b614c7b818561531b565b9350614c86836152e8565b8060005b83811015614cb7578151614c9e8882614c21565b9750614ca98361530e565b925050600181019050614c8a565b5085935050505092915050565b614ccd81615481565b82525050565b614cdc816154c4565b82525050565b614ceb816154d6565b82525050565b6000614cfc82615303565b614d068185615337565b9350614d1681856020860161550c565b614d1f816156be565b840191505092915050565b6000614d37602383615337565b9150614d42826156cf565b604082019050919050565b6000614d5a601b83615337565b9150614d658261571e565b602082019050919050565b6000614d7d602683615337565b9150614d8882615747565b604082019050919050565b6000614da0602283615337565b9150614dab82615796565b604082019050919050565b6000614dc3601b83615337565b9150614dce826157e5565b602082019050919050565b6000614de6602583615337565b9150614df18261580e565b604082019050919050565b6000614e09601d83615337565b9150614e148261585d565b602082019050919050565b6000614e2c602883615337565b9150614e3782615886565b604082019050919050565b6000614e4f602183615337565b9150614e5a826158d5565b604082019050919050565b6000614e72601683615337565b9150614e7d82615924565b602082019050919050565b6000614e95602083615337565b9150614ea08261594d565b602082019050919050565b6000614eb8602583615337565b9150614ec382615976565b604082019050919050565b6000614edb60008361532c565b9150614ee6826159c5565b600082019050919050565b6000614efe602483615337565b9150614f09826159c8565b604082019050919050565b614f1d816154ad565b82525050565b614f2c816154b7565b82525050565b6000614f3d82614ece565b9150819050919050565b6000602082019050614f5c6000830184614c57565b92915050565b6000602082019050614f776000830184614c39565b92915050565b6000604082019050614f926000830185614c57565b614f9f6020830184614c57565b9392505050565b6000604082019050614fbb6000830185614c57565b614fc86020830184614f14565b9392505050565b600060c082019050614fe46000830189614c57565b614ff16020830188614f14565b614ffe6040830187614ce2565b61500b6060830186614ce2565b6150186080830185614c57565b61502560a0830184614f14565b979650505050505050565b60006020820190506150456000830184614cc4565b92915050565b60006020820190506150606000830184614cd3565b92915050565b600060208201905081810360008301526150808184614cf1565b905092915050565b600060208201905081810360008301526150a181614d2a565b9050919050565b600060208201905081810360008301526150c181614d4d565b9050919050565b600060208201905081810360008301526150e181614d70565b9050919050565b6000602082019050818103600083015261510181614d93565b9050919050565b6000602082019050818103600083015261512181614db6565b9050919050565b6000602082019050818103600083015261514181614dd9565b9050919050565b6000602082019050818103600083015261516181614dfc565b9050919050565b6000602082019050818103600083015261518181614e1f565b9050919050565b600060208201905081810360008301526151a181614e42565b9050919050565b600060208201905081810360008301526151c181614e65565b9050919050565b600060208201905081810360008301526151e181614e88565b9050919050565b6000602082019050818103600083015261520181614eab565b9050919050565b6000602082019050818103600083015261522181614ef1565b9050919050565b600060208201905061523d6000830184614f14565b92915050565b60006040820190506152586000830185614f14565b818103602083015261526a8184614c66565b90509392505050565b600060a0820190506152886000830188614f14565b6152956020830187614ce2565b81810360408301526152a78186614c66565b90506152b66060830185614c57565b6152c36080830184614f14565b9695505050505050565b60006020820190506152e26000830184614f23565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000615353826154ad565b915061535e836154ad565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115615393576153926155ba565b5b828201905092915050565b60006153a9826154ad565b91506153b4836154ad565b9250826153c4576153c36155e9565b5b828204905092915050565b60006153da826154ad565b91506153e5836154ad565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561541e5761541d6155ba565b5b828202905092915050565b6000615434826154ad565b915061543f836154ad565b925082821015615452576154516155ba565b5b828203905092915050565b60006154688261548d565b9050919050565b600061547a8261548d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006154cf826154e8565b9050919050565b60006154e1826154ad565b9050919050565b60006154f3826154fa565b9050919050565b60006155058261548d565b9050919050565b60005b8381101561552a57808201518184015260208101905061550f565b83811115615539576000848401525b50505050565b6000600282049050600182168061555757607f821691505b6020821081141561556b5761556a615618565b5b50919050565b600061557c826154ad565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156155af576155ae6155ba565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b7f426f7420456e656d792061646472657373205265737472696374656421000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b615a208161545d565b8114615a2b57600080fd5b50565b615a3781615481565b8114615a4257600080fd5b50565b615a4e816154ad565b8114615a5957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220c638ef3b99dd5a50026aca99a69ad61bd7bafe1fe971c0776327fad1f56c3dc564736f6c63430008070033

Deployed Bytecode Sourcemap

11592:16591:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15621:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20694:317;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12158:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16787:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19362:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13293:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15898:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20377:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17720:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12734:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21288:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18097:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12070:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19198:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15807:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16284:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18328:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12432:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13408:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18460:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12869:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12375:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19621:748;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27475:697;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16006:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3269:230;;;;;;;;;;;;;:::i;:::-;;11827:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13147:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13219:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12953:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17301:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13551:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12782:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12592:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3044:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15712:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12025:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16510:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19061:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21113:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18882:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12691:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13341:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12825:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12533:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18600:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13058:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13455:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12649:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16133:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23650:154;;;;;;;;;;;;;:::i;:::-;;17978:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17863:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17438:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12914:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18218:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3507:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23503:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17581:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13509:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11926:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12484:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18742:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15621:83;15658:13;15691:5;15684:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15621:83;:::o;20694:317::-;3188:12;:10;:12::i;:::-;3178:22;;:6;;;;;;;;;;:22;;;3170:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20816:10:::1;20796:17;:30;;;;20857:10;20837:17;:30;;;;20898:10;20878:17;:30;;;;20940:63;20985:17;;20940:40;20962:17;;20940;;:21;;:40;;;;:::i;:::-;:44;;:63;;;;:::i;:::-;20919:18;:84;;;;20694:317:::0;;;:::o;12158:81::-;;;:::o;16787:161::-;16862:4;16879:39;16888:12;:10;:12::i;:::-;16902:7;16911:6;16879:8;:39::i;:::-;16936:4;16929:11;;16787:161;;;;:::o;19362:113::-;3188:12;:10;:12::i;:::-;3178:22;;:6;;;;;;;;;;:22;;;3170:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19460:7:::1;19442:9;:15;19452:4;19442:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;19362:113:::0;;:::o;13293:41::-;;;;;;;;;;;;;:::o;15898:100::-;15951:7;15978:12;;15971:19;;15898:100;:::o;20377:309::-;3188:12;:10;:12::i;:::-;3178:22;;:6;;;;;;;;;;:22;;;3170:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20497:10:::1;20478:16;:29;;;;20537:10;20518:16;:29;;;;20577:10;20558:16;:29;;;;20618:60;20661:16;;20618:38;20639:16;;20618;;:20;;:38;;;;:::i;:::-;:42;;:60;;;;:::i;:::-;20598:17;:80;;;;20377:309:::0;;;:::o;17720:135::-;3188:12;:10;:12::i;:::-;3178:22;;:6;;;;;;;;;;:22;;;3170:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17841:6:::1;17811:19;:27;17831:6;17811:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;17720:135:::0;;:::o;12734:35::-;;;;:::o;21288:313::-;21386:4;21403:36;21413:6;21421:9;21432:6;21403:9;:36::i;:::-;;21450:121;21459:6;21467:12;:10;:12::i;:::-;21481:89;21519:6;21481:89;;;;;;;;;;;;;;;;;:11;:19;21493:6;21481:19;;;;;;;;;;;;;;;:33;21501:12;:10;:12::i;:::-;21481:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;21450:8;:121::i;:::-;21589:4;21582:11;;21288:313;;;;;:::o;18097:113::-;3188:12;:10;:12::i;:::-;3178:22;;:6;;;;;;;;;;:22;;;3170:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18194:8:::1;18175:16;;:27;;;;;;;;;;;;;;;;;;18097:113:::0;:::o;12070:81::-;;;:::o;19198:156::-;19251:7;19278:68;19323:22;19333:11;19323:9;:22::i;:::-;19278:40;19295:22;19305:11;19295:9;:22::i;:::-;19278:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;19271:75;;19198:156;:::o;15807:83::-;15848:5;15873:9;;;;;;;;;;;15866:16;;15807:83;:::o;16284:218::-;16372:4;16389:83;16398:12;:10;:12::i;:::-;16412:7;16421:50;16460:10;16421:11;:25;16433:12;:10;:12::i;:::-;16421:25;;;;;;;;;;;;;;;:34;16447:7;16421:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;16389:8;:83::i;:::-;16490:4;16483:11;;16284:218;;;;:::o;18328:124::-;3188:12;:10;:12::i;:::-;3178:22;;:6;;;;;;;;;;:22;;;3170:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18436:8:::1;18410:23;:34;;;;18328:124:::0;:::o;12432:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;13408:40::-;;;;;;;;;;;;;:::o;18460:132::-;3188:12;:10;:12::i;:::-;3178:22;;:6;;;;;;;;;;:22;;;3170:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18573:10:::1;18547:15;;:37;;;;;;;;;;;;;;;;;;18460:132:::0;:::o;12869:36::-;;;;:::o;12375:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;19621:748::-;19701:22;3188:12;:10;:12::i;:::-;3178:22;;:6;;;;;;;;;;:22;;;3170:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19738:35:::1;19795:16;19738:74;;19861:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19843:53;;;19905:4;19912:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19843:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19826:110;;19978:1;19952:28;;:14;:28;;;19949:225;;;20066:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20048:74;;;20131:4;20138:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20048:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20031:131;;19949:225;20200:14;20186:11;;:28;;;;;;;;;;;;;;;;;;20266:16;20248:15;;:34;;;;;;;;;;;;;;;;;;20357:4;20320:12;:34;20341:11;;;;;;;;;;;20320:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;19725:644;19621:748:::0;;;:::o;27475:697::-;3188:12;:10;:12::i;:::-;3178:22;;:6;;;;;;;;;;:22;;;3170:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27575:15:::1;27593:10;27575:28;;27641:7;;:14;;27622:8;;:15;;:33;27614:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27692:15;27722:6:::0;27731:1:::1;27722:10;;27718:92;27738:7;;:14;;27734:1;:18;27718:92;;;27788:7;;27796:1;27788:10;;;;;;;:::i;:::-;;;;;;;;27774:24;;;;;:::i;:::-;;;27754:3;;;;;:::i;:::-;;;;27718:92;;;;27850:10;27828:18;27838:7;27828:9;:18::i;:::-;:32;;27820:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;27923:34;27946:10;27923:9;:18;27933:7;27923:18;;;;;;;;;;;;;;;;:22;;:34;;;;:::i;:::-;27902:9;:18;27912:7;27902:18;;;;;;;;;;;;;;;:55;;;;27973:6;27969:194;27989:8;;:15;;27985:1;:19;27969:194;;;28051:38;28078:7;;28086:1;28078:10;;;;;;;:::i;:::-;;;;;;;;28051:9;:22;28061:8;;28070:1;28061:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;28051:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;28026:9;:22;28036:8;;28045:1;28036:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;28026:22;;;;;;;;;;;;;;;:63;;;;28127:8;;28136:1;28127:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;28109:42;;28118:7;28109:42;;;28140:7;;28148:1;28140:10;;;;;;;:::i;:::-;;;;;;;;28109:42;;;;;;:::i;:::-;;;;;;;;28006:3;;;;;:::i;:::-;;;;27969:194;;;;27564:608;;27475:697:::0;;;;:::o;16006:119::-;16072:7;16099:9;:18;16109:7;16099:18;;;;;;;;;;;;;;;;16092:25;;16006:119;;;:::o;3269:230::-;3188:12;:10;:12::i;:::-;3178:22;;:6;;;;;;;;;;:22;;;3170:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3376:42:::1;3339:81;;3360:6;::::0;::::1;;;;;;;;3339:81;;;;;;;;;;;;3448:42;3431:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;3269:230::o:0;11827:92::-;;;;;;;;;;;;;:::o;13147:59::-;;;;:::o;13219:58::-;;;;:::o;12953:33::-;;;;:::o;17301:129::-;3188:12;:10;:12::i;:::-;3178:22;;:6;;;;;;;;;;:22;;;3170:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17414:8:::1;17390:12;:21;17403:7;17390:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17301:129:::0;;:::o;13551:41::-;;;;;;;;;;;;;:::o;12782:36::-;;;;:::o;12592:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;3044:79::-;3082:7;3109:6;;;;;;;;;;;3102:13;;3044:79;:::o;15712:87::-;15751:13;15784:7;15777:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15712:87;:::o;12025:32::-;;;;;;;;;;;;;:::o;16510:269::-;16603:4;16620:129;16629:12;:10;:12::i;:::-;16643:7;16652:96;16691:15;16652:96;;;;;;;;;;;;;;;;;:11;:25;16664:12;:10;:12::i;:::-;16652:25;;;;;;;;;;;;;;;:34;16678:7;16652:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;16620:8;:129::i;:::-;16767:4;16760:11;;16510:269;;;;:::o;19061:125::-;3188:12;:10;:12::i;:::-;3178:22;;:6;;;;;;;;;;:22;;;3170:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19170:8:::1;19142:25;;:36;;;;;;;;;;;;;;;;;;19061:125:::0;:::o;21113:167::-;21191:4;21208:42;21218:12;:10;:12::i;:::-;21232:9;21243:6;21208:9;:42::i;:::-;;21268:4;21261:11;;21113:167;;;;:::o;18882:171::-;3188:12;:10;:12::i;:::-;3178:22;;:6;;;;;;;;;;:22;;;3170:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18983:8:::1;18959:21;;:32;;;;;;;;;;;;;;;;;;19007:38;19036:8;19007:38;;;;;;:::i;:::-;;;;;;;;18882:171:::0;:::o;12691:36::-;;;;:::o;13341:26::-;;;;;;;;;;;;;:::o;12825:37::-;;;;:::o;12533:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;18600:134::-;3188:12;:10;:12::i;:::-;3178:22;;:6;;;;;;;;;;:22;;;3170:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18715:10:::1;18687:17;;:39;;;;;;;;;;;;;;;;;;18600:134:::0;:::o;13058:69::-;;;;:::o;13455:45::-;;;;;;;;;;;;;:::o;12649:35::-;;;;:::o;16133:143::-;16214:7;16241:11;:18;16253:5;16241:18;;;;;;;;;;;;;;;:27;16260:7;16241:27;;;;;;;;;;;;;;;;16234:34;;16133:143;;;;:::o;23650:154::-;3188:12;:10;:12::i;:::-;3178:22;;:6;;;;;;;;;;:22;;;3170:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23704:7:::1;23724:10;23716:24;;23748:21;23716:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23703:71;;;23793:2;23785:11;;;::::0;::::1;;23692:112;23650:154::o:0;17978:111::-;3188:12;:10;:12::i;:::-;3178:22;;:6;;;;;;;;;;:22;;;3170:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18070:11:::1;18055:12;:26;;;;17978:111:::0;:::o;17863:107::-;3188:12;:10;:12::i;:::-;3178:22;;:6;;;;;;;;;;:22;;;3170:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17955:7:::1;17930:22;;:32;;;;;;;;;;;;;;;;;;17863:107:::0;:::o;17438:135::-;3188:12;:10;:12::i;:::-;3178:22;;:6;;;;;;;;;;:22;;;3170:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17557:8:::1;17528:17;:26;17546:7;17528:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;17438:135:::0;;:::o;12914:32::-;;;;:::o;18218:102::-;3188:12;:10;:12::i;:::-;3178:22;;:6;;;;;;;;;;:22;;;3170:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18304:8:::1;18290:10;:22;;;;18218:102:::0;:::o;3507:244::-;3188:12;:10;:12::i;:::-;3178:22;;:6;;;;;;;;;;:22;;;3170:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3616:1:::1;3596:22;;:8;:22;;;;3588:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3706:8;3677:38;;3698:6;::::0;::::1;;;;;;;;3677:38;;;;;;;;;;;;3735:8;3726:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3507:244:::0;:::o;23503:139::-;3188:12;:10;:12::i;:::-;3178:22;;:6;;;;;;;;;;:22;;;3170:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23598:6:::1;23591:23;;;23615:10;23626:7;23591:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23503:139:::0;;:::o;17581:127::-;3188:12;:10;:12::i;:::-;3178:22;;:6;;;;;;;;;;:22;;;3170:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17694:6:::1;17668:15;:23;17684:6;17668:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17581:127:::0;;:::o;13509:35::-;;;;;;;;;;;;;:::o;11926:92::-;;;;;;;;;;;;;:::o;12484:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;18742:132::-;3188:12;:10;:12::i;:::-;3178:22;;:6;;;;;;;;;;:22;;;3170:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18855:10:::1;18829:15;;:37;;;;;;;;;;;;;;;;;;18742:132:::0;:::o;1729:250::-;1787:7;1816:1;1811;:6;1807:47;;;1841:1;1834:8;;;;1807:47;1866:9;1882:1;1878;:5;;;;:::i;:::-;1866:17;;1911:1;1906;1902;:5;;;;:::i;:::-;:10;1894:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1970:1;1963:8;;;1729:250;;;;;:::o;1987:132::-;2045:7;2072:39;2076:1;2079;2072:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2065:46;;1987:132;;;;:::o;1196:181::-;1254:7;1274:9;1290:1;1286;:5;;;;:::i;:::-;1274:17;;1315:1;1310;:6;;1302:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1368:1;1361:8;;;1196:181;;;;:::o;254:115::-;307:15;350:10;335:26;;254:115;:::o;16956:337::-;17066:1;17049:19;;:5;:19;;;;17041:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17147:1;17128:21;;:7;:21;;;;17120:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17231:6;17201:11;:18;17213:5;17201:18;;;;;;;;;;;;;;;:27;17220:7;17201:27;;;;;;;;;;;;;;;:36;;;;17269:7;17253:32;;17262:5;17253:32;;;17278:6;17253:32;;;;;;:::i;:::-;;;;;;;;16956:337;;;:::o;21609:1886::-;21696:4;21741:1;21723:20;;:6;:20;;;;21715:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21825:1;21804:23;;:9;:23;;;;21796:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21887:9;:17;21897:6;21887:17;;;;;;;;;;;;;;;;;;;;;;;;;21886:18;:43;;;;;21909:9;:20;21919:9;21909:20;;;;;;;;;;;;;;;;;;;;;;;;;21908:21;21886:43;21878:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;21979:16;;;;;;;;;;;21976:1502;;;22029:41;22044:6;22052:9;22063:6;22029:14;:41::i;:::-;22022:48;;;;21976:1502;22128:15;:23;22144:6;22128:23;;;;;;;;;;;;;;;;;;;;;;;;;22127:24;:55;;;;;22156:15;:26;22172:9;22156:26;;;;;;;;;;;;;;;;;;;;;;;;;22155:27;22127:55;:81;;;;;22186:22;;;;;;;;;;;22127:81;22124:196;;;22247:12;;22237:6;:22;;22229:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;22124:196;22336:28;22367:24;22385:4;22367:9;:24::i;:::-;22336:55;;22406:28;22461:23;;22437:20;:47;;22406:78;;22517:23;:44;;;;;22545:16;;;;;;;;;;;22544:17;22517:44;:69;;;;;22566:12;:20;22579:6;22566:20;;;;;;;;;;;;;;;;;;;;;;;;;22565:21;22517:69;:94;;;;;22590:21;;;;;;;;;;;22517:94;22513:305;;;22649:25;;;;;;;;;;;22646:97;;;22720:23;;22697:46;;22646:97;22762:36;22777:20;22762:14;:36::i;:::-;22513:305;22854:53;22876:6;22854:53;;;;;;;;;;;;;;;;;:9;:17;22864:6;22854:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;22834:9;:17;22844:6;22834:17;;;;;;;;;;;;;;;:73;;;;22924:19;22947:17;:25;22965:6;22947:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;22976:17;:28;22994:9;22976:28;;;;;;;;;;;;;;;;;;;;;;;;;22947:57;22946:148;;23060:34;23068:6;23076:9;23087:6;23060:7;:34::i;:::-;22946:148;;;23051:6;22946:148;22924:170;;23114:16;;;;;;;;;;;:51;;;;;23135:19;:30;23155:9;23135:30;;;;;;;;;;;;;;;;;;;;;;;;;23134:31;23114:51;23111:191;;;23235:10;;23194:37;23219:11;23194:20;23204:9;23194;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;23186:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;23111:191;23341:37;23366:11;23341:9;:20;23351:9;23341:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;23318:9;:20;23328:9;23318:20;;;;;;;;;;;;;;;:60;;;;23417:9;23400:40;;23409:6;23400:40;;;23428:11;23400:40;;;;;;:::i;:::-;;;;;;;;23462:4;23455:11;;;;;21609:1886;;;;;;:::o;1529:192::-;1615:7;1648:1;1643;:6;;1651:12;1635:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1675:9;1691:1;1687;:5;;;;:::i;:::-;1675:17;;1712:1;1705:8;;;1529:192;;;;;:::o;1385:136::-;1443:7;1470:43;1474:1;1477;1470:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1463:50;;1385:136;;;;:::o;2127:278::-;2213:7;2245:1;2241;:5;2248:12;2233:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2272:9;2288:1;2284;:5;;;;:::i;:::-;2272:17;;2396:1;2389:8;;;2127:278;;;;;:::o;23812:330::-;23905:4;23942:53;23964:6;23942:53;;;;;;;;;;;;;;;;;:9;:17;23952:6;23942:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;23922:9;:17;23932:6;23922:17;;;;;;;;;;;;;;;:73;;;;24029:32;24054:6;24029:9;:20;24039:9;24029:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;24006:9;:20;24016:9;24006:20;;;;;;;;;;;;;;;:55;;;;24094:9;24077:35;;24086:6;24077:35;;;24105:6;24077:35;;;;;;:::i;:::-;;;;;;;;24130:4;24123:11;;23812:330;;;;;:::o;24150:1449::-;14036:4;14017:16;;:23;;;;;;;;;;;;;;;;;;24224:19:::1;24246:41;24268:18;;24246:17;;:21;;:41;;;;:::i;:::-;24224:63;;24300:22;24325:39;24346:17;;24325:16;;:20;;:39;;;;:::i;:::-;24300:64;;24375:22;24400:39;24421:17;;24400:16;;:20;;:39;;;;:::i;:::-;24375:64;;24538:18;24559:51;24608:1;24559:44;24591:11;24559:27;24571:14;24559:7;:11;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;24538:72;;24621:20;24644:23;24656:10;24644:7;:11;;:23;;;;:::i;:::-;24621:46;;24680:22;24706:21;24680:47;;24738:30;24755:12;24738:16;:30::i;:::-;24779:23;24806:41;24832:14;24806:21;:25;;:41;;;;:::i;:::-;24779:68;;24860:19;24882:38;24898:21;24917:1;24898:14;:18;;:21;;;;:::i;:::-;24882:11;:15;;:38;;;;:::i;:::-;24860:60;;24933:26;24962:59;25019:1;24962:52;25002:11;24962:35;24982:14;24962:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;24933:88;;25032:26;25061:52;25101:11;25061:35;25081:14;25061:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;25032:81;;25124:26;25153:63;25197:18;25153:39;25173:18;25153:15;:19;;:39;;;;:::i;:::-;:43;;:63;;;;:::i;:::-;25124:92;;25253:1;25232:18;:22;25229:107;;;25279:15;;;;;;;;;;;25271:33;;:53;25305:18;25271:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25229:107;25372:1;25351:18;:22;25348:107;;;25398:15;;;;;;;;;;;25390:33;;:53;25424:18;25390:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25348:107;25500:1;25479:18;:22;:40;;;;;25518:1;25505:10;:14;25479:40;25476:116;;;25536:44;25549:10;25561:18;25536:12;:44::i;:::-;25476:116;24211:1388;;;;;;;;;;;14082:5:::0;14063:16;;:24;;;;;;;;;;;;;;;;;;24150:1449;:::o;26816:622::-;26902:7;26932:17;26952:1;26932:21;;26977:12;:20;26990:6;26977:20;;;;;;;;;;;;;;;;;;;;;;;;;26974:223;;;27026:38;27060:3;27026:29;27037:17;;27026:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;27014:50;;26974:223;;;27094:12;:23;27107:9;27094:23;;;;;;;;;;;;;;;;;;;;;;;;;27091:106;;;27146:39;27181:3;27146:30;27157:18;;27146:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;27134:51;;27091:106;26974:223;27232:1;27220:9;:13;27217:173;;;27277:39;27306:9;27277;:24;27295:4;27277:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;27250:9;:24;27268:4;27250:24;;;;;;;;;;;;;;;:66;;;;27361:4;27336:42;;27345:6;27336:42;;;27368:9;27336:42;;;;;;:::i;:::-;;;;;;;;27217:173;27409:21;27420:9;27409:6;:10;;:21;;;;:::i;:::-;27402:28;;;26816:622;;;;;:::o;25611:666::-;25737:21;25775:1;25761:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25737:40;;25806:4;25788;25793:1;25788:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;25832:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25822:4;25827:1;25822:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;25867:62;25884:4;25899:15;;;;;;;;;;;25917:11;25867:8;:62::i;:::-;25968:15;;;;;;;;;;;:66;;;26049:11;26075:1;26119:4;26146;26182:15;25968:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26234:35;26251:11;26264:4;26234:35;;;;;;;:::i;:::-;;;;;;;;25666:611;25611:666;:::o;26285:523::-;26433:62;26450:4;26465:15;;;;;;;;;;;26483:11;26433:8;:62::i;:::-;26538:15;;;;;;;;;;;:31;;;26577:9;26610:4;26630:11;26656:1;26699;26742:17;;;;;;;;;;;26774:15;26538:262;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;26285: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://c638ef3b99dd5a50026aca99a69ad61bd7bafe1fe971c0776327fad1f56c3dc5
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.