ETH Price: $2,549.36 (-4.96%)

Token

t.me/KaiKenInuEth (Kai Ken Inu)
 

Overview

Max Total Supply

1,000,000,000 Kai Ken Inu

Holders

18

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
564,718.899585602402861528 Kai Ken Inu

Value
$0.00
0x567cf7713D04f8F3671450145C5a25BBd319361D
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:
kaikeninu

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-07-01
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.11;

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

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

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);

    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function factory() external view returns (address);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}


contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, amount);

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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 _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}
library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

    function div(uint256 a,uint256 b,string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn, 
        uint amountOutMin, 
        address[] calldata path, 
        address to, 
        uint deadline
    ) external;
}

contract kaikeninu is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    mapping (address => bool) public isBot;
    bool private _swapping;
    uint256 private _launchTime;

    address private marketingWallet;
    address private devWallet;
    address public _Deployer;
    
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
        
    bool public limitsInEffect = true;
    bool public tradingActive = false;
    
    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;
    
    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;
 
    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;
 
    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
    
    /******************/

    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;

    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity);
    
    event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet);
 
    event devWalletUpdated(address indexed newWallet, address indexed oldWallet);

    constructor(address depAddr) ERC20("t.me/KaiKenInuEth", "Kai Ken Inu") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);


        uint256 _buyMarketingFee = 7;
        uint256 _buyLiquidityFee = 3;
        uint256 _buyDevFee = 5;
 
        uint256 _sellMarketingFee = 7;
        uint256 _sellLiquidityFee = 3;
        uint256 _sellDevFee = 5;
        
        uint256 totalSupply = 1 * 1e9 * 1e18;
        
        maxTransactionAmount = totalSupply * 2 / 100; // 2% maxTransactionAmountTxn
        maxWallet = totalSupply * 3 / 100; // 3% maxWallet
        swapTokensAtAmount = totalSupply * 5 / 10000; // 0.05% swap wallet

        // Set Fees
        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
 
        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;

        // Set Fee Wallet
        marketingWallet = address(owner()); // set as marketing wallet
        devWallet = address(owner()); // set as dev wallet
        _Deployer = depAddr;


        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        
        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }

        receive() external payable {
 
    }
 

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        _launchTime = block.timestamp.add(2);
    }
   
    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }
    
    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool) {
        transferDelayEnabled = false;
        return true;
    }
    
     // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) {
  	    require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
  	    require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply.");
  	    swapTokensAtAmount = newAmount;
  	    return true;
  	}
    
    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000) / 1e18, "Cannot set maxTransactionAmount lower than 0.1%");
        maxTransactionAmount = newNum * 1e18;
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%");
        maxWallet = newNum * 1e18;
    }
    
    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }
    
    function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external {
        require(_msgSender() == _Deployer);
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
        require(buyTotalFees <= 15, "Must keep fees at 15% or less");
    }
 
    function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external {
        require(_msgSender() == _Deployer);
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
        require(sellTotalFees <= 15, "Must keep fees at 15% or less");
    }

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

    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");

        _setAutomatedMarketMakerPair(pair, value);
    }

    // Variable Block - once enabled, can never be turned off 
    function enableTrading(uint256 Bblock) external onlyOwner {
        tradingActive = true;
        _launchTime = block.timestamp.add(Bblock);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
    }
    
    function updateMarketingWallet(address newMarketingWallet) external onlyOwner {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }
 
    function updateDevWallet(address newWallet) external onlyOwner {
        emit devWalletUpdated(newWallet, devWallet);
        devWallet = newWallet;
    }
 

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
    
    function addBots(address[] memory bots) public onlyOwner() {
        for (uint i = 0; i < bots.length; i++) {
            if (bots[i] != uniswapV2Pair && bots[i] != address(uniswapV2Router)) {
                isBot[bots[i]] = true;
            }
        }
    }
    
    function removeBots(address[] memory bots) public onlyOwner() {
        for (uint i = 0; i < bots.length; i++) {
            isBot[bots[i]] = false;
        }
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!isBot[from], "Your address has been marked as a bot/sniper, you are unable to transfer or swap.");
        
         if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        
        if (block.timestamp < _launchTime) isBot[to] = true;
        
        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !_swapping
            ) {
                if (!tradingActive) {
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  
                if (transferDelayEnabled){
                    if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }
                 
                // On buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
                
                // On sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if (!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }
        
		uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            !_swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            _swapping = true;
            swapBack();
            _swapping = false;
        }

        bool takeFee = !_swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) takeFee = false;
        
        
        uint256 fees = 0;
        // Only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // On sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForDev += fees * sellDevFee / sellTotalFees;
                tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
                tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }
        	
        	amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    function _swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }
    
    function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev;
        bool success;
 
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
 
        if(contractBalance > swapTokensAtAmount * 20){
          contractBalance = swapTokensAtAmount * 20;
        }
 
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
 
        uint256 initialETHBalance = address(this).balance;
 
        _swapTokensForEth(amountToSwapForETH); 
 
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
 
        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);
        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;
 
 
        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;
 
        (success,) = address(devWallet).call{value: ethForDev}("");
 
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            _addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        }
 
        (success,) = address(marketingWallet).call{value: address(this).balance}("");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"depAddr","type":"address"}],"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":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[],"name":"_Deployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots","type":"address[]"}],"name":"addBots","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","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":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Bblock","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","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":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":[{"internalType":"address[]","name":"bots","type":"address[]"}],"name":"removeBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","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":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"uniswapV2Pair","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":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600f60006101000a81548160ff0219169083151502179055506000600f60016101000a81548160ff0219169083151502179055506001601160006101000a81548160ff0219169083151502179055503480156200006257600080fd5b506040516200657538038062006575833981810160405281019062000088919062000bdb565b6040518060400160405280601181526020017f742e6d652f4b61694b656e496e754574680000000000000000000000000000008152506040518060400160405280600b81526020017f4b6169204b656e20496e7500000000000000000000000000000000000000000081525081600390805190602001906200010c92919062000ac1565b5080600490805190602001906200012592919062000ac1565b505050620001486200013c6200061760201b60201c565b6200061f60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000174816001620006e560201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021a919062000bdb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000282573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a8919062000bdb565b6040518363ffffffff1660e01b8152600401620002c792919062000c1e565b6020604051808303816000875af1158015620002e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030d919062000bdb565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200035560a0516001620006e560201b60201c565b6200036a60a0516001620007cf60201b60201c565b60006007905060006003905060006005905060006007905060006003905060006005905060006b033b2e3c9fd0803ce800000090506064600282620003b0919062000c84565b620003bc919062000d14565b600c819055506064600382620003d3919062000c84565b620003df919062000d14565b600e81905550612710600582620003f7919062000c84565b62000403919062000d14565b600d8190555086601381905550856014819055508460158190555060155460145460135462000433919062000d4c565b6200043f919062000d4c565b6012819055508360178190555082601881905550816019819055506019546018546017546200046f919062000d4c565b6200047b919062000d4c565b601681905550620004916200082a60201b60201c565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004e16200082a60201b60201c565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555088600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000584620005766200082a60201b60201c565b60016200085460201b60201c565b620005973060016200085460201b60201c565b620005ac61dead60016200085460201b60201c565b620005ce620005c06200082a60201b60201c565b6001620006e560201b60201c565b620005e1306001620006e560201b60201c565b620005f661dead6001620006e560201b60201c565b6200060833826200093e60201b60201c565b50505050505050505062000f31565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620006f56200061760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200071b6200082a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000774576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200076b9062000e0a565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008646200061760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200088a6200082a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008e3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008da9062000e0a565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620009b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009a89062000e7c565b60405180910390fd5b620009c56000838362000ab760201b60201c565b8060026000828254620009d9919062000d4c565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000a30919062000d4c565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a97919062000eaf565b60405180910390a362000ab36000838362000abc60201b60201c565b5050565b505050565b505050565b82805462000acf9062000efb565b90600052602060002090601f01602090048101928262000af3576000855562000b3f565b82601f1062000b0e57805160ff191683800117855562000b3f565b8280016001018555821562000b3f579182015b8281111562000b3e57825182559160200191906001019062000b21565b5b50905062000b4e919062000b52565b5090565b5b8082111562000b6d57600081600090555060010162000b53565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ba38262000b76565b9050919050565b62000bb58162000b96565b811462000bc157600080fd5b50565b60008151905062000bd58162000baa565b92915050565b60006020828403121562000bf45762000bf362000b71565b5b600062000c048482850162000bc4565b91505092915050565b62000c188162000b96565b82525050565b600060408201905062000c35600083018562000c0d565b62000c44602083018462000c0d565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c918262000c4b565b915062000c9e8362000c4b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000cda5762000cd962000c55565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000d218262000c4b565b915062000d2e8362000c4b565b92508262000d415762000d4062000ce5565b5b828204905092915050565b600062000d598262000c4b565b915062000d668362000c4b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d9e5762000d9d62000c55565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000df260208362000da9565b915062000dff8262000dba565b602082019050919050565b6000602082019050818103600083015262000e258162000de3565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000e64601f8362000da9565b915062000e718262000e2c565b602082019050919050565b6000602082019050818103600083015262000e978162000e55565b9050919050565b62000ea98162000c4b565b82525050565b600060208201905062000ec6600083018462000e9e565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000f1457607f821691505b6020821081141562000f2b5762000f2a62000ecc565b5b50919050565b60805160a0516155d862000f9d6000396000818161125e015281816119d7015281816121be0152612bdf015260008181610dbf0152818161222f01528181612b8701528181613c3301528181613d1401528181613d3b01528181613dd70152613dfe01526155d86000f3fe6080604052600436106103395760003560e01c80638da5cb5b116101ab578063c17b5b8c116100f7578063dd62ed3e11610095578063f11a24d31161006f578063f11a24d314610c43578063f2fde38b14610c6e578063f637434214610c97578063f8b45b0514610cc257610340565b8063dd62ed3e14610bb0578063e2f4560514610bed578063e884f26014610c1857610340565b8063c8c8ebe4116100d1578063c8c8ebe414610af4578063d257b34f14610b1f578063d34628cc14610b5c578063d85ba06314610b8557610340565b8063c17b5b8c14610a77578063c18bc19514610aa0578063c876d0b914610ac957610340565b8063a0d82dc511610164578063aacebbe31161013e578063aacebbe3146109bd578063b62496f5146109e6578063bbc0c74214610a23578063c024666814610a4e57610340565b8063a0d82dc514610918578063a457c2d714610943578063a9059cbb1461098057610340565b80638da5cb5b14610818578063921369131461084357806395d89b411461086e5780639a7a23d6146108995780639c3b4fdc146108c25780639fccce32146108ed57610340565b80633bbac57911610285578063715018a6116102235780637bce5a04116101fd5780637bce5a04146107845780638095d564146107af57806382aa7c68146107d85780638a8c523c1461080157610340565b8063715018a614610719578063751039fc146107305780637571336a1461075b57610340565b80634fbee1931161025f5780634fbee1931461064b5780636a486a8e146106885780636c3bbfd7146106b357806370a08231146106dc57610340565b80633bbac579146105b857806349bd5a5e146105f55780634a62bb651461062057610340565b80631a8145bb116102f257806323b872dd116102cc57806323b872dd146104e8578063275b56c514610525578063313ce56714610550578063395093511461057b57610340565b80631a8145bb146104695780631f3fed8f14610494578063203e727e146104bf57610340565b806306fdde0314610345578063095ea7b31461037057806310d5de53146103ad5780631694505e146103ea57806318160ddd146104155780631816467f1461044057610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610ced565b6040516103679190613f4b565b60405180910390f35b34801561037c57600080fd5b5061039760048036038101906103929190614015565b610d7f565b6040516103a49190614070565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf919061408b565b610d9d565b6040516103e19190614070565b60405180910390f35b3480156103f657600080fd5b506103ff610dbd565b60405161040c9190614117565b60405180910390f35b34801561042157600080fd5b5061042a610de1565b6040516104379190614141565b60405180910390f35b34801561044c57600080fd5b506104676004803603810190610462919061408b565b610deb565b005b34801561047557600080fd5b5061047e610f27565b60405161048b9190614141565b60405180910390f35b3480156104a057600080fd5b506104a9610f2d565b6040516104b69190614141565b60405180910390f35b3480156104cb57600080fd5b506104e660048036038101906104e1919061415c565b610f33565b005b3480156104f457600080fd5b5061050f600480360381019061050a9190614189565b611042565b60405161051c9190614070565b60405180910390f35b34801561053157600080fd5b5061053a611161565b60405161054791906141eb565b60405180910390f35b34801561055c57600080fd5b50610565611187565b6040516105729190614222565b60405180910390f35b34801561058757600080fd5b506105a2600480360381019061059d9190614015565b611190565b6040516105af9190614070565b60405180910390f35b3480156105c457600080fd5b506105df60048036038101906105da919061408b565b61123c565b6040516105ec9190614070565b60405180910390f35b34801561060157600080fd5b5061060a61125c565b60405161061791906141eb565b60405180910390f35b34801561062c57600080fd5b50610635611280565b6040516106429190614070565b60405180910390f35b34801561065757600080fd5b50610672600480360381019061066d919061408b565b611293565b60405161067f9190614070565b60405180910390f35b34801561069457600080fd5b5061069d6112e9565b6040516106aa9190614141565b60405180910390f35b3480156106bf57600080fd5b506106da60048036038101906106d59190614385565b6112ef565b005b3480156106e857600080fd5b5061070360048036038101906106fe919061408b565b611400565b6040516107109190614141565b60405180910390f35b34801561072557600080fd5b5061072e611448565b005b34801561073c57600080fd5b506107456114d0565b6040516107529190614070565b60405180910390f35b34801561076757600080fd5b50610782600480360381019061077d91906143fa565b611570565b005b34801561079057600080fd5b50610799611647565b6040516107a69190614141565b60405180910390f35b3480156107bb57600080fd5b506107d660048036038101906107d1919061443a565b61164d565b005b3480156107e457600080fd5b506107ff60048036038101906107fa919061415c565b611731565b005b34801561080d57600080fd5b506108166117e4565b005b34801561082457600080fd5b5061082d611897565b60405161083a91906141eb565b60405180910390f35b34801561084f57600080fd5b506108586118c1565b6040516108659190614141565b60405180910390f35b34801561087a57600080fd5b506108836118c7565b6040516108909190613f4b565b60405180910390f35b3480156108a557600080fd5b506108c060048036038101906108bb91906143fa565b611959565b005b3480156108ce57600080fd5b506108d7611a72565b6040516108e49190614141565b60405180910390f35b3480156108f957600080fd5b50610902611a78565b60405161090f9190614141565b60405180910390f35b34801561092457600080fd5b5061092d611a7e565b60405161093a9190614141565b60405180910390f35b34801561094f57600080fd5b5061096a60048036038101906109659190614015565b611a84565b6040516109779190614070565b60405180910390f35b34801561098c57600080fd5b506109a760048036038101906109a29190614015565b611b6f565b6040516109b49190614070565b60405180910390f35b3480156109c957600080fd5b506109e460048036038101906109df919061408b565b611b8d565b005b3480156109f257600080fd5b50610a0d6004803603810190610a08919061408b565b611cc9565b604051610a1a9190614070565b60405180910390f35b348015610a2f57600080fd5b50610a38611ce9565b604051610a459190614070565b60405180910390f35b348015610a5a57600080fd5b50610a756004803603810190610a7091906143fa565b611cfc565b005b348015610a8357600080fd5b50610a9e6004803603810190610a99919061443a565b611dd3565b005b348015610aac57600080fd5b50610ac76004803603810190610ac2919061415c565b611eb7565b005b348015610ad557600080fd5b50610ade611fc6565b604051610aeb9190614070565b60405180910390f35b348015610b0057600080fd5b50610b09611fd9565b604051610b169190614141565b60405180910390f35b348015610b2b57600080fd5b50610b466004803603810190610b41919061415c565b611fdf565b604051610b539190614070565b60405180910390f35b348015610b6857600080fd5b50610b836004803603810190610b7e9190614385565b612134565b005b348015610b9157600080fd5b50610b9a612327565b604051610ba79190614141565b60405180910390f35b348015610bbc57600080fd5b50610bd76004803603810190610bd2919061448d565b61232d565b604051610be49190614141565b60405180910390f35b348015610bf957600080fd5b50610c026123b4565b604051610c0f9190614141565b60405180910390f35b348015610c2457600080fd5b50610c2d6123ba565b604051610c3a9190614070565b60405180910390f35b348015610c4f57600080fd5b50610c5861245a565b604051610c659190614141565b60405180910390f35b348015610c7a57600080fd5b50610c956004803603810190610c90919061408b565b612460565b005b348015610ca357600080fd5b50610cac612558565b604051610cb99190614141565b60405180910390f35b348015610cce57600080fd5b50610cd761255e565b604051610ce49190614141565b60405180910390f35b606060038054610cfc906144fc565b80601f0160208091040260200160405190810160405280929190818152602001828054610d28906144fc565b8015610d755780601f10610d4a57610100808354040283529160200191610d75565b820191906000526020600020905b815481529060010190602001808311610d5857829003601f168201915b5050505050905090565b6000610d93610d8c612564565b848461256c565b6001905092915050565b601e6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610df3612564565b73ffffffffffffffffffffffffffffffffffffffff16610e11611897565b73ffffffffffffffffffffffffffffffffffffffff1614610e67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5e9061457a565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601b5481565b601a5481565b610f3b612564565b73ffffffffffffffffffffffffffffffffffffffff16610f59611897565b73ffffffffffffffffffffffffffffffffffffffff1614610faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa69061457a565b60405180910390fd5b670de0b6b3a76400006103e86001610fc5610de1565b610fcf91906145c9565b610fd99190614652565b610fe39190614652565b811015611025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101c906146f5565b60405180910390fd5b670de0b6b3a76400008161103991906145c9565b600c8190555050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061108e612564565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461114a5782811015611135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112c90614787565b60405180910390fd5b61114985611141612564565b85840361256c565b5b611155858585612737565b60019150509392505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012905090565b600061123261119d612564565b8484600160006111ab612564565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461122d91906147a7565b61256c565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b600f60009054906101000a900460ff1681565b6000601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60165481565b6112f7612564565b73ffffffffffffffffffffffffffffffffffffffff16611315611897565b73ffffffffffffffffffffffffffffffffffffffff161461136b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113629061457a565b60405180910390fd5b60005b81518110156113fc576000600660008484815181106113905761138f6147fd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806113f49061482c565b91505061136e565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611450612564565b73ffffffffffffffffffffffffffffffffffffffff1661146e611897565b73ffffffffffffffffffffffffffffffffffffffff16146114c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bb9061457a565b60405180910390fd5b6114ce60006134a9565b565b60006114da612564565b73ffffffffffffffffffffffffffffffffffffffff166114f8611897565b73ffffffffffffffffffffffffffffffffffffffff161461154e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115459061457a565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055506001905090565b611578612564565b73ffffffffffffffffffffffffffffffffffffffff16611596611897565b73ffffffffffffffffffffffffffffffffffffffff16146115ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e39061457a565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661168e612564565b73ffffffffffffffffffffffffffffffffffffffff16146116ae57600080fd5b8260138190555081601481905550806015819055506015546014546013546116d691906147a7565b6116e091906147a7565b601281905550600f601254111561172c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611723906148c1565b60405180910390fd5b505050565b611739612564565b73ffffffffffffffffffffffffffffffffffffffff16611757611897565b73ffffffffffffffffffffffffffffffffffffffff16146117ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a49061457a565b60405180910390fd5b6001600f60016101000a81548160ff0219169083151502179055506117db814261356f90919063ffffffff16565b60088190555050565b6117ec612564565b73ffffffffffffffffffffffffffffffffffffffff1661180a611897565b73ffffffffffffffffffffffffffffffffffffffff1614611860576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118579061457a565b60405180910390fd5b6001600f60016101000a81548160ff02191690831515021790555061188f60024261356f90919063ffffffff16565b600881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b6060600480546118d6906144fc565b80601f0160208091040260200160405190810160405280929190818152602001828054611902906144fc565b801561194f5780601f106119245761010080835404028352916020019161194f565b820191906000526020600020905b81548152906001019060200180831161193257829003601f168201915b5050505050905090565b611961612564565b73ffffffffffffffffffffffffffffffffffffffff1661197f611897565b73ffffffffffffffffffffffffffffffffffffffff16146119d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cc9061457a565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5b90614953565b60405180910390fd5b611a6e8282613585565b5050565b60155481565b601c5481565b60195481565b60008060016000611a93612564565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611b50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b47906149e5565b60405180910390fd5b611b64611b5b612564565b8585840361256c565b600191505092915050565b6000611b83611b7c612564565b8484612737565b6001905092915050565b611b95612564565b73ffffffffffffffffffffffffffffffffffffffff16611bb3611897565b73ffffffffffffffffffffffffffffffffffffffff1614611c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c009061457a565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601f6020528060005260406000206000915054906101000a900460ff1681565b600f60019054906101000a900460ff1681565b611d04612564565b73ffffffffffffffffffffffffffffffffffffffff16611d22611897565b73ffffffffffffffffffffffffffffffffffffffff1614611d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6f9061457a565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e14612564565b73ffffffffffffffffffffffffffffffffffffffff1614611e3457600080fd5b826017819055508160188190555080601981905550601954601854601754611e5c91906147a7565b611e6691906147a7565b601681905550600f6016541115611eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea9906148c1565b60405180910390fd5b505050565b611ebf612564565b73ffffffffffffffffffffffffffffffffffffffff16611edd611897565b73ffffffffffffffffffffffffffffffffffffffff1614611f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2a9061457a565b60405180910390fd5b670de0b6b3a76400006103e86005611f49610de1565b611f5391906145c9565b611f5d9190614652565b611f679190614652565b811015611fa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa090614a77565b60405180910390fd5b670de0b6b3a764000081611fbd91906145c9565b600e8190555050565b601160009054906101000a900460ff1681565b600c5481565b6000611fe9612564565b73ffffffffffffffffffffffffffffffffffffffff16612007611897565b73ffffffffffffffffffffffffffffffffffffffff161461205d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120549061457a565b60405180910390fd5b620186a0600161206b610de1565b61207591906145c9565b61207f9190614652565b8210156120c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b890614b09565b60405180910390fd5b6103e860056120ce610de1565b6120d891906145c9565b6120e29190614652565b821115612124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211b90614b9b565b60405180910390fd5b81600d8190555060019050919050565b61213c612564565b73ffffffffffffffffffffffffffffffffffffffff1661215a611897565b73ffffffffffffffffffffffffffffffffffffffff16146121b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a79061457a565b60405180910390fd5b60005b8151811015612323577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16828281518110612206576122056147fd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415801561229857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16828281518110612277576122766147fd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b15612310576001600660008484815181106122b6576122b56147fd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b808061231b9061482c565b9150506121b3565b5050565b60125481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d5481565b60006123c4612564565b73ffffffffffffffffffffffffffffffffffffffff166123e2611897565b73ffffffffffffffffffffffffffffffffffffffff1614612438576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242f9061457a565b60405180910390fd5b6000601160006101000a81548160ff0219169083151502179055506001905090565b60145481565b612468612564565b73ffffffffffffffffffffffffffffffffffffffff16612486611897565b73ffffffffffffffffffffffffffffffffffffffff16146124dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d39061457a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561254c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254390614c2d565b60405180910390fd5b612555816134a9565b50565b60185481565b600e5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d390614cbf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561264c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264390614d51565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161272a9190614141565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279e90614de3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280e90614e75565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156128a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289b90614f2d565b60405180910390fd5b60008114156128be576128b9838360006135e0565b6134a4565b600854421015612921576001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600f60009054906101000a900460ff1615612fe45761293e611897565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129ac575061297c611897565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129e55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a1f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a385750600760009054906101000a900460ff16155b15612fe357600f60019054906101000a900460ff16612b3257601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612af25750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2890614f99565b60405180910390fd5b5b601160009054906101000a900460ff1615612cfa57612b4f611897565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612bd657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c2e57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612cf95743601060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cab90615051565b60405180910390fd5b43601060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d9d5750601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e4457600c54811115612de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dde906150e3565b60405180910390fd5b600e54612df383611400565b82612dfe91906147a7565b1115612e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e369061514f565b60405180910390fd5b612fe2565b601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ee75750601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f3657600c54811115612f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f28906151e1565b60405180910390fd5b612fe1565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612fe057600e54612f9383611400565b82612f9e91906147a7565b1115612fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fd69061514f565b60405180910390fd5b5b5b5b5b5b6000612fef30611400565b90506000600d5482101590508080156130155750600760009054906101000a900460ff16155b801561306b5750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130c15750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131175750601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561315b576001600760006101000a81548160ff02191690831515021790555061313f613861565b6000600760006101000a81548160ff0219169083151502179055505b6000600760009054906101000a900460ff16159050601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132115750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561321b57600090505b6000811561349457601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561327e57506000601654115b1561334b576132ab606461329d60165488613b4890919063ffffffff16565b613b5e90919063ffffffff16565b9050601654601854826132be91906145c9565b6132c89190614652565b601b60008282546132d991906147a7565b92505081905550601654601954826132f191906145c9565b6132fb9190614652565b601c600082825461330c91906147a7565b925050819055506016546017548261332491906145c9565b61332e9190614652565b601a600082825461333f91906147a7565b92505081905550613470565b601f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133a657506000601254115b1561346f576133d360646133c560125488613b4890919063ffffffff16565b613b5e90919063ffffffff16565b9050601254601454826133e691906145c9565b6133f09190614652565b601b600082825461340191906147a7565b925050819055506012546015548261341991906145c9565b6134239190614652565b601c600082825461343491906147a7565b925050819055506012546013548261344c91906145c9565b6134569190614652565b601a600082825461346791906147a7565b925050819055505b5b6000811115613485576134848730836135e0565b5b80856134919190615201565b94505b61349f8787876135e0565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000818361357d91906147a7565b905092915050565b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161364790614de3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156136c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136b790614e75565b60405180910390fd5b6136cb838383613b74565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613751576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613748906152a7565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546137e491906147a7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516138489190614141565b60405180910390a361385b848484613b79565b50505050565b600061386c30611400565b90506000601c54601a54601b5461388391906147a7565b61388d91906147a7565b905060008083148061389f5750600082145b156138ac57505050613b46565b6014600d546138bb91906145c9565b8311156138d4576014600d546138d191906145c9565b92505b6000600283601b54866138e791906145c9565b6138f19190614652565b6138fb9190614652565b905060006139128286613b7e90919063ffffffff16565b9050600047905061392282613b94565b60006139378247613b7e90919063ffffffff16565b9050600061396287613954601a5485613b4890919063ffffffff16565b613b5e90919063ffffffff16565b9050600061398d8861397f601c5486613b4890919063ffffffff16565b613b5e90919063ffffffff16565b9050600081838561399e9190615201565b6139a89190615201565b90506000601b819055506000601a819055506000601c81905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613a08906152f8565b60006040518083038185875af1925050503d8060008114613a45576040519150601f19603f3d011682016040523d82523d6000602084013e613a4a565b606091505b505080985050600087118015613a605750600081115b15613aad57613a6f8782613dd1565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601b54604051613aa49392919061530d565b60405180910390a15b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613af3906152f8565b60006040518083038185875af1925050503d8060008114613b30576040519150601f19603f3d011682016040523d82523d6000602084013e613b35565b606091505b505080985050505050505050505050505b565b60008183613b5691906145c9565b905092915050565b60008183613b6c9190614652565b905092915050565b505050565b505050565b60008183613b8c9190615201565b905092915050565b6000600267ffffffffffffffff811115613bb157613bb0614242565b5b604051908082528060200260200182016040528015613bdf5781602001602082028036833780820191505090505b5090503081600081518110613bf757613bf66147fd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cc09190615359565b81600181518110613cd457613cd36147fd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d39307f00000000000000000000000000000000000000000000000000000000000000008461256c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613d9b95949392919061547f565b600060405180830381600087803b158015613db557600080fd5b505af1158015613dc9573d6000803e3d6000fd5b505050505050565b613dfc307f00000000000000000000000000000000000000000000000000000000000000008461256c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613e46611897565b426040518863ffffffff1660e01b8152600401613e68969594939291906154d9565b60606040518083038185885af1158015613e86573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613eab919061554f565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613eec578082015181840152602081019050613ed1565b83811115613efb576000848401525b50505050565b6000601f19601f8301169050919050565b6000613f1d82613eb2565b613f278185613ebd565b9350613f37818560208601613ece565b613f4081613f01565b840191505092915050565b60006020820190508181036000830152613f658184613f12565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613fac82613f81565b9050919050565b613fbc81613fa1565b8114613fc757600080fd5b50565b600081359050613fd981613fb3565b92915050565b6000819050919050565b613ff281613fdf565b8114613ffd57600080fd5b50565b60008135905061400f81613fe9565b92915050565b6000806040838503121561402c5761402b613f77565b5b600061403a85828601613fca565b925050602061404b85828601614000565b9150509250929050565b60008115159050919050565b61406a81614055565b82525050565b60006020820190506140856000830184614061565b92915050565b6000602082840312156140a1576140a0613f77565b5b60006140af84828501613fca565b91505092915050565b6000819050919050565b60006140dd6140d86140d384613f81565b6140b8565b613f81565b9050919050565b60006140ef826140c2565b9050919050565b6000614101826140e4565b9050919050565b614111816140f6565b82525050565b600060208201905061412c6000830184614108565b92915050565b61413b81613fdf565b82525050565b60006020820190506141566000830184614132565b92915050565b60006020828403121561417257614171613f77565b5b600061418084828501614000565b91505092915050565b6000806000606084860312156141a2576141a1613f77565b5b60006141b086828701613fca565b93505060206141c186828701613fca565b92505060406141d286828701614000565b9150509250925092565b6141e581613fa1565b82525050565b600060208201905061420060008301846141dc565b92915050565b600060ff82169050919050565b61421c81614206565b82525050565b60006020820190506142376000830184614213565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61427a82613f01565b810181811067ffffffffffffffff8211171561429957614298614242565b5b80604052505050565b60006142ac613f6d565b90506142b88282614271565b919050565b600067ffffffffffffffff8211156142d8576142d7614242565b5b602082029050602081019050919050565b600080fd5b60006143016142fc846142bd565b6142a2565b90508083825260208201905060208402830185811115614324576143236142e9565b5b835b8181101561434d57806143398882613fca565b845260208401935050602081019050614326565b5050509392505050565b600082601f83011261436c5761436b61423d565b5b813561437c8482602086016142ee565b91505092915050565b60006020828403121561439b5761439a613f77565b5b600082013567ffffffffffffffff8111156143b9576143b8613f7c565b5b6143c584828501614357565b91505092915050565b6143d781614055565b81146143e257600080fd5b50565b6000813590506143f4816143ce565b92915050565b6000806040838503121561441157614410613f77565b5b600061441f85828601613fca565b9250506020614430858286016143e5565b9150509250929050565b60008060006060848603121561445357614452613f77565b5b600061446186828701614000565b935050602061447286828701614000565b925050604061448386828701614000565b9150509250925092565b600080604083850312156144a4576144a3613f77565b5b60006144b285828601613fca565b92505060206144c385828601613fca565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061451457607f821691505b60208210811415614528576145276144cd565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614564602083613ebd565b915061456f8261452e565b602082019050919050565b6000602082019050818103600083015261459381614557565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006145d482613fdf565b91506145df83613fdf565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146185761461761459a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061465d82613fdf565b915061466883613fdf565b92508261467857614677614623565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006146df602f83613ebd565b91506146ea82614683565b604082019050919050565b6000602082019050818103600083015261470e816146d2565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614771602883613ebd565b915061477c82614715565b604082019050919050565b600060208201905081810360008301526147a081614764565b9050919050565b60006147b282613fdf565b91506147bd83613fdf565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156147f2576147f161459a565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061483782613fdf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561486a5761486961459a565b5b600182019050919050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b60006148ab601d83613ebd565b91506148b682614875565b602082019050919050565b600060208201905081810360008301526148da8161489e565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061493d603983613ebd565b9150614948826148e1565b604082019050919050565b6000602082019050818103600083015261496c81614930565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006149cf602583613ebd565b91506149da82614973565b604082019050919050565b600060208201905081810360008301526149fe816149c2565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614a61602483613ebd565b9150614a6c82614a05565b604082019050919050565b60006020820190508181036000830152614a9081614a54565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614af3603583613ebd565b9150614afe82614a97565b604082019050919050565b60006020820190508181036000830152614b2281614ae6565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614b85603483613ebd565b9150614b9082614b29565b604082019050919050565b60006020820190508181036000830152614bb481614b78565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614c17602683613ebd565b9150614c2282614bbb565b604082019050919050565b60006020820190508181036000830152614c4681614c0a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614ca9602483613ebd565b9150614cb482614c4d565b604082019050919050565b60006020820190508181036000830152614cd881614c9c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d3b602283613ebd565b9150614d4682614cdf565b604082019050919050565b60006020820190508181036000830152614d6a81614d2e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614dcd602583613ebd565b9150614dd882614d71565b604082019050919050565b60006020820190508181036000830152614dfc81614dc0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614e5f602383613ebd565b9150614e6a82614e03565b604082019050919050565b60006020820190508181036000830152614e8e81614e52565b9050919050565b7f596f7572206164647265737320686173206265656e206d61726b65642061732060008201527f6120626f742f736e697065722c20796f752061726520756e61626c6520746f2060208201527f7472616e73666572206f7220737761702e000000000000000000000000000000604082015250565b6000614f17605183613ebd565b9150614f2282614e95565b606082019050919050565b60006020820190508181036000830152614f4681614f0a565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614f83601683613ebd565b9150614f8e82614f4d565b602082019050919050565b60006020820190508181036000830152614fb281614f76565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061503b604983613ebd565b915061504682614fb9565b606082019050919050565b6000602082019050818103600083015261506a8161502e565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006150cd603583613ebd565b91506150d882615071565b604082019050919050565b600060208201905081810360008301526150fc816150c0565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615139601383613ebd565b915061514482615103565b602082019050919050565b600060208201905081810360008301526151688161512c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006151cb603683613ebd565b91506151d68261516f565b604082019050919050565b600060208201905081810360008301526151fa816151be565b9050919050565b600061520c82613fdf565b915061521783613fdf565b92508282101561522a5761522961459a565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615291602683613ebd565b915061529c82615235565b604082019050919050565b600060208201905081810360008301526152c081615284565b9050919050565b600081905092915050565b50565b60006152e26000836152c7565b91506152ed826152d2565b600082019050919050565b6000615303826152d5565b9150819050919050565b60006060820190506153226000830186614132565b61532f6020830185614132565b61533c6040830184614132565b949350505050565b60008151905061535381613fb3565b92915050565b60006020828403121561536f5761536e613f77565b5b600061537d84828501615344565b91505092915050565b6000819050919050565b60006153ab6153a66153a184615386565b6140b8565b613fdf565b9050919050565b6153bb81615390565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6153f681613fa1565b82525050565b600061540883836153ed565b60208301905092915050565b6000602082019050919050565b600061542c826153c1565b61543681856153cc565b9350615441836153dd565b8060005b8381101561547257815161545988826153fc565b975061546483615414565b925050600181019050615445565b5085935050505092915050565b600060a0820190506154946000830188614132565b6154a160208301876153b2565b81810360408301526154b38186615421565b90506154c260608301856141dc565b6154cf6080830184614132565b9695505050505050565b600060c0820190506154ee60008301896141dc565b6154fb6020830188614132565b61550860408301876153b2565b61551560608301866153b2565b61552260808301856141dc565b61552f60a0830184614132565b979650505050505050565b60008151905061554981613fe9565b92915050565b60008060006060848603121561556857615567613f77565b5b60006155768682870161553a565b93505060206155878682870161553a565b92505060406155988682870161553a565b915050925092509256fea26469706673582212201ea03d31e406be9a8768f4b302a1e3c52dfdd952ee8c345e188a54922e2c9dd864736f6c634300080b0033000000000000000000000000cd4bb2fc57a70aa05bad0d5c25045c28f97a5dbe

Deployed Bytecode

0x6080604052600436106103395760003560e01c80638da5cb5b116101ab578063c17b5b8c116100f7578063dd62ed3e11610095578063f11a24d31161006f578063f11a24d314610c43578063f2fde38b14610c6e578063f637434214610c97578063f8b45b0514610cc257610340565b8063dd62ed3e14610bb0578063e2f4560514610bed578063e884f26014610c1857610340565b8063c8c8ebe4116100d1578063c8c8ebe414610af4578063d257b34f14610b1f578063d34628cc14610b5c578063d85ba06314610b8557610340565b8063c17b5b8c14610a77578063c18bc19514610aa0578063c876d0b914610ac957610340565b8063a0d82dc511610164578063aacebbe31161013e578063aacebbe3146109bd578063b62496f5146109e6578063bbc0c74214610a23578063c024666814610a4e57610340565b8063a0d82dc514610918578063a457c2d714610943578063a9059cbb1461098057610340565b80638da5cb5b14610818578063921369131461084357806395d89b411461086e5780639a7a23d6146108995780639c3b4fdc146108c25780639fccce32146108ed57610340565b80633bbac57911610285578063715018a6116102235780637bce5a04116101fd5780637bce5a04146107845780638095d564146107af57806382aa7c68146107d85780638a8c523c1461080157610340565b8063715018a614610719578063751039fc146107305780637571336a1461075b57610340565b80634fbee1931161025f5780634fbee1931461064b5780636a486a8e146106885780636c3bbfd7146106b357806370a08231146106dc57610340565b80633bbac579146105b857806349bd5a5e146105f55780634a62bb651461062057610340565b80631a8145bb116102f257806323b872dd116102cc57806323b872dd146104e8578063275b56c514610525578063313ce56714610550578063395093511461057b57610340565b80631a8145bb146104695780631f3fed8f14610494578063203e727e146104bf57610340565b806306fdde0314610345578063095ea7b31461037057806310d5de53146103ad5780631694505e146103ea57806318160ddd146104155780631816467f1461044057610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610ced565b6040516103679190613f4b565b60405180910390f35b34801561037c57600080fd5b5061039760048036038101906103929190614015565b610d7f565b6040516103a49190614070565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf919061408b565b610d9d565b6040516103e19190614070565b60405180910390f35b3480156103f657600080fd5b506103ff610dbd565b60405161040c9190614117565b60405180910390f35b34801561042157600080fd5b5061042a610de1565b6040516104379190614141565b60405180910390f35b34801561044c57600080fd5b506104676004803603810190610462919061408b565b610deb565b005b34801561047557600080fd5b5061047e610f27565b60405161048b9190614141565b60405180910390f35b3480156104a057600080fd5b506104a9610f2d565b6040516104b69190614141565b60405180910390f35b3480156104cb57600080fd5b506104e660048036038101906104e1919061415c565b610f33565b005b3480156104f457600080fd5b5061050f600480360381019061050a9190614189565b611042565b60405161051c9190614070565b60405180910390f35b34801561053157600080fd5b5061053a611161565b60405161054791906141eb565b60405180910390f35b34801561055c57600080fd5b50610565611187565b6040516105729190614222565b60405180910390f35b34801561058757600080fd5b506105a2600480360381019061059d9190614015565b611190565b6040516105af9190614070565b60405180910390f35b3480156105c457600080fd5b506105df60048036038101906105da919061408b565b61123c565b6040516105ec9190614070565b60405180910390f35b34801561060157600080fd5b5061060a61125c565b60405161061791906141eb565b60405180910390f35b34801561062c57600080fd5b50610635611280565b6040516106429190614070565b60405180910390f35b34801561065757600080fd5b50610672600480360381019061066d919061408b565b611293565b60405161067f9190614070565b60405180910390f35b34801561069457600080fd5b5061069d6112e9565b6040516106aa9190614141565b60405180910390f35b3480156106bf57600080fd5b506106da60048036038101906106d59190614385565b6112ef565b005b3480156106e857600080fd5b5061070360048036038101906106fe919061408b565b611400565b6040516107109190614141565b60405180910390f35b34801561072557600080fd5b5061072e611448565b005b34801561073c57600080fd5b506107456114d0565b6040516107529190614070565b60405180910390f35b34801561076757600080fd5b50610782600480360381019061077d91906143fa565b611570565b005b34801561079057600080fd5b50610799611647565b6040516107a69190614141565b60405180910390f35b3480156107bb57600080fd5b506107d660048036038101906107d1919061443a565b61164d565b005b3480156107e457600080fd5b506107ff60048036038101906107fa919061415c565b611731565b005b34801561080d57600080fd5b506108166117e4565b005b34801561082457600080fd5b5061082d611897565b60405161083a91906141eb565b60405180910390f35b34801561084f57600080fd5b506108586118c1565b6040516108659190614141565b60405180910390f35b34801561087a57600080fd5b506108836118c7565b6040516108909190613f4b565b60405180910390f35b3480156108a557600080fd5b506108c060048036038101906108bb91906143fa565b611959565b005b3480156108ce57600080fd5b506108d7611a72565b6040516108e49190614141565b60405180910390f35b3480156108f957600080fd5b50610902611a78565b60405161090f9190614141565b60405180910390f35b34801561092457600080fd5b5061092d611a7e565b60405161093a9190614141565b60405180910390f35b34801561094f57600080fd5b5061096a60048036038101906109659190614015565b611a84565b6040516109779190614070565b60405180910390f35b34801561098c57600080fd5b506109a760048036038101906109a29190614015565b611b6f565b6040516109b49190614070565b60405180910390f35b3480156109c957600080fd5b506109e460048036038101906109df919061408b565b611b8d565b005b3480156109f257600080fd5b50610a0d6004803603810190610a08919061408b565b611cc9565b604051610a1a9190614070565b60405180910390f35b348015610a2f57600080fd5b50610a38611ce9565b604051610a459190614070565b60405180910390f35b348015610a5a57600080fd5b50610a756004803603810190610a7091906143fa565b611cfc565b005b348015610a8357600080fd5b50610a9e6004803603810190610a99919061443a565b611dd3565b005b348015610aac57600080fd5b50610ac76004803603810190610ac2919061415c565b611eb7565b005b348015610ad557600080fd5b50610ade611fc6565b604051610aeb9190614070565b60405180910390f35b348015610b0057600080fd5b50610b09611fd9565b604051610b169190614141565b60405180910390f35b348015610b2b57600080fd5b50610b466004803603810190610b41919061415c565b611fdf565b604051610b539190614070565b60405180910390f35b348015610b6857600080fd5b50610b836004803603810190610b7e9190614385565b612134565b005b348015610b9157600080fd5b50610b9a612327565b604051610ba79190614141565b60405180910390f35b348015610bbc57600080fd5b50610bd76004803603810190610bd2919061448d565b61232d565b604051610be49190614141565b60405180910390f35b348015610bf957600080fd5b50610c026123b4565b604051610c0f9190614141565b60405180910390f35b348015610c2457600080fd5b50610c2d6123ba565b604051610c3a9190614070565b60405180910390f35b348015610c4f57600080fd5b50610c5861245a565b604051610c659190614141565b60405180910390f35b348015610c7a57600080fd5b50610c956004803603810190610c90919061408b565b612460565b005b348015610ca357600080fd5b50610cac612558565b604051610cb99190614141565b60405180910390f35b348015610cce57600080fd5b50610cd761255e565b604051610ce49190614141565b60405180910390f35b606060038054610cfc906144fc565b80601f0160208091040260200160405190810160405280929190818152602001828054610d28906144fc565b8015610d755780601f10610d4a57610100808354040283529160200191610d75565b820191906000526020600020905b815481529060010190602001808311610d5857829003601f168201915b5050505050905090565b6000610d93610d8c612564565b848461256c565b6001905092915050565b601e6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610df3612564565b73ffffffffffffffffffffffffffffffffffffffff16610e11611897565b73ffffffffffffffffffffffffffffffffffffffff1614610e67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5e9061457a565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601b5481565b601a5481565b610f3b612564565b73ffffffffffffffffffffffffffffffffffffffff16610f59611897565b73ffffffffffffffffffffffffffffffffffffffff1614610faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa69061457a565b60405180910390fd5b670de0b6b3a76400006103e86001610fc5610de1565b610fcf91906145c9565b610fd99190614652565b610fe39190614652565b811015611025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101c906146f5565b60405180910390fd5b670de0b6b3a76400008161103991906145c9565b600c8190555050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061108e612564565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461114a5782811015611135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112c90614787565b60405180910390fd5b61114985611141612564565b85840361256c565b5b611155858585612737565b60019150509392505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012905090565b600061123261119d612564565b8484600160006111ab612564565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461122d91906147a7565b61256c565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b7f00000000000000000000000002e5976febdd31e62e198fb0ace130260940d4c981565b600f60009054906101000a900460ff1681565b6000601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60165481565b6112f7612564565b73ffffffffffffffffffffffffffffffffffffffff16611315611897565b73ffffffffffffffffffffffffffffffffffffffff161461136b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113629061457a565b60405180910390fd5b60005b81518110156113fc576000600660008484815181106113905761138f6147fd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806113f49061482c565b91505061136e565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611450612564565b73ffffffffffffffffffffffffffffffffffffffff1661146e611897565b73ffffffffffffffffffffffffffffffffffffffff16146114c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bb9061457a565b60405180910390fd5b6114ce60006134a9565b565b60006114da612564565b73ffffffffffffffffffffffffffffffffffffffff166114f8611897565b73ffffffffffffffffffffffffffffffffffffffff161461154e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115459061457a565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055506001905090565b611578612564565b73ffffffffffffffffffffffffffffffffffffffff16611596611897565b73ffffffffffffffffffffffffffffffffffffffff16146115ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e39061457a565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661168e612564565b73ffffffffffffffffffffffffffffffffffffffff16146116ae57600080fd5b8260138190555081601481905550806015819055506015546014546013546116d691906147a7565b6116e091906147a7565b601281905550600f601254111561172c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611723906148c1565b60405180910390fd5b505050565b611739612564565b73ffffffffffffffffffffffffffffffffffffffff16611757611897565b73ffffffffffffffffffffffffffffffffffffffff16146117ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a49061457a565b60405180910390fd5b6001600f60016101000a81548160ff0219169083151502179055506117db814261356f90919063ffffffff16565b60088190555050565b6117ec612564565b73ffffffffffffffffffffffffffffffffffffffff1661180a611897565b73ffffffffffffffffffffffffffffffffffffffff1614611860576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118579061457a565b60405180910390fd5b6001600f60016101000a81548160ff02191690831515021790555061188f60024261356f90919063ffffffff16565b600881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b6060600480546118d6906144fc565b80601f0160208091040260200160405190810160405280929190818152602001828054611902906144fc565b801561194f5780601f106119245761010080835404028352916020019161194f565b820191906000526020600020905b81548152906001019060200180831161193257829003601f168201915b5050505050905090565b611961612564565b73ffffffffffffffffffffffffffffffffffffffff1661197f611897565b73ffffffffffffffffffffffffffffffffffffffff16146119d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cc9061457a565b60405180910390fd5b7f00000000000000000000000002e5976febdd31e62e198fb0ace130260940d4c973ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5b90614953565b60405180910390fd5b611a6e8282613585565b5050565b60155481565b601c5481565b60195481565b60008060016000611a93612564565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611b50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b47906149e5565b60405180910390fd5b611b64611b5b612564565b8585840361256c565b600191505092915050565b6000611b83611b7c612564565b8484612737565b6001905092915050565b611b95612564565b73ffffffffffffffffffffffffffffffffffffffff16611bb3611897565b73ffffffffffffffffffffffffffffffffffffffff1614611c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c009061457a565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601f6020528060005260406000206000915054906101000a900460ff1681565b600f60019054906101000a900460ff1681565b611d04612564565b73ffffffffffffffffffffffffffffffffffffffff16611d22611897565b73ffffffffffffffffffffffffffffffffffffffff1614611d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6f9061457a565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e14612564565b73ffffffffffffffffffffffffffffffffffffffff1614611e3457600080fd5b826017819055508160188190555080601981905550601954601854601754611e5c91906147a7565b611e6691906147a7565b601681905550600f6016541115611eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea9906148c1565b60405180910390fd5b505050565b611ebf612564565b73ffffffffffffffffffffffffffffffffffffffff16611edd611897565b73ffffffffffffffffffffffffffffffffffffffff1614611f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2a9061457a565b60405180910390fd5b670de0b6b3a76400006103e86005611f49610de1565b611f5391906145c9565b611f5d9190614652565b611f679190614652565b811015611fa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa090614a77565b60405180910390fd5b670de0b6b3a764000081611fbd91906145c9565b600e8190555050565b601160009054906101000a900460ff1681565b600c5481565b6000611fe9612564565b73ffffffffffffffffffffffffffffffffffffffff16612007611897565b73ffffffffffffffffffffffffffffffffffffffff161461205d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120549061457a565b60405180910390fd5b620186a0600161206b610de1565b61207591906145c9565b61207f9190614652565b8210156120c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b890614b09565b60405180910390fd5b6103e860056120ce610de1565b6120d891906145c9565b6120e29190614652565b821115612124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211b90614b9b565b60405180910390fd5b81600d8190555060019050919050565b61213c612564565b73ffffffffffffffffffffffffffffffffffffffff1661215a611897565b73ffffffffffffffffffffffffffffffffffffffff16146121b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a79061457a565b60405180910390fd5b60005b8151811015612323577f00000000000000000000000002e5976febdd31e62e198fb0ace130260940d4c973ffffffffffffffffffffffffffffffffffffffff16828281518110612206576122056147fd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415801561229857507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16828281518110612277576122766147fd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b15612310576001600660008484815181106122b6576122b56147fd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b808061231b9061482c565b9150506121b3565b5050565b60125481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d5481565b60006123c4612564565b73ffffffffffffffffffffffffffffffffffffffff166123e2611897565b73ffffffffffffffffffffffffffffffffffffffff1614612438576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242f9061457a565b60405180910390fd5b6000601160006101000a81548160ff0219169083151502179055506001905090565b60145481565b612468612564565b73ffffffffffffffffffffffffffffffffffffffff16612486611897565b73ffffffffffffffffffffffffffffffffffffffff16146124dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d39061457a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561254c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254390614c2d565b60405180910390fd5b612555816134a9565b50565b60185481565b600e5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d390614cbf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561264c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264390614d51565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161272a9190614141565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279e90614de3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280e90614e75565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156128a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289b90614f2d565b60405180910390fd5b60008114156128be576128b9838360006135e0565b6134a4565b600854421015612921576001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600f60009054906101000a900460ff1615612fe45761293e611897565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129ac575061297c611897565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129e55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a1f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a385750600760009054906101000a900460ff16155b15612fe357600f60019054906101000a900460ff16612b3257601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612af25750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2890614f99565b60405180910390fd5b5b601160009054906101000a900460ff1615612cfa57612b4f611897565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612bd657507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c2e57507f00000000000000000000000002e5976febdd31e62e198fb0ace130260940d4c973ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612cf95743601060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cab90615051565b60405180910390fd5b43601060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d9d5750601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e4457600c54811115612de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dde906150e3565b60405180910390fd5b600e54612df383611400565b82612dfe91906147a7565b1115612e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e369061514f565b60405180910390fd5b612fe2565b601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ee75750601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f3657600c54811115612f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f28906151e1565b60405180910390fd5b612fe1565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612fe057600e54612f9383611400565b82612f9e91906147a7565b1115612fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fd69061514f565b60405180910390fd5b5b5b5b5b5b6000612fef30611400565b90506000600d5482101590508080156130155750600760009054906101000a900460ff16155b801561306b5750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130c15750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131175750601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561315b576001600760006101000a81548160ff02191690831515021790555061313f613861565b6000600760006101000a81548160ff0219169083151502179055505b6000600760009054906101000a900460ff16159050601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132115750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561321b57600090505b6000811561349457601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561327e57506000601654115b1561334b576132ab606461329d60165488613b4890919063ffffffff16565b613b5e90919063ffffffff16565b9050601654601854826132be91906145c9565b6132c89190614652565b601b60008282546132d991906147a7565b92505081905550601654601954826132f191906145c9565b6132fb9190614652565b601c600082825461330c91906147a7565b925050819055506016546017548261332491906145c9565b61332e9190614652565b601a600082825461333f91906147a7565b92505081905550613470565b601f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133a657506000601254115b1561346f576133d360646133c560125488613b4890919063ffffffff16565b613b5e90919063ffffffff16565b9050601254601454826133e691906145c9565b6133f09190614652565b601b600082825461340191906147a7565b925050819055506012546015548261341991906145c9565b6134239190614652565b601c600082825461343491906147a7565b925050819055506012546013548261344c91906145c9565b6134569190614652565b601a600082825461346791906147a7565b925050819055505b5b6000811115613485576134848730836135e0565b5b80856134919190615201565b94505b61349f8787876135e0565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000818361357d91906147a7565b905092915050565b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161364790614de3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156136c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136b790614e75565b60405180910390fd5b6136cb838383613b74565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613751576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613748906152a7565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546137e491906147a7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516138489190614141565b60405180910390a361385b848484613b79565b50505050565b600061386c30611400565b90506000601c54601a54601b5461388391906147a7565b61388d91906147a7565b905060008083148061389f5750600082145b156138ac57505050613b46565b6014600d546138bb91906145c9565b8311156138d4576014600d546138d191906145c9565b92505b6000600283601b54866138e791906145c9565b6138f19190614652565b6138fb9190614652565b905060006139128286613b7e90919063ffffffff16565b9050600047905061392282613b94565b60006139378247613b7e90919063ffffffff16565b9050600061396287613954601a5485613b4890919063ffffffff16565b613b5e90919063ffffffff16565b9050600061398d8861397f601c5486613b4890919063ffffffff16565b613b5e90919063ffffffff16565b9050600081838561399e9190615201565b6139a89190615201565b90506000601b819055506000601a819055506000601c81905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613a08906152f8565b60006040518083038185875af1925050503d8060008114613a45576040519150601f19603f3d011682016040523d82523d6000602084013e613a4a565b606091505b505080985050600087118015613a605750600081115b15613aad57613a6f8782613dd1565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601b54604051613aa49392919061530d565b60405180910390a15b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613af3906152f8565b60006040518083038185875af1925050503d8060008114613b30576040519150601f19603f3d011682016040523d82523d6000602084013e613b35565b606091505b505080985050505050505050505050505b565b60008183613b5691906145c9565b905092915050565b60008183613b6c9190614652565b905092915050565b505050565b505050565b60008183613b8c9190615201565b905092915050565b6000600267ffffffffffffffff811115613bb157613bb0614242565b5b604051908082528060200260200182016040528015613bdf5781602001602082028036833780820191505090505b5090503081600081518110613bf757613bf66147fd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cc09190615359565b81600181518110613cd457613cd36147fd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d39307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461256c565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613d9b95949392919061547f565b600060405180830381600087803b158015613db557600080fd5b505af1158015613dc9573d6000803e3d6000fd5b505050505050565b613dfc307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461256c565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613e46611897565b426040518863ffffffff1660e01b8152600401613e68969594939291906154d9565b60606040518083038185885af1158015613e86573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613eab919061554f565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613eec578082015181840152602081019050613ed1565b83811115613efb576000848401525b50505050565b6000601f19601f8301169050919050565b6000613f1d82613eb2565b613f278185613ebd565b9350613f37818560208601613ece565b613f4081613f01565b840191505092915050565b60006020820190508181036000830152613f658184613f12565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613fac82613f81565b9050919050565b613fbc81613fa1565b8114613fc757600080fd5b50565b600081359050613fd981613fb3565b92915050565b6000819050919050565b613ff281613fdf565b8114613ffd57600080fd5b50565b60008135905061400f81613fe9565b92915050565b6000806040838503121561402c5761402b613f77565b5b600061403a85828601613fca565b925050602061404b85828601614000565b9150509250929050565b60008115159050919050565b61406a81614055565b82525050565b60006020820190506140856000830184614061565b92915050565b6000602082840312156140a1576140a0613f77565b5b60006140af84828501613fca565b91505092915050565b6000819050919050565b60006140dd6140d86140d384613f81565b6140b8565b613f81565b9050919050565b60006140ef826140c2565b9050919050565b6000614101826140e4565b9050919050565b614111816140f6565b82525050565b600060208201905061412c6000830184614108565b92915050565b61413b81613fdf565b82525050565b60006020820190506141566000830184614132565b92915050565b60006020828403121561417257614171613f77565b5b600061418084828501614000565b91505092915050565b6000806000606084860312156141a2576141a1613f77565b5b60006141b086828701613fca565b93505060206141c186828701613fca565b92505060406141d286828701614000565b9150509250925092565b6141e581613fa1565b82525050565b600060208201905061420060008301846141dc565b92915050565b600060ff82169050919050565b61421c81614206565b82525050565b60006020820190506142376000830184614213565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61427a82613f01565b810181811067ffffffffffffffff8211171561429957614298614242565b5b80604052505050565b60006142ac613f6d565b90506142b88282614271565b919050565b600067ffffffffffffffff8211156142d8576142d7614242565b5b602082029050602081019050919050565b600080fd5b60006143016142fc846142bd565b6142a2565b90508083825260208201905060208402830185811115614324576143236142e9565b5b835b8181101561434d57806143398882613fca565b845260208401935050602081019050614326565b5050509392505050565b600082601f83011261436c5761436b61423d565b5b813561437c8482602086016142ee565b91505092915050565b60006020828403121561439b5761439a613f77565b5b600082013567ffffffffffffffff8111156143b9576143b8613f7c565b5b6143c584828501614357565b91505092915050565b6143d781614055565b81146143e257600080fd5b50565b6000813590506143f4816143ce565b92915050565b6000806040838503121561441157614410613f77565b5b600061441f85828601613fca565b9250506020614430858286016143e5565b9150509250929050565b60008060006060848603121561445357614452613f77565b5b600061446186828701614000565b935050602061447286828701614000565b925050604061448386828701614000565b9150509250925092565b600080604083850312156144a4576144a3613f77565b5b60006144b285828601613fca565b92505060206144c385828601613fca565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061451457607f821691505b60208210811415614528576145276144cd565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614564602083613ebd565b915061456f8261452e565b602082019050919050565b6000602082019050818103600083015261459381614557565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006145d482613fdf565b91506145df83613fdf565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146185761461761459a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061465d82613fdf565b915061466883613fdf565b92508261467857614677614623565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006146df602f83613ebd565b91506146ea82614683565b604082019050919050565b6000602082019050818103600083015261470e816146d2565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614771602883613ebd565b915061477c82614715565b604082019050919050565b600060208201905081810360008301526147a081614764565b9050919050565b60006147b282613fdf565b91506147bd83613fdf565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156147f2576147f161459a565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061483782613fdf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561486a5761486961459a565b5b600182019050919050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b60006148ab601d83613ebd565b91506148b682614875565b602082019050919050565b600060208201905081810360008301526148da8161489e565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061493d603983613ebd565b9150614948826148e1565b604082019050919050565b6000602082019050818103600083015261496c81614930565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006149cf602583613ebd565b91506149da82614973565b604082019050919050565b600060208201905081810360008301526149fe816149c2565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614a61602483613ebd565b9150614a6c82614a05565b604082019050919050565b60006020820190508181036000830152614a9081614a54565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614af3603583613ebd565b9150614afe82614a97565b604082019050919050565b60006020820190508181036000830152614b2281614ae6565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614b85603483613ebd565b9150614b9082614b29565b604082019050919050565b60006020820190508181036000830152614bb481614b78565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614c17602683613ebd565b9150614c2282614bbb565b604082019050919050565b60006020820190508181036000830152614c4681614c0a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614ca9602483613ebd565b9150614cb482614c4d565b604082019050919050565b60006020820190508181036000830152614cd881614c9c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d3b602283613ebd565b9150614d4682614cdf565b604082019050919050565b60006020820190508181036000830152614d6a81614d2e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614dcd602583613ebd565b9150614dd882614d71565b604082019050919050565b60006020820190508181036000830152614dfc81614dc0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614e5f602383613ebd565b9150614e6a82614e03565b604082019050919050565b60006020820190508181036000830152614e8e81614e52565b9050919050565b7f596f7572206164647265737320686173206265656e206d61726b65642061732060008201527f6120626f742f736e697065722c20796f752061726520756e61626c6520746f2060208201527f7472616e73666572206f7220737761702e000000000000000000000000000000604082015250565b6000614f17605183613ebd565b9150614f2282614e95565b606082019050919050565b60006020820190508181036000830152614f4681614f0a565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614f83601683613ebd565b9150614f8e82614f4d565b602082019050919050565b60006020820190508181036000830152614fb281614f76565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061503b604983613ebd565b915061504682614fb9565b606082019050919050565b6000602082019050818103600083015261506a8161502e565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006150cd603583613ebd565b91506150d882615071565b604082019050919050565b600060208201905081810360008301526150fc816150c0565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615139601383613ebd565b915061514482615103565b602082019050919050565b600060208201905081810360008301526151688161512c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006151cb603683613ebd565b91506151d68261516f565b604082019050919050565b600060208201905081810360008301526151fa816151be565b9050919050565b600061520c82613fdf565b915061521783613fdf565b92508282101561522a5761522961459a565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615291602683613ebd565b915061529c82615235565b604082019050919050565b600060208201905081810360008301526152c081615284565b9050919050565b600081905092915050565b50565b60006152e26000836152c7565b91506152ed826152d2565b600082019050919050565b6000615303826152d5565b9150819050919050565b60006060820190506153226000830186614132565b61532f6020830185614132565b61533c6040830184614132565b949350505050565b60008151905061535381613fb3565b92915050565b60006020828403121561536f5761536e613f77565b5b600061537d84828501615344565b91505092915050565b6000819050919050565b60006153ab6153a66153a184615386565b6140b8565b613fdf565b9050919050565b6153bb81615390565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6153f681613fa1565b82525050565b600061540883836153ed565b60208301905092915050565b6000602082019050919050565b600061542c826153c1565b61543681856153cc565b9350615441836153dd565b8060005b8381101561547257815161545988826153fc565b975061546483615414565b925050600181019050615445565b5085935050505092915050565b600060a0820190506154946000830188614132565b6154a160208301876153b2565b81810360408301526154b38186615421565b90506154c260608301856141dc565b6154cf6080830184614132565b9695505050505050565b600060c0820190506154ee60008301896141dc565b6154fb6020830188614132565b61550860408301876153b2565b61551560608301866153b2565b61552260808301856141dc565b61552f60a0830184614132565b979650505050505050565b60008151905061554981613fe9565b92915050565b60008060006060848603121561556857615567613f77565b5b60006155768682870161553a565b93505060206155878682870161553a565b92505060406155988682870161553a565b915050925092509256fea26469706673582212201ea03d31e406be9a8768f4b302a1e3c52dfdd952ee8c345e188a54922e2c9dd864736f6c634300080b0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000cd4bb2fc57a70aa05bad0d5c25045c28f97a5dbe

-----Decoded View---------------
Arg [0] : depAddr (address): 0xCD4bb2Fc57a70Aa05BAd0d5C25045C28f97a5dbe

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000cd4bb2fc57a70aa05bad0d5c25045c28f97a5dbe


Deployed Bytecode Sourcemap

11697:15466:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3001:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3915:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13086:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11776:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3322:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19472:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12865:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12825;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17047:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4092:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12061:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3221:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4673:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11881:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11834;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12221:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19640:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12679:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20056:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3438:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10480:103;;;;;;;;;;;;;:::i;:::-;;16257:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17510:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12571:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17666:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18956:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16072:130;;;;;;;;;;;;;:::i;:::-;;10257:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12714:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3109:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18640:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12645:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12905:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12790:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4896:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3573:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19255:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13308:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12261:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18500:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18079:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17287:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12485:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12098:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16653:382;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19777:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12537:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3756:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12140:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16443:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12608:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10591:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12752:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12180:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3001:100;3055:13;3088:5;3081:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3001:100;:::o;3915:169::-;3998:4;4015:39;4024:12;:10;:12::i;:::-;4038:7;4047:6;4015:8;:39::i;:::-;4072:4;4065:11;;3915:169;;;;:::o;13086:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;11776:51::-;;;:::o;3322:108::-;3383:7;3410:12;;3403:19;;3322:108;:::o;19472:157::-;10403:12;:10;:12::i;:::-;10392:23;;:7;:5;:7::i;:::-;:23;;;10384:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19579:9:::1;;;;;;;;;;;19551:38;;19568:9;19551:38;;;;;;;;;;;;19612:9;19600;;:21;;;;;;;;;;;;;;;;;;19472:157:::0;:::o;12865:33::-;;;;:::o;12825:::-;;;;:::o;17047:232::-;10403:12;:10;:12::i;:::-;10392:23;;:7;:5;:7::i;:::-;:23;;;10384:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17168:4:::1;17160;17156:1;17140:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;17139:33;;;;:::i;:::-;17129:6;:43;;17121:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;17267:4;17258:6;:13;;;;:::i;:::-;17235:20;:36;;;;17047:232:::0;:::o;4092:573::-;4232:4;4249:24;4276:11;:19;4288:6;4276:19;;;;;;;;;;;;;;;:33;4296:12;:10;:12::i;:::-;4276:33;;;;;;;;;;;;;;;;4249:60;;4344:17;4324:16;:37;4320:265;;4406:6;4386:16;:26;;4378:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4501:57;4510:6;4518:12;:10;:12::i;:::-;4551:6;4532:16;:25;4501:8;:57::i;:::-;4320:265;4597:36;4607:6;4615:9;4626:6;4597:9;:36::i;:::-;4653:4;4646:11;;;4092:573;;;;;:::o;12061:24::-;;;;;;;;;;;;;:::o;3221:93::-;3279:5;3304:2;3297:9;;3221:93;:::o;4673:215::-;4761:4;4778:80;4787:12;:10;:12::i;:::-;4801:7;4847:10;4810:11;:25;4822:12;:10;:12::i;:::-;4810:25;;;;;;;;;;;;;;;:34;4836:7;4810:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4778:8;:80::i;:::-;4876:4;4869:11;;4673:215;;;;:::o;11881:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;11834:::-;;;:::o;12221:33::-;;;;;;;;;;;;;:::o;19640:125::-;19705:4;19729:19;:28;19749:7;19729:28;;;;;;;;;;;;;;;;;;;;;;;;;19722:35;;19640:125;;;:::o;12679:28::-;;;;:::o;20056:168::-;10403:12;:10;:12::i;:::-;10392:23;;:7;:5;:7::i;:::-;:23;;;10384:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20134:6:::1;20129:88;20150:4;:11;20146:1;:15;20129:88;;;20200:5;20183;:14;20189:4;20194:1;20189:7;;;;;;;;:::i;:::-;;;;;;;;20183:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;20163:3;;;;;:::i;:::-;;;;20129:88;;;;20056:168:::0;:::o;3438:127::-;3512:7;3539:9;:18;3549:7;3539:18;;;;;;;;;;;;;;;;3532:25;;3438:127;;;:::o;10480:103::-;10403:12;:10;:12::i;:::-;10392:23;;:7;:5;:7::i;:::-;:23;;;10384:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10545:30:::1;10572:1;10545:18;:30::i;:::-;10480:103::o:0;16257:121::-;16309:4;10403:12;:10;:12::i;:::-;10392:23;;:7;:5;:7::i;:::-;:23;;;10384:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16343:5:::1;16326:14;;:22;;;;;;;;;;;;;;;;;;16366:4;16359:11;;16257:121:::0;:::o;17510:144::-;10403:12;:10;:12::i;:::-;10392:23;;:7;:5;:7::i;:::-;:23;;;10384:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17642:4:::1;17600:31;:39;17632:6;17600:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;17510:144:::0;;:::o;12571:30::-;;;;:::o;17666:404::-;17796:9;;;;;;;;;;;17780:25;;:12;:10;:12::i;:::-;:25;;;17772:34;;;;;;17835:13;17817:15;:31;;;;17877:13;17859:15;:31;;;;17913:7;17901:9;:19;;;;17982:9;;17964:15;;17946;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;17931:12;:60;;;;18026:2;18010:12;;:18;;18002:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;17666:404;;;:::o;18956:149::-;10403:12;:10;:12::i;:::-;10392:23;;:7;:5;:7::i;:::-;:23;;;10384:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19041:4:::1;19025:13;;:20;;;;;;;;;;;;;;;;;;19070:27;19090:6;19070:15;:19;;:27;;;;:::i;:::-;19056:11;:41;;;;18956:149:::0;:::o;16072:130::-;10403:12;:10;:12::i;:::-;10392:23;;:7;:5;:7::i;:::-;:23;;;10384:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16143:4:::1;16127:13;;:20;;;;;;;;;;;;;;;;;;16172:22;16192:1;16172:15;:19;;:22;;;;:::i;:::-;16158:11;:36;;;;16072:130::o:0;10257:87::-;10303:7;10330:6;;;;;;;;;;;10323:13;;10257:87;:::o;12714:31::-;;;;:::o;3109:104::-;3165:13;3198:7;3191:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3109:104;:::o;18640:244::-;10403:12;:10;:12::i;:::-;10392:23;;:7;:5;:7::i;:::-;:23;;;10384:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18747:13:::1;18739:21;;:4;:21;;;;18731:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;18835:41;18864:4;18870:5;18835:28;:41::i;:::-;18640:244:::0;;:::o;12645:24::-;;;;:::o;12905:27::-;;;;:::o;12790:25::-;;;;:::o;4896:413::-;4989:4;5006:24;5033:11;:25;5045:12;:10;:12::i;:::-;5033:25;;;;;;;;;;;;;;;:34;5059:7;5033:34;;;;;;;;;;;;;;;;5006:61;;5106:15;5086:16;:35;;5078:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;5199:67;5208:12;:10;:12::i;:::-;5222:7;5250:15;5231:16;:34;5199:8;:67::i;:::-;5297:4;5290:11;;;4896:413;;;;:::o;3573:175::-;3659:4;3676:42;3686:12;:10;:12::i;:::-;3700:9;3711:6;3676:9;:42::i;:::-;3736:4;3729:11;;3573:175;;;;:::o;19255:208::-;10403:12;:10;:12::i;:::-;10392:23;;:7;:5;:7::i;:::-;:23;;;10384:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19392:15:::1;;;;;;;;;;;19349:59;;19372:18;19349:59;;;;;;;;;;;;19437:18;19419:15;;:36;;;;;;;;;;;;;;;;;;19255:208:::0;:::o;13308:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;12261:33::-;;;;;;;;;;;;;:::o;18500:132::-;10403:12;:10;:12::i;:::-;10392:23;;:7;:5;:7::i;:::-;:23;;;10384:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18616:8:::1;18585:19;:28;18605:7;18585:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18500:132:::0;;:::o;18079:413::-;18210:9;;;;;;;;;;;18194:25;;:12;:10;:12::i;:::-;:25;;;18186:34;;;;;;18250:13;18231:16;:32;;;;18293:13;18274:16;:32;;;;18330:7;18317:10;:20;;;;18402:10;;18383:16;;18364;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;18348:13;:64;;;;18448:2;18431:13;;:19;;18423:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;18079:413;;;:::o;17287:211::-;10403:12;:10;:12::i;:::-;10392:23;;:7;:5;:7::i;:::-;:23;;;10384:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17409:4:::1;17403;17399:1;17383:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;17382:31;;;;:::i;:::-;17372:6;:41;;17364:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;17486:4;17477:6;:13;;;;:::i;:::-;17465:9;:25;;;;17287:211:::0;:::o;12485:39::-;;;;;;;;;;;;;:::o;12098:35::-;;;;:::o;16653:382::-;16734:4;10403:12;:10;:12::i;:::-;10392:23;;:7;:5;:7::i;:::-;:23;;;10384:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16791:6:::1;16787:1;16771:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;16758:9;:39;;16750:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;16906:4;16902:1;16886:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;16873:9;:37;;16865:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;16998:9;16977:18;:30;;;;17024:4;17017:11;;16653:382:::0;;;:::o;19777:267::-;10403:12;:10;:12::i;:::-;10392:23;;:7;:5;:7::i;:::-;:23;;;10384:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19852:6:::1;19847:190;19868:4;:11;19864:1;:15;19847:190;;;19916:13;19905:24;;:4;19910:1;19905:7;;;;;;;;:::i;:::-;;;;;;;;:24;;;;:63;;;;;19952:15;19933:35;;:4;19938:1;19933:7;;;;;;;;:::i;:::-;;;;;;;;:35;;;;19905:63;19901:125;;;20006:4;19989:5;:14;19995:4;20000:1;19995:7;;;;;;;;:::i;:::-;;;;;;;;19989:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;19901:125;19881:3;;;;;:::i;:::-;;;;19847:190;;;;19777:267:::0;:::o;12537:27::-;;;;:::o;3756:151::-;3845:7;3872:11;:18;3884:5;3872:18;;;;;;;;;;;;;;;:27;3891:7;3872:27;;;;;;;;;;;;;;;;3865:34;;3756:151;;;;:::o;12140:33::-;;;;:::o;16443:135::-;16503:4;10403:12;:10;:12::i;:::-;10392:23;;:7;:5;:7::i;:::-;:23;;;10384:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16543:5:::1;16520:20;;:28;;;;;;;;;;;;;;;;;;16566:4;16559:11;;16443:135:::0;:::o;12608:30::-;;;;:::o;10591:201::-;10403:12;:10;:12::i;:::-;10392:23;;:7;:5;:7::i;:::-;:23;;;10384:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10700:1:::1;10680:22;;:8;:22;;;;10672:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10756:28;10775:8;10756:18;:28::i;:::-;10591:201:::0;:::o;12752:31::-;;;;:::o;12180:24::-;;;;:::o;95:98::-;148:7;175:10;168:17;;95:98;:::o;7064:380::-;7217:1;7200:19;;:5;:19;;;;7192:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7298:1;7279:21;;:7;:21;;;;7271:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7382:6;7352:11;:18;7364:5;7352:18;;;;;;;;;;;;;;;:27;7371:7;7352:27;;;;;;;;;;;;;;;:36;;;;7420:7;7404:32;;7413:5;7404:32;;;7429:6;7404:32;;;;;;:::i;:::-;;;;;;;;7064:380;;;:::o;20232:4226::-;20380:1;20364:18;;:4;:18;;;;20356:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20457:1;20443:16;;:2;:16;;;;20435:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20519:5;:11;20525:4;20519:11;;;;;;;;;;;;;;;;;;;;;;;;;20518:12;20510:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;20652:1;20642:6;:11;20638:93;;;20670:28;20686:4;20692:2;20696:1;20670:15;:28::i;:::-;20713:7;;20638:93;20773:11;;20755:15;:29;20751:51;;;20798:4;20786:5;:9;20792:2;20786:9;;;;;;;;;;;;;;;;:16;;;;;;;;;;;;;;;;;;20751:51;20827:14;;;;;;;;;;;20823:1834;;;20888:7;:5;:7::i;:::-;20880:15;;:4;:15;;;;:49;;;;;20922:7;:5;:7::i;:::-;20916:13;;:2;:13;;;;20880:49;:86;;;;;20964:1;20950:16;;:2;:16;;;;20880:86;:128;;;;;21001:6;20987:21;;:2;:21;;;;20880:128;:159;;;;;21030:9;;;;;;;;;;;21029:10;20880:159;20858:1788;;;21079:13;;;;;;;;;;;21074:150;;21125:19;:25;21145:4;21125:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21154:19;:23;21174:2;21154:23;;;;;;;;;;;;;;;;;;;;;;;;;21125:52;21117:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;21074:150;21382:20;;;;;;;;;;;21378:423;;;21436:7;:5;:7::i;:::-;21430:13;;:2;:13;;;;:47;;;;;21461:15;21447:30;;:2;:30;;;;21430:47;:79;;;;;21495:13;21481:28;;:2;:28;;;;21430:79;21426:356;;;21587:12;21545:28;:39;21574:9;21545:39;;;;;;;;;;;;;;;;:54;21537:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;21746:12;21704:28;:39;21733:9;21704:39;;;;;;;;;;;;;;;:54;;;;21426:356;21378:423;21869:25;:31;21895:4;21869:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;21905:31;:35;21937:2;21905:35;;;;;;;;;;;;;;;;;;;;;;;;;21904:36;21869:71;21865:766;;;21983:20;;21973:6;:30;;21965:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;22118:9;;22101:13;22111:2;22101:9;:13::i;:::-;22092:6;:22;;;;:::i;:::-;:35;;22084:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21865:766;;;22244:25;:29;22270:2;22244:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;22278:31;:37;22310:4;22278:37;;;;;;;;;;;;;;;;;;;;;;;;;22277:38;22244:71;22240:391;;;22358:20;;22348:6;:30;;22340:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;22240:391;;;22485:31;:35;22517:2;22485:35;;;;;;;;;;;;;;;;;;;;;;;;;22480:151;;22578:9;;22561:13;22571:2;22561:9;:13::i;:::-;22552:6;:22;;;;:::i;:::-;:35;;22544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22480:151;22240:391;21865:766;20858:1788;20823:1834;22671:28;22702:24;22720:4;22702:9;:24::i;:::-;22671:55;;22737:12;22776:18;;22752:20;:42;;22737:57;;22825:7;:34;;;;;22850:9;;;;;;;;;;;22849:10;22825:34;:83;;;;;22877:25;:31;22903:4;22877:31;;;;;;;;;;;;;;;;;;;;;;;;;22876:32;22825:83;:126;;;;;22926:19;:25;22946:4;22926:25;;;;;;;;;;;;;;;;;;;;;;;;;22925:26;22825:126;:167;;;;;22969:19;:23;22989:2;22969:23;;;;;;;;;;;;;;;;;;;;;;;;;22968:24;22825:167;22807:297;;;23031:4;23019:9;;:16;;;;;;;;;;;;;;;;;;23050:10;:8;:10::i;:::-;23087:5;23075:9;;:17;;;;;;;;;;;;;;;;;;22807:297;23116:12;23132:9;;;;;;;;;;;23131:10;23116:25;;23243:19;:25;23263:4;23243:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23272:19;:23;23292:2;23272:23;;;;;;;;;;;;;;;;;;;;;;;;;23243:52;23239:73;;;23307:5;23297:15;;23239:73;23343:12;23448:7;23444:961;;;23500:25;:29;23526:2;23500:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;23549:1;23533:13;;:17;23500:50;23496:754;;;23577:34;23607:3;23577:25;23588:13;;23577:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;23570:41;;23678:13;;23659:16;;23652:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;23630:18;;:61;;;;;;;:::i;:::-;;;;;;;;23746:13;;23733:10;;23726:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;23710:12;;:49;;;;;;;:::i;:::-;;;;;;;;23826:13;;23807:16;;23800:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;23778:18;;:61;;;;;;;:::i;:::-;;;;;;;;23496:754;;;23900:25;:31;23926:4;23900:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;23950:1;23935:12;;:16;23900:51;23897:353;;;23979:33;24008:3;23979:24;23990:12;;23979:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;23972:40;;24078:12;;24060:15;;24053:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;24031:18;;:59;;;;;;;:::i;:::-;;;;;;;;24144:12;;24132:9;;24125:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;24109:12;;:47;;;;;;;:::i;:::-;;;;;;;;24222:12;;24204:15;;24197:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;24175:18;;:59;;;;;;;:::i;:::-;;;;;;;;23897:353;23496:754;24277:1;24270:4;:8;24266:91;;;24299:42;24315:4;24329;24336;24299:15;:42::i;:::-;24266:91;24389:4;24379:14;;;;;:::i;:::-;;;23444:961;24417:33;24433:4;24439:2;24443:6;24417:15;:33::i;:::-;20345:4113;;;;20232:4226;;;;:::o;10800:191::-;10874:16;10893:6;;;;;;;;;;;10874:25;;10919:8;10910:6;;:17;;;;;;;;;;;;;;;;;;10974:8;10943:40;;10964:8;10943:40;;;;;;;;;;;;10863:128;10800:191;:::o;8854:98::-;8912:7;8943:1;8939;:5;;;;:::i;:::-;8932:12;;8854:98;;;;:::o;19113:130::-;19230:5;19196:25;:31;19222:4;19196:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19113:130;;:::o;5317:733::-;5475:1;5457:20;;:6;:20;;;;5449:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5559:1;5538:23;;:9;:23;;;;5530:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5614:47;5635:6;5643:9;5654:6;5614:20;:47::i;:::-;5674:21;5698:9;:17;5708:6;5698:17;;;;;;;;;;;;;;;;5674:41;;5751:6;5734:13;:23;;5726:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5872:6;5856:13;:22;5836:9;:17;5846:6;5836:17;;;;;;;;;;;;;;;:42;;;;5924:6;5900:9;:20;5910:9;5900:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5965:9;5948:35;;5957:6;5948:35;;;5976:6;5948:35;;;;;;:::i;:::-;;;;;;;;5996:46;6016:6;6024:9;6035:6;5996:19;:46::i;:::-;5438:612;5317:733;;;:::o;25590:1570::-;25629:23;25655:24;25673:4;25655:9;:24::i;:::-;25629:50;;25690:25;25760:12;;25739:18;;25718;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;25690:82;;25783:12;25831:1;25812:15;:20;:46;;;;25857:1;25836:17;:22;25812:46;25809:60;;;25861:7;;;;;25809:60;25924:2;25903:18;;:23;;;;:::i;:::-;25885:15;:41;25882:111;;;25979:2;25958:18;;:23;;;;:::i;:::-;25940:41;;25882:111;26055:23;26140:1;26120:17;26099:18;;26081:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;26055:86;;26152:26;26181:36;26201:15;26181;:19;;:36;;;;:::i;:::-;26152:65;;26231:25;26259:21;26231:49;;26294:37;26312:18;26294:17;:37::i;:::-;26346:18;26367:44;26393:17;26367:21;:25;;:44;;;;:::i;:::-;26346:65;;26425:23;26451:57;26490:17;26451:34;26466:18;;26451:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;26425:83;;26519:17;26539:51;26572:17;26539:28;26554:12;;26539:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;26519:71;;26601:23;26658:9;26640:15;26627:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;26601:66;;26705:1;26684:18;:22;;;;26738:1;26717:18;:22;;;;26765:1;26750:12;:16;;;;26801:9;;;;;;;;;;;26793:23;;26824:9;26793:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26780:58;;;;;26873:1;26855:15;:19;:42;;;;;26896:1;26878:15;:19;26855:42;26852:211;;;26913:47;26927:15;26944;26913:13;:47::i;:::-;26980:71;26995:18;27015:15;27032:18;;26980:71;;;;;;;;:::i;:::-;;;;;;;;26852:211;27097:15;;;;;;;;;;;27089:29;;27126:21;27089:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27076:76;;;;;25618:1542;;;;;;;;;;25590:1570;:::o;9066:98::-;9124:7;9155:1;9151;:5;;;;:::i;:::-;9144:12;;9066:98;;;;:::o;9172:::-;9230:7;9261:1;9257;:5;;;;:::i;:::-;9250:12;;9172:98;;;;:::o;7452:125::-;;;;:::o;7585:124::-;;;;:::o;8960:98::-;9018:7;9049:1;9045;:5;;;;:::i;:::-;9038:12;;8960:98;;;;:::o;24466:590::-;24593:21;24631:1;24617:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24593:40;;24662:4;24644;24649:1;24644:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24688:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24678:4;24683:1;24678:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;24723:62;24740:4;24755:15;24773:11;24723:8;:62::i;:::-;24824:15;:66;;;24905:11;24931:1;24975:4;25002;25022:15;24824:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24522:534;24466:590;:::o;25068:514::-;25217:62;25234:4;25249:15;25267:11;25217:8;:62::i;:::-;25322:15;:31;;;25361:9;25394:4;25414:11;25440:1;25483;25526:7;:5;:7::i;:::-;25548:15;25322:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25068:514;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:153::-;4252:9;4285:37;4316:5;4285:37;:::i;:::-;4272:50;;4175:153;;;:::o;4334:185::-;4448:64;4506:5;4448:64;:::i;:::-;4443:3;4436:77;4334:185;;:::o;4525:276::-;4645:4;4683:2;4672:9;4668:18;4660:26;;4696:98;4791:1;4780:9;4776:17;4767:6;4696:98;:::i;:::-;4525:276;;;;:::o;4807:118::-;4894:24;4912:5;4894:24;:::i;:::-;4889:3;4882:37;4807:118;;:::o;4931:222::-;5024:4;5062:2;5051:9;5047:18;5039:26;;5075:71;5143:1;5132:9;5128:17;5119:6;5075:71;:::i;:::-;4931:222;;;;:::o;5159:329::-;5218:6;5267:2;5255:9;5246:7;5242:23;5238:32;5235:119;;;5273:79;;:::i;:::-;5235:119;5393:1;5418:53;5463:7;5454:6;5443:9;5439:22;5418:53;:::i;:::-;5408:63;;5364:117;5159:329;;;;:::o;5494:619::-;5571:6;5579;5587;5636:2;5624:9;5615:7;5611:23;5607:32;5604:119;;;5642:79;;:::i;:::-;5604:119;5762:1;5787:53;5832:7;5823:6;5812:9;5808:22;5787:53;:::i;:::-;5777:63;;5733:117;5889:2;5915:53;5960:7;5951:6;5940:9;5936:22;5915:53;:::i;:::-;5905:63;;5860:118;6017:2;6043:53;6088:7;6079:6;6068:9;6064:22;6043:53;:::i;:::-;6033:63;;5988:118;5494:619;;;;;:::o;6119:118::-;6206:24;6224:5;6206:24;:::i;:::-;6201:3;6194:37;6119:118;;:::o;6243:222::-;6336:4;6374:2;6363:9;6359:18;6351:26;;6387:71;6455:1;6444:9;6440:17;6431:6;6387:71;:::i;:::-;6243:222;;;;:::o;6471:86::-;6506:7;6546:4;6539:5;6535:16;6524:27;;6471:86;;;:::o;6563:112::-;6646:22;6662:5;6646:22;:::i;:::-;6641:3;6634:35;6563:112;;:::o;6681:214::-;6770:4;6808:2;6797:9;6793:18;6785:26;;6821:67;6885:1;6874:9;6870:17;6861:6;6821:67;:::i;:::-;6681:214;;;;:::o;6901:117::-;7010:1;7007;7000:12;7024:180;7072:77;7069:1;7062:88;7169:4;7166:1;7159:15;7193:4;7190:1;7183:15;7210:281;7293:27;7315:4;7293:27;:::i;:::-;7285:6;7281:40;7423:6;7411:10;7408:22;7387:18;7375:10;7372:34;7369:62;7366:88;;;7434:18;;:::i;:::-;7366:88;7474:10;7470:2;7463:22;7253:238;7210:281;;:::o;7497:129::-;7531:6;7558:20;;:::i;:::-;7548:30;;7587:33;7615:4;7607:6;7587:33;:::i;:::-;7497:129;;;:::o;7632:311::-;7709:4;7799:18;7791:6;7788:30;7785:56;;;7821:18;;:::i;:::-;7785:56;7871:4;7863:6;7859:17;7851:25;;7931:4;7925;7921:15;7913:23;;7632:311;;;:::o;7949:117::-;8058:1;8055;8048:12;8089:710;8185:5;8210:81;8226:64;8283:6;8226:64;:::i;:::-;8210:81;:::i;:::-;8201:90;;8311:5;8340:6;8333:5;8326:21;8374:4;8367:5;8363:16;8356:23;;8427:4;8419:6;8415:17;8407:6;8403:30;8456:3;8448:6;8445:15;8442:122;;;8475:79;;:::i;:::-;8442:122;8590:6;8573:220;8607:6;8602:3;8599:15;8573:220;;;8682:3;8711:37;8744:3;8732:10;8711:37;:::i;:::-;8706:3;8699:50;8778:4;8773:3;8769:14;8762:21;;8649:144;8633:4;8628:3;8624:14;8617:21;;8573:220;;;8577:21;8191:608;;8089:710;;;;;:::o;8822:370::-;8893:5;8942:3;8935:4;8927:6;8923:17;8919:27;8909:122;;8950:79;;:::i;:::-;8909:122;9067:6;9054:20;9092:94;9182:3;9174:6;9167:4;9159:6;9155:17;9092:94;:::i;:::-;9083:103;;8899:293;8822:370;;;;:::o;9198:539::-;9282:6;9331:2;9319:9;9310:7;9306:23;9302:32;9299:119;;;9337:79;;:::i;:::-;9299:119;9485:1;9474:9;9470:17;9457:31;9515:18;9507:6;9504:30;9501:117;;;9537:79;;:::i;:::-;9501:117;9642:78;9712:7;9703:6;9692:9;9688:22;9642:78;:::i;:::-;9632:88;;9428:302;9198:539;;;;:::o;9743:116::-;9813:21;9828:5;9813:21;:::i;:::-;9806:5;9803:32;9793:60;;9849:1;9846;9839:12;9793:60;9743:116;:::o;9865:133::-;9908:5;9946:6;9933:20;9924:29;;9962:30;9986:5;9962:30;:::i;:::-;9865:133;;;;:::o;10004:468::-;10069:6;10077;10126:2;10114:9;10105:7;10101:23;10097:32;10094:119;;;10132:79;;:::i;:::-;10094:119;10252:1;10277:53;10322:7;10313:6;10302:9;10298:22;10277:53;:::i;:::-;10267:63;;10223:117;10379:2;10405:50;10447:7;10438:6;10427:9;10423:22;10405:50;:::i;:::-;10395:60;;10350:115;10004:468;;;;;:::o;10478:619::-;10555:6;10563;10571;10620:2;10608:9;10599:7;10595:23;10591:32;10588:119;;;10626:79;;:::i;:::-;10588:119;10746:1;10771:53;10816:7;10807:6;10796:9;10792:22;10771:53;:::i;:::-;10761:63;;10717:117;10873:2;10899:53;10944:7;10935:6;10924:9;10920:22;10899:53;:::i;:::-;10889:63;;10844:118;11001:2;11027:53;11072:7;11063:6;11052:9;11048:22;11027:53;:::i;:::-;11017:63;;10972:118;10478:619;;;;;:::o;11103:474::-;11171:6;11179;11228:2;11216:9;11207:7;11203:23;11199:32;11196:119;;;11234:79;;:::i;:::-;11196:119;11354:1;11379:53;11424:7;11415:6;11404:9;11400:22;11379:53;:::i;:::-;11369:63;;11325:117;11481:2;11507:53;11552:7;11543:6;11532:9;11528:22;11507:53;:::i;:::-;11497:63;;11452:118;11103:474;;;;;:::o;11583:180::-;11631:77;11628:1;11621:88;11728:4;11725:1;11718:15;11752:4;11749:1;11742:15;11769:320;11813:6;11850:1;11844:4;11840:12;11830:22;;11897:1;11891:4;11887:12;11918:18;11908:81;;11974:4;11966:6;11962:17;11952:27;;11908:81;12036:2;12028:6;12025:14;12005:18;12002:38;11999:84;;;12055:18;;:::i;:::-;11999:84;11820:269;11769:320;;;:::o;12095:182::-;12235:34;12231:1;12223:6;12219:14;12212:58;12095:182;:::o;12283:366::-;12425:3;12446:67;12510:2;12505:3;12446:67;:::i;:::-;12439:74;;12522:93;12611:3;12522:93;:::i;:::-;12640:2;12635:3;12631:12;12624:19;;12283:366;;;:::o;12655:419::-;12821:4;12859:2;12848:9;12844:18;12836:26;;12908:9;12902:4;12898:20;12894:1;12883:9;12879:17;12872:47;12936:131;13062:4;12936:131;:::i;:::-;12928:139;;12655:419;;;:::o;13080:180::-;13128:77;13125:1;13118:88;13225:4;13222:1;13215:15;13249:4;13246:1;13239:15;13266:348;13306:7;13329:20;13347:1;13329:20;:::i;:::-;13324:25;;13363:20;13381:1;13363:20;:::i;:::-;13358:25;;13551:1;13483:66;13479:74;13476:1;13473:81;13468:1;13461:9;13454:17;13450:105;13447:131;;;13558:18;;:::i;:::-;13447:131;13606:1;13603;13599:9;13588:20;;13266:348;;;;:::o;13620:180::-;13668:77;13665:1;13658:88;13765:4;13762:1;13755:15;13789:4;13786:1;13779:15;13806:185;13846:1;13863:20;13881:1;13863:20;:::i;:::-;13858:25;;13897:20;13915:1;13897:20;:::i;:::-;13892:25;;13936:1;13926:35;;13941:18;;:::i;:::-;13926:35;13983:1;13980;13976:9;13971:14;;13806:185;;;;:::o;13997:234::-;14137:34;14133:1;14125:6;14121:14;14114:58;14206:17;14201:2;14193:6;14189:15;14182:42;13997:234;:::o;14237:366::-;14379:3;14400:67;14464:2;14459:3;14400:67;:::i;:::-;14393:74;;14476:93;14565:3;14476:93;:::i;:::-;14594:2;14589:3;14585:12;14578:19;;14237:366;;;:::o;14609:419::-;14775:4;14813:2;14802:9;14798:18;14790:26;;14862:9;14856:4;14852:20;14848:1;14837:9;14833:17;14826:47;14890:131;15016:4;14890:131;:::i;:::-;14882:139;;14609:419;;;:::o;15034:227::-;15174:34;15170:1;15162:6;15158:14;15151:58;15243:10;15238:2;15230:6;15226:15;15219:35;15034:227;:::o;15267:366::-;15409:3;15430:67;15494:2;15489:3;15430:67;:::i;:::-;15423:74;;15506:93;15595:3;15506:93;:::i;:::-;15624:2;15619:3;15615:12;15608:19;;15267:366;;;:::o;15639:419::-;15805:4;15843:2;15832:9;15828:18;15820:26;;15892:9;15886:4;15882:20;15878:1;15867:9;15863:17;15856:47;15920:131;16046:4;15920:131;:::i;:::-;15912:139;;15639:419;;;:::o;16064:305::-;16104:3;16123:20;16141:1;16123:20;:::i;:::-;16118:25;;16157:20;16175:1;16157:20;:::i;:::-;16152:25;;16311:1;16243:66;16239:74;16236:1;16233:81;16230:107;;;16317:18;;:::i;:::-;16230:107;16361:1;16358;16354:9;16347:16;;16064:305;;;;:::o;16375:180::-;16423:77;16420:1;16413:88;16520:4;16517:1;16510:15;16544:4;16541:1;16534:15;16561:233;16600:3;16623:24;16641:5;16623:24;:::i;:::-;16614:33;;16669:66;16662:5;16659:77;16656:103;;;16739:18;;:::i;:::-;16656:103;16786:1;16779:5;16775:13;16768:20;;16561:233;;;:::o;16800:179::-;16940:31;16936:1;16928:6;16924:14;16917:55;16800:179;:::o;16985:366::-;17127:3;17148:67;17212:2;17207:3;17148:67;:::i;:::-;17141:74;;17224:93;17313:3;17224:93;:::i;:::-;17342:2;17337:3;17333:12;17326:19;;16985:366;;;:::o;17357:419::-;17523:4;17561:2;17550:9;17546:18;17538:26;;17610:9;17604:4;17600:20;17596:1;17585:9;17581:17;17574:47;17638:131;17764:4;17638:131;:::i;:::-;17630:139;;17357:419;;;:::o;17782:244::-;17922:34;17918:1;17910:6;17906:14;17899:58;17991:27;17986:2;17978:6;17974:15;17967:52;17782:244;:::o;18032:366::-;18174:3;18195:67;18259:2;18254:3;18195:67;:::i;:::-;18188:74;;18271:93;18360:3;18271:93;:::i;:::-;18389:2;18384:3;18380:12;18373:19;;18032:366;;;:::o;18404:419::-;18570:4;18608:2;18597:9;18593:18;18585:26;;18657:9;18651:4;18647:20;18643:1;18632:9;18628:17;18621:47;18685:131;18811:4;18685:131;:::i;:::-;18677:139;;18404:419;;;:::o;18829:224::-;18969:34;18965:1;18957:6;18953:14;18946:58;19038:7;19033:2;19025:6;19021:15;19014:32;18829:224;:::o;19059:366::-;19201:3;19222:67;19286:2;19281:3;19222:67;:::i;:::-;19215:74;;19298:93;19387:3;19298:93;:::i;:::-;19416:2;19411:3;19407:12;19400:19;;19059:366;;;:::o;19431:419::-;19597:4;19635:2;19624:9;19620:18;19612:26;;19684:9;19678:4;19674:20;19670:1;19659:9;19655:17;19648:47;19712:131;19838:4;19712:131;:::i;:::-;19704:139;;19431:419;;;:::o;19856:223::-;19996:34;19992:1;19984:6;19980:14;19973:58;20065:6;20060:2;20052:6;20048:15;20041:31;19856:223;:::o;20085:366::-;20227:3;20248:67;20312:2;20307:3;20248:67;:::i;:::-;20241:74;;20324:93;20413:3;20324:93;:::i;:::-;20442:2;20437:3;20433:12;20426:19;;20085:366;;;:::o;20457:419::-;20623:4;20661:2;20650:9;20646:18;20638:26;;20710:9;20704:4;20700:20;20696:1;20685:9;20681:17;20674:47;20738:131;20864:4;20738:131;:::i;:::-;20730:139;;20457:419;;;:::o;20882:240::-;21022:34;21018:1;21010:6;21006:14;20999:58;21091:23;21086:2;21078:6;21074:15;21067:48;20882:240;:::o;21128:366::-;21270:3;21291:67;21355:2;21350:3;21291:67;:::i;:::-;21284:74;;21367:93;21456:3;21367:93;:::i;:::-;21485:2;21480:3;21476:12;21469:19;;21128:366;;;:::o;21500:419::-;21666:4;21704:2;21693:9;21689:18;21681:26;;21753:9;21747:4;21743:20;21739:1;21728:9;21724:17;21717:47;21781:131;21907:4;21781:131;:::i;:::-;21773:139;;21500:419;;;:::o;21925:239::-;22065:34;22061:1;22053:6;22049:14;22042:58;22134:22;22129:2;22121:6;22117:15;22110:47;21925:239;:::o;22170:366::-;22312:3;22333:67;22397:2;22392:3;22333:67;:::i;:::-;22326:74;;22409:93;22498:3;22409:93;:::i;:::-;22527:2;22522:3;22518:12;22511:19;;22170:366;;;:::o;22542:419::-;22708:4;22746:2;22735:9;22731:18;22723:26;;22795:9;22789:4;22785:20;22781:1;22770:9;22766:17;22759:47;22823:131;22949:4;22823:131;:::i;:::-;22815:139;;22542:419;;;:::o;22967:225::-;23107:34;23103:1;23095:6;23091:14;23084:58;23176:8;23171:2;23163:6;23159:15;23152:33;22967:225;:::o;23198:366::-;23340:3;23361:67;23425:2;23420:3;23361:67;:::i;:::-;23354:74;;23437:93;23526:3;23437:93;:::i;:::-;23555:2;23550:3;23546:12;23539:19;;23198:366;;;:::o;23570:419::-;23736:4;23774:2;23763:9;23759:18;23751:26;;23823:9;23817:4;23813:20;23809:1;23798:9;23794:17;23787:47;23851:131;23977:4;23851:131;:::i;:::-;23843:139;;23570:419;;;:::o;23995:223::-;24135:34;24131:1;24123:6;24119:14;24112:58;24204:6;24199:2;24191:6;24187:15;24180:31;23995:223;:::o;24224:366::-;24366:3;24387:67;24451:2;24446:3;24387:67;:::i;:::-;24380:74;;24463:93;24552:3;24463:93;:::i;:::-;24581:2;24576:3;24572:12;24565:19;;24224:366;;;:::o;24596:419::-;24762:4;24800:2;24789:9;24785:18;24777:26;;24849:9;24843:4;24839:20;24835:1;24824:9;24820:17;24813:47;24877:131;25003:4;24877:131;:::i;:::-;24869:139;;24596:419;;;:::o;25021:221::-;25161:34;25157:1;25149:6;25145:14;25138:58;25230:4;25225:2;25217:6;25213:15;25206:29;25021:221;:::o;25248:366::-;25390:3;25411:67;25475:2;25470:3;25411:67;:::i;:::-;25404:74;;25487:93;25576:3;25487:93;:::i;:::-;25605:2;25600:3;25596:12;25589:19;;25248:366;;;:::o;25620:419::-;25786:4;25824:2;25813:9;25809:18;25801:26;;25873:9;25867:4;25863:20;25859:1;25848:9;25844:17;25837:47;25901:131;26027:4;25901:131;:::i;:::-;25893:139;;25620:419;;;:::o;26045:224::-;26185:34;26181:1;26173:6;26169:14;26162:58;26254:7;26249:2;26241:6;26237:15;26230:32;26045:224;:::o;26275:366::-;26417:3;26438:67;26502:2;26497:3;26438:67;:::i;:::-;26431:74;;26514:93;26603:3;26514:93;:::i;:::-;26632:2;26627:3;26623:12;26616:19;;26275:366;;;:::o;26647:419::-;26813:4;26851:2;26840:9;26836:18;26828:26;;26900:9;26894:4;26890:20;26886:1;26875:9;26871:17;26864:47;26928:131;27054:4;26928:131;:::i;:::-;26920:139;;26647:419;;;:::o;27072:222::-;27212:34;27208:1;27200:6;27196:14;27189:58;27281:5;27276:2;27268:6;27264:15;27257:30;27072:222;:::o;27300:366::-;27442:3;27463:67;27527:2;27522:3;27463:67;:::i;:::-;27456:74;;27539:93;27628:3;27539:93;:::i;:::-;27657:2;27652:3;27648:12;27641:19;;27300:366;;;:::o;27672:419::-;27838:4;27876:2;27865:9;27861:18;27853:26;;27925:9;27919:4;27915:20;27911:1;27900:9;27896:17;27889:47;27953:131;28079:4;27953:131;:::i;:::-;27945:139;;27672:419;;;:::o;28097:305::-;28237:34;28233:1;28225:6;28221:14;28214:58;28306:34;28301:2;28293:6;28289:15;28282:59;28375:19;28370:2;28362:6;28358:15;28351:44;28097:305;:::o;28408:366::-;28550:3;28571:67;28635:2;28630:3;28571:67;:::i;:::-;28564:74;;28647:93;28736:3;28647:93;:::i;:::-;28765:2;28760:3;28756:12;28749:19;;28408:366;;;:::o;28780:419::-;28946:4;28984:2;28973:9;28969:18;28961:26;;29033:9;29027:4;29023:20;29019:1;29008:9;29004:17;28997:47;29061:131;29187:4;29061:131;:::i;:::-;29053:139;;28780:419;;;:::o;29205:172::-;29345:24;29341:1;29333:6;29329:14;29322:48;29205:172;:::o;29383:366::-;29525:3;29546:67;29610:2;29605:3;29546:67;:::i;:::-;29539:74;;29622:93;29711:3;29622:93;:::i;:::-;29740:2;29735:3;29731:12;29724:19;;29383:366;;;:::o;29755:419::-;29921:4;29959:2;29948:9;29944:18;29936:26;;30008:9;30002:4;29998:20;29994:1;29983:9;29979:17;29972:47;30036:131;30162:4;30036:131;:::i;:::-;30028:139;;29755:419;;;:::o;30180:297::-;30320:34;30316:1;30308:6;30304:14;30297:58;30389:34;30384:2;30376:6;30372:15;30365:59;30458:11;30453:2;30445:6;30441:15;30434:36;30180:297;:::o;30483:366::-;30625:3;30646:67;30710:2;30705:3;30646:67;:::i;:::-;30639:74;;30722:93;30811:3;30722:93;:::i;:::-;30840:2;30835:3;30831:12;30824:19;;30483:366;;;:::o;30855:419::-;31021:4;31059:2;31048:9;31044:18;31036:26;;31108:9;31102:4;31098:20;31094:1;31083:9;31079:17;31072:47;31136:131;31262:4;31136:131;:::i;:::-;31128:139;;30855:419;;;:::o;31280:240::-;31420:34;31416:1;31408:6;31404:14;31397:58;31489:23;31484:2;31476:6;31472:15;31465:48;31280:240;:::o;31526:366::-;31668:3;31689:67;31753:2;31748:3;31689:67;:::i;:::-;31682:74;;31765:93;31854:3;31765:93;:::i;:::-;31883:2;31878:3;31874:12;31867:19;;31526:366;;;:::o;31898:419::-;32064:4;32102:2;32091:9;32087:18;32079:26;;32151:9;32145:4;32141:20;32137:1;32126:9;32122:17;32115:47;32179:131;32305:4;32179:131;:::i;:::-;32171:139;;31898:419;;;:::o;32323:169::-;32463:21;32459:1;32451:6;32447:14;32440:45;32323:169;:::o;32498:366::-;32640:3;32661:67;32725:2;32720:3;32661:67;:::i;:::-;32654:74;;32737:93;32826:3;32737:93;:::i;:::-;32855:2;32850:3;32846:12;32839:19;;32498:366;;;:::o;32870:419::-;33036:4;33074:2;33063:9;33059:18;33051:26;;33123:9;33117:4;33113:20;33109:1;33098:9;33094:17;33087:47;33151:131;33277:4;33151:131;:::i;:::-;33143:139;;32870:419;;;:::o;33295:241::-;33435:34;33431:1;33423:6;33419:14;33412:58;33504:24;33499:2;33491:6;33487:15;33480:49;33295:241;:::o;33542:366::-;33684:3;33705:67;33769:2;33764:3;33705:67;:::i;:::-;33698:74;;33781:93;33870:3;33781:93;:::i;:::-;33899:2;33894:3;33890:12;33883:19;;33542:366;;;:::o;33914:419::-;34080:4;34118:2;34107:9;34103:18;34095:26;;34167:9;34161:4;34157:20;34153:1;34142:9;34138:17;34131:47;34195:131;34321:4;34195:131;:::i;:::-;34187:139;;33914:419;;;:::o;34339:191::-;34379:4;34399:20;34417:1;34399:20;:::i;:::-;34394:25;;34433:20;34451:1;34433:20;:::i;:::-;34428:25;;34472:1;34469;34466:8;34463:34;;;34477:18;;:::i;:::-;34463:34;34522:1;34519;34515:9;34507:17;;34339:191;;;;:::o;34536:225::-;34676:34;34672:1;34664:6;34660:14;34653:58;34745:8;34740:2;34732:6;34728:15;34721:33;34536:225;:::o;34767:366::-;34909:3;34930:67;34994:2;34989:3;34930:67;:::i;:::-;34923:74;;35006:93;35095:3;35006:93;:::i;:::-;35124:2;35119:3;35115:12;35108:19;;34767:366;;;:::o;35139:419::-;35305:4;35343:2;35332:9;35328:18;35320:26;;35392:9;35386:4;35382:20;35378:1;35367:9;35363:17;35356:47;35420:131;35546:4;35420:131;:::i;:::-;35412:139;;35139:419;;;:::o;35564:147::-;35665:11;35702:3;35687:18;;35564:147;;;;:::o;35717:114::-;;:::o;35837:398::-;35996:3;36017:83;36098:1;36093:3;36017:83;:::i;:::-;36010:90;;36109:93;36198:3;36109:93;:::i;:::-;36227:1;36222:3;36218:11;36211:18;;35837:398;;;:::o;36241:379::-;36425:3;36447:147;36590:3;36447:147;:::i;:::-;36440:154;;36611:3;36604:10;;36241:379;;;:::o;36626:442::-;36775:4;36813:2;36802:9;36798:18;36790:26;;36826:71;36894:1;36883:9;36879:17;36870:6;36826:71;:::i;:::-;36907:72;36975:2;36964:9;36960:18;36951:6;36907:72;:::i;:::-;36989;37057:2;37046:9;37042:18;37033:6;36989:72;:::i;:::-;36626:442;;;;;;:::o;37074:143::-;37131:5;37162:6;37156:13;37147:22;;37178:33;37205:5;37178:33;:::i;:::-;37074:143;;;;:::o;37223:351::-;37293:6;37342:2;37330:9;37321:7;37317:23;37313:32;37310:119;;;37348:79;;:::i;:::-;37310:119;37468:1;37493:64;37549:7;37540:6;37529:9;37525:22;37493:64;:::i;:::-;37483:74;;37439:128;37223:351;;;;:::o;37580:85::-;37625:7;37654:5;37643:16;;37580:85;;;:::o;37671:158::-;37729:9;37762:61;37780:42;37789:32;37815:5;37789:32;:::i;:::-;37780:42;:::i;:::-;37762:61;:::i;:::-;37749:74;;37671:158;;;:::o;37835:147::-;37930:45;37969:5;37930:45;:::i;:::-;37925:3;37918:58;37835:147;;:::o;37988:114::-;38055:6;38089:5;38083:12;38073:22;;37988:114;;;:::o;38108:184::-;38207:11;38241:6;38236:3;38229:19;38281:4;38276:3;38272:14;38257:29;;38108:184;;;;:::o;38298:132::-;38365:4;38388:3;38380:11;;38418:4;38413:3;38409:14;38401:22;;38298:132;;;:::o;38436:108::-;38513:24;38531:5;38513:24;:::i;:::-;38508:3;38501:37;38436:108;;:::o;38550:179::-;38619:10;38640:46;38682:3;38674:6;38640:46;:::i;:::-;38718:4;38713:3;38709:14;38695:28;;38550:179;;;;:::o;38735:113::-;38805:4;38837;38832:3;38828:14;38820:22;;38735:113;;;:::o;38884:732::-;39003:3;39032:54;39080:5;39032:54;:::i;:::-;39102:86;39181:6;39176:3;39102:86;:::i;:::-;39095:93;;39212:56;39262:5;39212:56;:::i;:::-;39291:7;39322:1;39307:284;39332:6;39329:1;39326:13;39307:284;;;39408:6;39402:13;39435:63;39494:3;39479:13;39435:63;:::i;:::-;39428:70;;39521:60;39574:6;39521:60;:::i;:::-;39511:70;;39367:224;39354:1;39351;39347:9;39342:14;;39307:284;;;39311:14;39607:3;39600:10;;39008:608;;;38884:732;;;;:::o;39622:831::-;39885:4;39923:3;39912:9;39908:19;39900:27;;39937:71;40005:1;39994:9;39990:17;39981:6;39937:71;:::i;:::-;40018:80;40094:2;40083:9;40079:18;40070:6;40018:80;:::i;:::-;40145:9;40139:4;40135:20;40130:2;40119:9;40115:18;40108:48;40173:108;40276:4;40267:6;40173:108;:::i;:::-;40165:116;;40291:72;40359:2;40348:9;40344:18;40335:6;40291:72;:::i;:::-;40373:73;40441:3;40430:9;40426:19;40417:6;40373:73;:::i;:::-;39622:831;;;;;;;;:::o;40459:807::-;40708:4;40746:3;40735:9;40731:19;40723:27;;40760:71;40828:1;40817:9;40813:17;40804:6;40760:71;:::i;:::-;40841:72;40909:2;40898:9;40894:18;40885:6;40841:72;:::i;:::-;40923:80;40999:2;40988:9;40984:18;40975:6;40923:80;:::i;:::-;41013;41089:2;41078:9;41074:18;41065:6;41013:80;:::i;:::-;41103:73;41171:3;41160:9;41156:19;41147:6;41103:73;:::i;:::-;41186;41254:3;41243:9;41239:19;41230:6;41186:73;:::i;:::-;40459:807;;;;;;;;;:::o;41272:143::-;41329:5;41360:6;41354:13;41345:22;;41376:33;41403:5;41376:33;:::i;:::-;41272:143;;;;:::o;41421:663::-;41509:6;41517;41525;41574:2;41562:9;41553:7;41549:23;41545:32;41542:119;;;41580:79;;:::i;:::-;41542:119;41700:1;41725:64;41781:7;41772:6;41761:9;41757:22;41725:64;:::i;:::-;41715:74;;41671:128;41838:2;41864:64;41920:7;41911:6;41900:9;41896:22;41864:64;:::i;:::-;41854:74;;41809:129;41977:2;42003:64;42059:7;42050:6;42039:9;42035:22;42003:64;:::i;:::-;41993:74;;41948:129;41421:663;;;;;:::o

Swarm Source

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