ETH Price: $3,330.21 (-0.90%)

Token

Kill Kenny (KILLKENNY)
 

Overview

Max Total Supply

1,000,000,000,000,000 KILLKENNY

Holders

164

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
Uniswap V2: KILLKENNY
Balance
0.000242114 KILLKENNY

Value
$0.00
0x8a5dc20ba6e82dfa31d9dd073538c6443bf0f978
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:
kenny

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-09-28
*/

/**

SPDX-License-Identifier: UNLICENSED 
*/
pragma solidity ^0.8.4;

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

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

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if(a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

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

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

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

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

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

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

}  

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    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);
}

contract kenny is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    address[] private _excluded;
    mapping (address => bool) private _isBlackListedBot;
    address[] private _blackListedBots;
    
    mapping (address => User) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1e15 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    string private constant _name = unicode"Kill Kenny";
    string private constant _symbol = unicode"KILLKENNY";
    uint8 private constant _decimals = 9;
    uint256 private _taxFee = 0;
    uint256 private _teamFee = 8;
    uint256 private _launchTime;
    uint256 private _previousTaxFee = _taxFee;
    uint256 private _previousteamFee = _teamFee;
    uint256 private _maxBuyAmount;
    address payable private _FeeAddress;
    address payable private _FeeAddress2;
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private _cooldownEnabled = true;
    bool private inSwap = false;
    uint256 private buyLimitEnd;
    struct User {
        uint256 buy;
        uint256 sell;
        bool exists;
    }

    event MaxBuyAmountUpdated(uint _maxBuyAmount);
    event CooldownEnabledUpdated(bool _cooldown);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor (address payable FeeAddress, address payable FeeAddress2) {
        _FeeAddress = FeeAddress;
        _FeeAddress2 = FeeAddress2;
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        
        _isExcludedFromFee[FeeAddress] = true;
        _isExcludedFromFee[FeeAddress2] = true;
        
        _isBlackListedBot[address(0x66f049111958809841Bbe4b81c034Da2D953AA0c)] = true;
        _blackListedBots.push(address(0x66f049111958809841Bbe4b81c034Da2D953AA0c));
        
        _isBlackListedBot[address(0x000000005736775Feb0C8568e7DEe77222a26880)] = true;
        _blackListedBots.push(address(0x000000005736775Feb0C8568e7DEe77222a26880));
        
        _isBlackListedBot[address(0x00000000003b3cc22aF3aE1EAc0440BcEe416B40)] = true;
        _blackListedBots.push(address(0x00000000003b3cc22aF3aE1EAc0440BcEe416B40));
        
        _isBlackListedBot[address(0xD8E83d3d1a91dFefafd8b854511c44685a20fa3D)] = true;
        _blackListedBots.push(address(0xD8E83d3d1a91dFefafd8b854511c44685a20fa3D));

        _isBlackListedBot[address(0xbcC7f6355bc08f6b7d3a41322CE4627118314763)] = true;
        _blackListedBots.push(address(0xbcC7f6355bc08f6b7d3a41322CE4627118314763));

        _isBlackListedBot[address(0x1d6E8BAC6EA3730825bde4B005ed7B2B39A2932d)] = true;
        _blackListedBots.push(address(0x1d6E8BAC6EA3730825bde4B005ed7B2B39A2932d));

        _isBlackListedBot[address(0x000000000035B5e5ad9019092C665357240f594e)] = true;
        _blackListedBots.push(address(0x000000000035B5e5ad9019092C665357240f594e));

        _isBlackListedBot[address(0x1315c6C26123383a2Eb369a53Fb72C4B9f227EeC)] = true;
        _blackListedBots.push(address(0x1315c6C26123383a2Eb369a53Fb72C4B9f227EeC));

        _isBlackListedBot[address(0xD8E83d3d1a91dFefafd8b854511c44685a20fa3D)] = true;
        _blackListedBots.push(address(0xD8E83d3d1a91dFefafd8b854511c44685a20fa3D));

        _isBlackListedBot[address(0x90484Bb9bc05fD3B5FF1fe412A492676cd81790C)] = true;
        _blackListedBots.push(address(0x90484Bb9bc05fD3B5FF1fe412A492676cd81790C));

        _isBlackListedBot[address(0xA62c5bA4D3C95b3dDb247EAbAa2C8E56BAC9D6dA)] = true;
        _blackListedBots.push(address(0xA62c5bA4D3C95b3dDb247EAbAa2C8E56BAC9D6dA));
        
        _isBlackListedBot[address(0x42c1b5e32d625b6C618A02ae15189035e0a92FE7)] = true;
        _blackListedBots.push(address(0x42c1b5e32d625b6C618A02ae15189035e0a92FE7));

        _isBlackListedBot[address(0xA94E56EFc384088717bb6edCccEc289A72Ec2381)] = true;
        _blackListedBots.push(address(0xA94E56EFc384088717bb6edCccEc289A72Ec2381));

        _isBlackListedBot[address(0xf13FFadd3682feD42183AF8F3f0b409A9A0fdE31)] = true;
        _blackListedBots.push(address(0xf13FFadd3682feD42183AF8F3f0b409A9A0fdE31));

        _isBlackListedBot[address(0x376a6EFE8E98f3ae2af230B3D45B8Cc5e962bC27)] = true;
        _blackListedBots.push(address(0x376a6EFE8E98f3ae2af230B3D45B8Cc5e962bC27));

        _isBlackListedBot[address(0xEE2A9147ffC94A73f6b945A6DB532f8466B78830)] = true;
        _blackListedBots.push(address(0xEE2A9147ffC94A73f6b945A6DB532f8466B78830));

        _isBlackListedBot[address(0xdE2a6d80989C3992e11B155430c3F59792FF8Bb7)] = true;
        _blackListedBots.push(address(0xdE2a6d80989C3992e11B155430c3F59792FF8Bb7));

        _isBlackListedBot[address(0x1e62A12D4981e428D3F4F28DF261fdCB2CE743Da)] = true;
        _blackListedBots.push(address(0x1e62A12D4981e428D3F4F28DF261fdCB2CE743Da));

        _isBlackListedBot[address(0x5136a9A5D077aE4247C7706b577F77153C32A01C)] = true;
        _blackListedBots.push(address(0x5136a9A5D077aE4247C7706b577F77153C32A01C));

        _isBlackListedBot[address(0x0E388888309d64e97F97a4740EC9Ed3DADCA71be)] = true;
        _blackListedBots.push(address(0x0E388888309d64e97F97a4740EC9Ed3DADCA71be));

        _isBlackListedBot[address(0x255D9BA73a51e02d26a5ab90d534DB8a80974a12)] = true;
        _blackListedBots.push(address(0x255D9BA73a51e02d26a5ab90d534DB8a80974a12));

        _isBlackListedBot[address(0xA682A66Ea044Aa1DC3EE315f6C36414F73054b47)] = true;
        _blackListedBots.push(address(0xA682A66Ea044Aa1DC3EE315f6C36414F73054b47));

        _isBlackListedBot[address(0x80e09203480A49f3Cf30a4714246f7af622ba470)] = true;
        _blackListedBots.push(address(0x80e09203480A49f3Cf30a4714246f7af622ba470));

        _isBlackListedBot[address(0x12e48B837AB8cB9104C5B95700363547bA81c8a4)] = true;
        _blackListedBots.push(address(0x12e48B837AB8cB9104C5B95700363547bA81c8a4));

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

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

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

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

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

    function tokenFromReflection(uint256 rAmount) private view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if(_taxFee == 0 && _teamFee == 0) return;
        _previousTaxFee = _taxFee;
        _previousteamFee = _teamFee;
        _taxFee = 0;
        _teamFee = 0;
    }
    
    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _teamFee = _previousteamFee;
    }

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!_isBlackListedBot[to], "You have no power here!");
        require(!_isBlackListedBot[msg.sender], "You have no power here!");

        if(from != owner() && to != owner()) {
            if(_cooldownEnabled) {
                if(!cooldown[msg.sender].exists) {
                    cooldown[msg.sender] = User(0,0,true);
                }
            }

            // buy
            if(from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
                require(tradingOpen, "Trading not yet enabled.");
                _taxFee = 0;
                _teamFee = 8;
                if(_cooldownEnabled) {
                    if(buyLimitEnd > block.timestamp) {
                        require(amount <= _maxBuyAmount);
                        require(cooldown[to].buy < block.timestamp, "Your buy cooldown has not expired.");
                        cooldown[to].buy = block.timestamp + (15 seconds);
                    }
                }
            }

            // sell
            if (to == uniswapV2Pair && from != address(uniswapV2Router) && ! _isExcludedFromFee[from]) {
                _taxFee = 0;
                _teamFee = 8;
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            
            if(!inSwap && from != uniswapV2Pair && tradingOpen) {
                if(contractTokenBalance > 0) {
                    swapTokensForEth(contractTokenBalance);
                }
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
        bool takeFee = true;

        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
            takeFee = false;
        }
        
        _tokenTransfer(from,to,amount,takeFee);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
        
    function sendETHToFee(uint256 amount) private {
        _FeeAddress.transfer(amount.div(2));
        _FeeAddress2.transfer(amount.div(2));
    }
    
    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if(!takeFee)
            removeAllFee();
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
        if(!takeFee)
            restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);    
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _taxFee, _teamFee);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(uint256 tAmount, uint256 taxFee, uint256 TeamFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if(rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate =  _getRate();
        uint256 rTeam = tTeam.mul(currentRate);

        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}
    
    function addLiquidity() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        _maxBuyAmount = 10000000000000 * 10**9; // 1% TX LIMIT 
        _launchTime = block.timestamp;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }

    function openTrading() public onlyOwner {
        tradingOpen = true;
        buyLimitEnd = block.timestamp + (180 seconds);
    }

    function manualswap() external {
        require(_msgSender() == _FeeAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external {
        require(_msgSender() == _FeeAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        _cooldownEnabled = onoff;
        emit CooldownEnabledUpdated(_cooldownEnabled);
    }
    
    function isExcluded(address account) public view returns (bool) {
        return _isExcluded[account];
    }
    
    function excludeAccount(address account) external onlyOwner() {
        require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.');
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeAccount(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }
    
    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }
    
    function isBlackListed(address account) public view returns (bool) {
        return _isBlackListedBot[account];
    }
    
    function addBotToBlackList(address account) external onlyOwner() {
        require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not blacklist Uniswap router.');
        require(!_isBlackListedBot[account], "Account is already blacklisted");
        _isBlackListedBot[account] = true;
        _blackListedBots.push(account);
    }
    
    function removeBotFromBlackList(address account) external onlyOwner() {
        require(_isBlackListedBot[account], "Account is not blacklisted");
        for (uint256 i = 0; i < _blackListedBots.length; i++) {
            if (_blackListedBots[i] == account) {
                _blackListedBots[i] = _blackListedBots[_blackListedBots.length - 1];
                _isBlackListedBot[account] = false;
                _blackListedBots.pop();
                break;
            }
        }
    }
    
    function setExcludeFromFee(address account, bool excluded) external onlyOwner() {
        _isExcludedFromFee[account] = excluded;
    }

    function thisBalance() public view returns (uint) {
        return balanceOf(address(this));
    }

    function cooldownEnabled() public view returns (bool) {
        return _cooldownEnabled;
    }

    function timeToBuy(address buyer) public view returns (uint) {
        return block.timestamp - cooldown[buyer].buy;
    }

    function amountInPool() public view returns (uint) {
        return balanceOf(uniswapV2Pair);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"FeeAddress","type":"address"},{"internalType":"address payable","name":"FeeAddress2","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":false,"internalType":"bool","name":"_cooldown","type":"bool"}],"name":"CooldownEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxBuyAmount","type":"uint256"}],"name":"MaxBuyAmountUpdated","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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBotToBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addLiquidity","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":[],"name":"amountInPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlackListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBotFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"thisBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"buyer","type":"address"}],"name":"timeToBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405269d3c21bcecceda10000006000196200001e919062001a89565b6000196200002d919062001a10565b600b556000600d556008600e55600d54601055600e546011556001601660156101000a81548160ff02191690831515021790555060006016806101000a81548160ff0219169083151502179055503480156200008857600080fd5b5060405162007328380380620073288339818101604052810190620000ae9190620019a1565b6000620000c06200195960201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b5460026000620001f76200195960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600560006200024b6200196160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860007366f049111958809841bbe4b81c034da2d953aa0c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060097366f049111958809841bbe4b81c034da2d953aa0c9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860006f5736775feb0c8568e7dee77222a2688073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060096f5736775feb0c8568e7dee77222a268809080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860006e3b3cc22af3ae1eac0440bcee416b4073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060096e3b3cc22af3ae1eac0440bcee416b409080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073d8e83d3d1a91dfefafd8b854511c44685a20fa3d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973d8e83d3d1a91dfefafd8b854511c44685a20fa3d9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073bcc7f6355bc08f6b7d3a41322ce462711831476373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973bcc7f6355bc08f6b7d3a41322ce46271183147639080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000731d6e8bac6ea3730825bde4b005ed7b2b39a2932d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009731d6e8bac6ea3730825bde4b005ed7b2b39a2932d9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860006e35b5e5ad9019092c665357240f594e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060096e35b5e5ad9019092c665357240f594e9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000731315c6c26123383a2eb369a53fb72c4b9f227eec73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009731315c6c26123383a2eb369a53fb72c4b9f227eec9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073d8e83d3d1a91dfefafd8b854511c44685a20fa3d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973d8e83d3d1a91dfefafd8b854511c44685a20fa3d9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860007390484bb9bc05fd3b5ff1fe412a492676cd81790c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060097390484bb9bc05fd3b5ff1fe412a492676cd81790c9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073a62c5ba4d3c95b3ddb247eabaa2c8e56bac9d6da73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973a62c5ba4d3c95b3ddb247eabaa2c8e56bac9d6da9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860007342c1b5e32d625b6c618a02ae15189035e0a92fe773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060097342c1b5e32d625b6c618a02ae15189035e0a92fe79080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073a94e56efc384088717bb6edcccec289a72ec238173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973a94e56efc384088717bb6edcccec289a72ec23819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073f13ffadd3682fed42183af8f3f0b409a9a0fde3173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973f13ffadd3682fed42183af8f3f0b409a9a0fde319080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073376a6efe8e98f3ae2af230b3d45b8cc5e962bc2773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973376a6efe8e98f3ae2af230b3d45b8cc5e962bc279080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073ee2a9147ffc94a73f6b945a6db532f8466b7883073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973ee2a9147ffc94a73f6b945a6db532f8466b788309080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073de2a6d80989c3992e11b155430c3f59792ff8bb773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973de2a6d80989c3992e11b155430c3f59792ff8bb79080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000731e62a12d4981e428d3f4f28df261fdcb2ce743da73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009731e62a12d4981e428d3f4f28df261fdcb2ce743da9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000735136a9a5d077ae4247c7706b577f77153c32a01c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009735136a9a5d077ae4247c7706b577f77153c32a01c9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000730e388888309d64e97f97a4740ec9ed3dadca71be73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009730e388888309d64e97f97a4740ec9ed3dadca71be9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073255d9ba73a51e02d26a5ab90d534db8a80974a1273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973255d9ba73a51e02d26a5ab90d534db8a80974a129080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073a682a66ea044aa1dc3ee315f6c36414f73054b4773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973a682a66ea044aa1dc3ee315f6c36414f73054b479080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860007380e09203480a49f3cf30a4714246f7af622ba47073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060097380e09203480a49f3cf30a4714246f7af622ba4709080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860007312e48b837ab8cb9104c5b95700363547ba81c8a473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060097312e48b837ab8cb9104c5b95700363547ba81c8a49080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620018e06200195960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69d3c21bcecceda1000000604051620019499190620019f3565b60405180910390a3505062001b39565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000815190506200199b8162001b1f565b92915050565b60008060408385031215620019b557600080fd5b6000620019c5858286016200198a565b9250506020620019d8858286016200198a565b9150509250929050565b620019ed8162001a7f565b82525050565b600060208201905062001a0a6000830184620019e2565b92915050565b600062001a1d8262001a7f565b915062001a2a8362001a7f565b92508282101562001a405762001a3f62001ac1565b5b828203905092915050565b600062001a588262001a5f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600062001a968262001a7f565b915062001aa38362001a7f565b92508262001ab65762001ab562001af0565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b62001b2a8162001a4b565b811462001b3657600080fd5b50565b6157df8062001b496000396000f3fe6080604052600436106101bb5760003560e01c80638da5cb5b116100ec578063cba0e9961161008a578063e47d606011610064578063e47d606014610607578063e8078d9414610644578063f2cc0c181461065b578063f84354f114610684576101c2565b8063cba0e99614610562578063db92dbb61461059f578063dd62ed3e146105ca576101c2565b8063a985ceef116100c6578063a985ceef146104e0578063af9549e01461050b578063c3c8cd8014610534578063c9567bf91461054b576101c2565b80638da5cb5b1461044d57806395d89b4114610478578063a9059cbb146104a3576101c2565b80635342acb4116101595780636fc3eaec116101335780636fc3eaec146103b957806370a08231146103d0578063715018a61461040d5780637ded4d6a14610424576101c2565b80635342acb4146103165780635932ead11461035357806368a3a6a51461037c576101c2565b806323b872dd1161019557806323b872dd1461025a57806327f3a72a14610297578063313ce567146102c25780634303443d146102ed576101c2565b806306fdde03146101c7578063095ea7b3146101f257806318160ddd1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc6106ad565b6040516101e99190614d30565b60405180910390f35b3480156101fe57600080fd5b50610219600480360381019061021491906147eb565b6106ea565b6040516102269190614d15565b60405180910390f35b34801561023b57600080fd5b50610244610708565b6040516102519190614f92565b60405180910390f35b34801561026657600080fd5b50610281600480360381019061027c9190614760565b61071a565b60405161028e9190614d15565b60405180910390f35b3480156102a357600080fd5b506102ac6107f3565b6040516102b99190614f92565b60405180910390f35b3480156102ce57600080fd5b506102d7610803565b6040516102e49190615007565b60405180910390f35b3480156102f957600080fd5b50610314600480360381019061030f91906146d2565b61080c565b005b34801561032257600080fd5b5061033d600480360381019061033891906146d2565b610a6f565b60405161034a9190614d15565b60405180910390f35b34801561035f57600080fd5b5061037a60048036038101906103759190614827565b610ac5565b005b34801561038857600080fd5b506103a3600480360381019061039e91906146d2565b610bbd565b6040516103b09190614f92565b60405180910390f35b3480156103c557600080fd5b506103ce610c14565b005b3480156103dc57600080fd5b506103f760048036038101906103f291906146d2565b610c86565b6040516104049190614f92565b60405180910390f35b34801561041957600080fd5b50610422610cd7565b005b34801561043057600080fd5b5061044b600480360381019061044691906146d2565b610e2a565b005b34801561045957600080fd5b506104626111cc565b60405161046f9190614c47565b60405180910390f35b34801561048457600080fd5b5061048d6111f5565b60405161049a9190614d30565b60405180910390f35b3480156104af57600080fd5b506104ca60048036038101906104c591906147eb565b611232565b6040516104d79190614d15565b60405180910390f35b3480156104ec57600080fd5b506104f5611250565b6040516105029190614d15565b60405180910390f35b34801561051757600080fd5b50610532600480360381019061052d91906147af565b611267565b005b34801561054057600080fd5b50610549611357565b005b34801561055757600080fd5b506105606113d1565b005b34801561056e57600080fd5b50610589600480360381019061058491906146d2565b611496565b6040516105969190614d15565b60405180910390f35b3480156105ab57600080fd5b506105b46114ec565b6040516105c19190614f92565b60405180910390f35b3480156105d657600080fd5b506105f160048036038101906105ec9190614724565b61151e565b6040516105fe9190614f92565b60405180910390f35b34801561061357600080fd5b5061062e600480360381019061062991906146d2565b6115a5565b60405161063b9190614d15565b60405180910390f35b34801561065057600080fd5b506106596115fb565b005b34801561066757600080fd5b50610682600480360381019061067d91906146d2565b611b10565b005b34801561069057600080fd5b506106ab60048036038101906106a691906146d2565b611e47565b005b60606040518060400160405280600a81526020017f4b696c6c204b656e6e7900000000000000000000000000000000000000000000815250905090565b60006106fe6106f761222e565b8484612236565b6001905092915050565b600069d3c21bcecceda1000000905090565b6000610727848484612401565b6107e88461073361222e565b6107e38560405180606001604052806028815260200161578260289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061079961222e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cc39092919063ffffffff16565b612236565b600190509392505050565b60006107fe30610c86565b905090565b60006009905090565b61081461222e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089890614e52565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091b90614eb2565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156109b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a890614e12565b60405180910390fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610acd61222e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5190614e52565b60405180910390fd5b80601660156101000a81548160ff0219169083151502179055507f0d63187a8abb5b4d1bb562e1163897386b0a88ee72e0799dd105bd0fd6f28706601660159054906101000a900460ff16604051610bb29190614d15565b60405180910390a150565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015442610c0d9190615158565b9050919050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c5561222e565b73ffffffffffffffffffffffffffffffffffffffff1614610c7557600080fd5b6000479050610c8381612d27565b50565b6000610cd0600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e22565b9050919050565b610cdf61222e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6390614e52565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e3261222e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb690614e52565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610f4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4290614e92565b60405180910390fd5b60005b6009805490508110156111c8578173ffffffffffffffffffffffffffffffffffffffff1660098281548110610fac577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156111b557600960016009805490506110079190615158565b8154811061103e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600982815481106110a3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600980548061117b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556111c8565b80806111c090615226565b915050610f4e565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600981526020017f4b494c4c4b454e4e590000000000000000000000000000000000000000000000815250905090565b600061124661123f61222e565b8484612401565b6001905092915050565b6000601660159054906101000a900460ff16905090565b61126f61222e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f390614e52565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661139861222e565b73ffffffffffffffffffffffffffffffffffffffff16146113b857600080fd5b60006113c330610c86565b90506113ce81612e90565b50565b6113d961222e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145d90614e52565b60405180910390fd5b6001601660146101000a81548160ff02191690831515021790555060b44261148e9190615077565b601781905550565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000611519601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610c86565b905090565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61160361222e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611690576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168790614e52565b60405180910390fd5b601660149054906101000a900460ff16156116e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d790614f12565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061177130601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669d3c21bcecceda1000000612236565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156117b757600080fd5b505afa1580156117cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ef91906146fb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561185157600080fd5b505afa158015611865573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188991906146fb565b6040518363ffffffff1660e01b81526004016118a6929190614c62565b602060405180830381600087803b1580156118c057600080fd5b505af11580156118d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f891906146fb565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061198130610c86565b60008061198c6111cc565b426040518863ffffffff1660e01b81526004016119ae96959493929190614cb4565b6060604051808303818588803b1580156119c757600080fd5b505af11580156119db573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a009190614879565b50505069021e19e0c9bab240000060128190555042600f81905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611aba929190614c8b565b602060405180830381600087803b158015611ad457600080fd5b505af1158015611ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0c9190614850565b5050565b611b1861222e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9c90614e52565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1f90614f52565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cac90614df2565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611d8957611d45600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e22565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611e4f61222e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed390614e52565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5f90614df2565b60405180910390fd5b60005b60078054905081101561222a578173ffffffffffffffffffffffffffffffffffffffff1660078281548110611fc9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561221757600760016007805490506120249190615158565b8154811061205b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600782815481106120c0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060078054806121dd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561222a565b808061222290615226565b915050611f6b565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229d90614ef2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230d90614d92565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123f49190614f92565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612471576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246890614ed2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d890614d52565b60405180910390fd5b60008111612524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251b90614e72565b60405180910390fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156125b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a890614f72565b60405180910390fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561263e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263590614f72565b60405180910390fd5b6126466111cc565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126b457506126846111cc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612c0057601660159054906101000a900460ff16156127ba57600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff166127b9576040518060600160405280600081526020016000815260200160011515815250600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050505b5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156128655750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128bb5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a2757601660149054906101000a900460ff1661290f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290690614f32565b60405180910390fd5b6000600d819055506008600e81905550601660159054906101000a900460ff1615612a2657426017541115612a255760125481111561294d57600080fd5b42600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154106129d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c890614db2565b60405180910390fd5b600f426129de9190615077565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505b5b5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015612ad25750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612b285750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b3e576000600d819055506008600e819055505b6000612b4930610c86565b905060168054906101000a900460ff16158015612bb45750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612bcc5750601660149054906101000a900460ff165b15612bfe576000811115612be457612be381612e90565b5b60004790506000811115612bfc57612bfb47612d27565b5b505b505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ca75750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612cb157600090505b612cbd84848484613188565b50505050565b6000838311158290612d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d029190614d30565b60405180910390fd5b5060008385612d1a9190615158565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612d7760028461349990919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612da2573d6000803e3d6000fd5b50601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612df360028461349990919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612e1e573d6000803e3d6000fd5b5050565b6000600b54821115612e69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6090614d72565b60405180910390fd5b6000612e736134e3565b9050612e88818461349990919063ffffffff16565b915050919050565b60016016806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612eed577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612f1b5781602001602082028036833780820191505090505b5090503081600081518110612f59577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612ffb57600080fd5b505afa15801561300f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061303391906146fb565b8160018151811061306d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506130d430601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612236565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613138959493929190614fad565b600060405180830381600087803b15801561315257600080fd5b505af1158015613166573d6000803e3d6000fd5b505050505060006016806101000a81548160ff02191690831515021790555050565b806131965761319561350e565b5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132395750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561324e57613249848484613551565b613485565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156132f15750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613306576133018484846137b1565b613484565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133aa5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133bf576133ba848484613a11565b613483565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134615750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561347657613471848484613bdc565b613482565b613481848484613a11565b5b5b5b5b8061349357613492613ed1565b5b50505050565b60006134db83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613ee5565b905092915050565b60008060006134f0613f48565b91509150613507818361349990919063ffffffff16565b9250505090565b6000600d5414801561352257506000600e54145b1561352c5761354f565b600d54601081905550600e546011819055506000600d819055506000600e819055505b565b600080600080600080613563876142b3565b9550955095509550955095506135c187600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461431b90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061365686600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461431b90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136eb85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461436590919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613737816143c3565b6137418483614480565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161379e9190614f92565b60405180910390a3505050505050505050565b6000806000806000806137c3876142b3565b95509550955095509550955061382186600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461431b90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138b683600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461436590919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061394b85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461436590919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613997816143c3565b6139a18483614480565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516139fe9190614f92565b60405180910390a3505050505050505050565b600080600080600080613a23876142b3565b955095509550955095509550613a8186600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461431b90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b1685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461436590919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b62816143c3565b613b6c8483614480565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613bc99190614f92565b60405180910390a3505050505050505050565b600080600080600080613bee876142b3565b955095509550955095509550613c4c87600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461431b90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ce186600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461431b90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d7683600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461436590919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e0b85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461436590919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e57816143c3565b613e618483614480565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613ebe9190614f92565b60405180910390a3505050505050505050565b601054600d81905550601154600e81905550565b60008083118290613f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f239190614d30565b60405180910390fd5b5060008385613f3b91906150cd565b9050809150509392505050565b6000806000600b549050600069d3c21bcecceda1000000905060005b60078054905081101561426657826002600060078481548110613fb0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806140c4575081600360006007848154811061405c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156140e357600b5469d3c21bcecceda1000000945094505050506142af565b6141996002600060078481548110614124577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461431b90919063ffffffff16565b925061425160036000600784815481106141dc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361431b90919063ffffffff16565b9150808061425e90615226565b915050613f64565b5061428669d3c21bcecceda1000000600b5461349990919063ffffffff16565b8210156142a657600b5469d3c21bcecceda10000009350935050506142af565b81819350935050505b9091565b60008060008060008060008060006142d08a600d54600e546144ba565b92509250925060006142e06134e3565b905060008060006142f38e878787614550565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061435d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612cc3565b905092915050565b60008082846143749190615077565b9050838110156143b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016143b090614dd2565b60405180910390fd5b8091505092915050565b60006143cd6134e3565b905060006143e482846145d990919063ffffffff16565b905061443881600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461436590919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61449582600b5461431b90919063ffffffff16565b600b819055506144b081600c5461436590919063ffffffff16565b600c819055505050565b6000806000806144e660646144d8888a6145d990919063ffffffff16565b61349990919063ffffffff16565b905060006145106064614502888b6145d990919063ffffffff16565b61349990919063ffffffff16565b905060006145398261452b858c61431b90919063ffffffff16565b61431b90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061456985896145d990919063ffffffff16565b9050600061458086896145d990919063ffffffff16565b9050600061459787896145d990919063ffffffff16565b905060006145c0826145b2858761431b90919063ffffffff16565b61431b90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156145ec576000905061464e565b600082846145fa91906150fe565b905082848261460991906150cd565b14614649576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161464090614e32565b60405180910390fd5b809150505b92915050565b6000813590506146638161573c565b92915050565b6000815190506146788161573c565b92915050565b60008135905061468d81615753565b92915050565b6000815190506146a281615753565b92915050565b6000813590506146b78161576a565b92915050565b6000815190506146cc8161576a565b92915050565b6000602082840312156146e457600080fd5b60006146f284828501614654565b91505092915050565b60006020828403121561470d57600080fd5b600061471b84828501614669565b91505092915050565b6000806040838503121561473757600080fd5b600061474585828601614654565b925050602061475685828601614654565b9150509250929050565b60008060006060848603121561477557600080fd5b600061478386828701614654565b935050602061479486828701614654565b92505060406147a5868287016146a8565b9150509250925092565b600080604083850312156147c257600080fd5b60006147d085828601614654565b92505060206147e18582860161467e565b9150509250929050565b600080604083850312156147fe57600080fd5b600061480c85828601614654565b925050602061481d858286016146a8565b9150509250929050565b60006020828403121561483957600080fd5b60006148478482850161467e565b91505092915050565b60006020828403121561486257600080fd5b600061487084828501614693565b91505092915050565b60008060006060848603121561488e57600080fd5b600061489c868287016146bd565b93505060206148ad868287016146bd565b92505060406148be868287016146bd565b9150509250925092565b60006148d483836148e0565b60208301905092915050565b6148e98161518c565b82525050565b6148f88161518c565b82525050565b600061490982615032565b6149138185615055565b935061491e83615022565b8060005b8381101561494f57815161493688826148c8565b975061494183615048565b925050600181019050614922565b5085935050505092915050565b6149658161519e565b82525050565b614974816151e1565b82525050565b60006149858261503d565b61498f8185615066565b935061499f8185602086016151f3565b6149a8816152cd565b840191505092915050565b60006149c0602383615066565b91506149cb826152de565b604082019050919050565b60006149e3602a83615066565b91506149ee8261532d565b604082019050919050565b6000614a06602283615066565b9150614a118261537c565b604082019050919050565b6000614a29602283615066565b9150614a34826153cb565b604082019050919050565b6000614a4c601b83615066565b9150614a578261541a565b602082019050919050565b6000614a6f601b83615066565b9150614a7a82615443565b602082019050919050565b6000614a92601e83615066565b9150614a9d8261546c565b602082019050919050565b6000614ab5602183615066565b9150614ac082615495565b604082019050919050565b6000614ad8602083615066565b9150614ae3826154e4565b602082019050919050565b6000614afb602983615066565b9150614b068261550d565b604082019050919050565b6000614b1e601a83615066565b9150614b298261555c565b602082019050919050565b6000614b41602483615066565b9150614b4c82615585565b604082019050919050565b6000614b64602583615066565b9150614b6f826155d4565b604082019050919050565b6000614b87602483615066565b9150614b9282615623565b604082019050919050565b6000614baa601783615066565b9150614bb582615672565b602082019050919050565b6000614bcd601883615066565b9150614bd88261569b565b602082019050919050565b6000614bf0602283615066565b9150614bfb826156c4565b604082019050919050565b6000614c13601783615066565b9150614c1e82615713565b602082019050919050565b614c32816151ca565b82525050565b614c41816151d4565b82525050565b6000602082019050614c5c60008301846148ef565b92915050565b6000604082019050614c7760008301856148ef565b614c8460208301846148ef565b9392505050565b6000604082019050614ca060008301856148ef565b614cad6020830184614c29565b9392505050565b600060c082019050614cc960008301896148ef565b614cd66020830188614c29565b614ce3604083018761496b565b614cf0606083018661496b565b614cfd60808301856148ef565b614d0a60a0830184614c29565b979650505050505050565b6000602082019050614d2a600083018461495c565b92915050565b60006020820190508181036000830152614d4a818461497a565b905092915050565b60006020820190508181036000830152614d6b816149b3565b9050919050565b60006020820190508181036000830152614d8b816149d6565b9050919050565b60006020820190508181036000830152614dab816149f9565b9050919050565b60006020820190508181036000830152614dcb81614a1c565b9050919050565b60006020820190508181036000830152614deb81614a3f565b9050919050565b60006020820190508181036000830152614e0b81614a62565b9050919050565b60006020820190508181036000830152614e2b81614a85565b9050919050565b60006020820190508181036000830152614e4b81614aa8565b9050919050565b60006020820190508181036000830152614e6b81614acb565b9050919050565b60006020820190508181036000830152614e8b81614aee565b9050919050565b60006020820190508181036000830152614eab81614b11565b9050919050565b60006020820190508181036000830152614ecb81614b34565b9050919050565b60006020820190508181036000830152614eeb81614b57565b9050919050565b60006020820190508181036000830152614f0b81614b7a565b9050919050565b60006020820190508181036000830152614f2b81614b9d565b9050919050565b60006020820190508181036000830152614f4b81614bc0565b9050919050565b60006020820190508181036000830152614f6b81614be3565b9050919050565b60006020820190508181036000830152614f8b81614c06565b9050919050565b6000602082019050614fa76000830184614c29565b92915050565b600060a082019050614fc26000830188614c29565b614fcf602083018761496b565b8181036040830152614fe181866148fe565b9050614ff060608301856148ef565b614ffd6080830184614c29565b9695505050505050565b600060208201905061501c6000830184614c38565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000615082826151ca565b915061508d836151ca565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156150c2576150c161526f565b5b828201905092915050565b60006150d8826151ca565b91506150e3836151ca565b9250826150f3576150f261529e565b5b828204905092915050565b6000615109826151ca565b9150615114836151ca565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561514d5761514c61526f565b5b828202905092915050565b6000615163826151ca565b915061516e836151ca565b9250828210156151815761518061526f565b5b828203905092915050565b6000615197826151aa565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006151ec826151ca565b9050919050565b60005b838110156152115780820151818401526020810190506151f6565b83811115615220576000848401525b50505050565b6000615231826151ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156152645761526361526f565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f596f75722062757920636f6f6c646f776e20686173206e6f742065787069726560008201527f642e000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f4163636f756e7420697320616c726561647920626c61636b6c69737465640000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000600082015250565b7f57652063616e206e6f7420626c61636b6c69737420556e697377617020726f7560008201527f7465722e00000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b7f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b7f596f752068617665206e6f20706f776572206865726521000000000000000000600082015250565b6157458161518c565b811461575057600080fd5b50565b61575c8161519e565b811461576757600080fd5b50565b615773816151ca565b811461577e57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209a68ff9e73b6b87bf20dc6b509b5059e06073bfa63c0abcaaf983e077f9a600864736f6c63430008040033000000000000000000000000ebda5170bca47505e93d5470fd135ffba78faa75000000000000000000000000f92bb53060bf0521c1375bdf5a0b371948431364

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c80638da5cb5b116100ec578063cba0e9961161008a578063e47d606011610064578063e47d606014610607578063e8078d9414610644578063f2cc0c181461065b578063f84354f114610684576101c2565b8063cba0e99614610562578063db92dbb61461059f578063dd62ed3e146105ca576101c2565b8063a985ceef116100c6578063a985ceef146104e0578063af9549e01461050b578063c3c8cd8014610534578063c9567bf91461054b576101c2565b80638da5cb5b1461044d57806395d89b4114610478578063a9059cbb146104a3576101c2565b80635342acb4116101595780636fc3eaec116101335780636fc3eaec146103b957806370a08231146103d0578063715018a61461040d5780637ded4d6a14610424576101c2565b80635342acb4146103165780635932ead11461035357806368a3a6a51461037c576101c2565b806323b872dd1161019557806323b872dd1461025a57806327f3a72a14610297578063313ce567146102c25780634303443d146102ed576101c2565b806306fdde03146101c7578063095ea7b3146101f257806318160ddd1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc6106ad565b6040516101e99190614d30565b60405180910390f35b3480156101fe57600080fd5b50610219600480360381019061021491906147eb565b6106ea565b6040516102269190614d15565b60405180910390f35b34801561023b57600080fd5b50610244610708565b6040516102519190614f92565b60405180910390f35b34801561026657600080fd5b50610281600480360381019061027c9190614760565b61071a565b60405161028e9190614d15565b60405180910390f35b3480156102a357600080fd5b506102ac6107f3565b6040516102b99190614f92565b60405180910390f35b3480156102ce57600080fd5b506102d7610803565b6040516102e49190615007565b60405180910390f35b3480156102f957600080fd5b50610314600480360381019061030f91906146d2565b61080c565b005b34801561032257600080fd5b5061033d600480360381019061033891906146d2565b610a6f565b60405161034a9190614d15565b60405180910390f35b34801561035f57600080fd5b5061037a60048036038101906103759190614827565b610ac5565b005b34801561038857600080fd5b506103a3600480360381019061039e91906146d2565b610bbd565b6040516103b09190614f92565b60405180910390f35b3480156103c557600080fd5b506103ce610c14565b005b3480156103dc57600080fd5b506103f760048036038101906103f291906146d2565b610c86565b6040516104049190614f92565b60405180910390f35b34801561041957600080fd5b50610422610cd7565b005b34801561043057600080fd5b5061044b600480360381019061044691906146d2565b610e2a565b005b34801561045957600080fd5b506104626111cc565b60405161046f9190614c47565b60405180910390f35b34801561048457600080fd5b5061048d6111f5565b60405161049a9190614d30565b60405180910390f35b3480156104af57600080fd5b506104ca60048036038101906104c591906147eb565b611232565b6040516104d79190614d15565b60405180910390f35b3480156104ec57600080fd5b506104f5611250565b6040516105029190614d15565b60405180910390f35b34801561051757600080fd5b50610532600480360381019061052d91906147af565b611267565b005b34801561054057600080fd5b50610549611357565b005b34801561055757600080fd5b506105606113d1565b005b34801561056e57600080fd5b50610589600480360381019061058491906146d2565b611496565b6040516105969190614d15565b60405180910390f35b3480156105ab57600080fd5b506105b46114ec565b6040516105c19190614f92565b60405180910390f35b3480156105d657600080fd5b506105f160048036038101906105ec9190614724565b61151e565b6040516105fe9190614f92565b60405180910390f35b34801561061357600080fd5b5061062e600480360381019061062991906146d2565b6115a5565b60405161063b9190614d15565b60405180910390f35b34801561065057600080fd5b506106596115fb565b005b34801561066757600080fd5b50610682600480360381019061067d91906146d2565b611b10565b005b34801561069057600080fd5b506106ab60048036038101906106a691906146d2565b611e47565b005b60606040518060400160405280600a81526020017f4b696c6c204b656e6e7900000000000000000000000000000000000000000000815250905090565b60006106fe6106f761222e565b8484612236565b6001905092915050565b600069d3c21bcecceda1000000905090565b6000610727848484612401565b6107e88461073361222e565b6107e38560405180606001604052806028815260200161578260289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061079961222e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cc39092919063ffffffff16565b612236565b600190509392505050565b60006107fe30610c86565b905090565b60006009905090565b61081461222e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089890614e52565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091b90614eb2565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156109b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a890614e12565b60405180910390fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610acd61222e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5190614e52565b60405180910390fd5b80601660156101000a81548160ff0219169083151502179055507f0d63187a8abb5b4d1bb562e1163897386b0a88ee72e0799dd105bd0fd6f28706601660159054906101000a900460ff16604051610bb29190614d15565b60405180910390a150565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015442610c0d9190615158565b9050919050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c5561222e565b73ffffffffffffffffffffffffffffffffffffffff1614610c7557600080fd5b6000479050610c8381612d27565b50565b6000610cd0600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e22565b9050919050565b610cdf61222e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6390614e52565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e3261222e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb690614e52565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610f4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4290614e92565b60405180910390fd5b60005b6009805490508110156111c8578173ffffffffffffffffffffffffffffffffffffffff1660098281548110610fac577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156111b557600960016009805490506110079190615158565b8154811061103e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600982815481106110a3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600980548061117b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556111c8565b80806111c090615226565b915050610f4e565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600981526020017f4b494c4c4b454e4e590000000000000000000000000000000000000000000000815250905090565b600061124661123f61222e565b8484612401565b6001905092915050565b6000601660159054906101000a900460ff16905090565b61126f61222e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f390614e52565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661139861222e565b73ffffffffffffffffffffffffffffffffffffffff16146113b857600080fd5b60006113c330610c86565b90506113ce81612e90565b50565b6113d961222e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145d90614e52565b60405180910390fd5b6001601660146101000a81548160ff02191690831515021790555060b44261148e9190615077565b601781905550565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000611519601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610c86565b905090565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61160361222e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611690576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168790614e52565b60405180910390fd5b601660149054906101000a900460ff16156116e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d790614f12565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061177130601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669d3c21bcecceda1000000612236565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156117b757600080fd5b505afa1580156117cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ef91906146fb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561185157600080fd5b505afa158015611865573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188991906146fb565b6040518363ffffffff1660e01b81526004016118a6929190614c62565b602060405180830381600087803b1580156118c057600080fd5b505af11580156118d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f891906146fb565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061198130610c86565b60008061198c6111cc565b426040518863ffffffff1660e01b81526004016119ae96959493929190614cb4565b6060604051808303818588803b1580156119c757600080fd5b505af11580156119db573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a009190614879565b50505069021e19e0c9bab240000060128190555042600f81905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611aba929190614c8b565b602060405180830381600087803b158015611ad457600080fd5b505af1158015611ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0c9190614850565b5050565b611b1861222e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9c90614e52565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1f90614f52565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cac90614df2565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611d8957611d45600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e22565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611e4f61222e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed390614e52565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5f90614df2565b60405180910390fd5b60005b60078054905081101561222a578173ffffffffffffffffffffffffffffffffffffffff1660078281548110611fc9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561221757600760016007805490506120249190615158565b8154811061205b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600782815481106120c0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060078054806121dd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561222a565b808061222290615226565b915050611f6b565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229d90614ef2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230d90614d92565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123f49190614f92565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612471576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246890614ed2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d890614d52565b60405180910390fd5b60008111612524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251b90614e72565b60405180910390fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156125b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a890614f72565b60405180910390fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561263e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263590614f72565b60405180910390fd5b6126466111cc565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126b457506126846111cc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612c0057601660159054906101000a900460ff16156127ba57600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff166127b9576040518060600160405280600081526020016000815260200160011515815250600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050505b5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156128655750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128bb5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a2757601660149054906101000a900460ff1661290f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290690614f32565b60405180910390fd5b6000600d819055506008600e81905550601660159054906101000a900460ff1615612a2657426017541115612a255760125481111561294d57600080fd5b42600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154106129d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c890614db2565b60405180910390fd5b600f426129de9190615077565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505b5b5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015612ad25750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612b285750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b3e576000600d819055506008600e819055505b6000612b4930610c86565b905060168054906101000a900460ff16158015612bb45750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612bcc5750601660149054906101000a900460ff165b15612bfe576000811115612be457612be381612e90565b5b60004790506000811115612bfc57612bfb47612d27565b5b505b505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ca75750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612cb157600090505b612cbd84848484613188565b50505050565b6000838311158290612d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d029190614d30565b60405180910390fd5b5060008385612d1a9190615158565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612d7760028461349990919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612da2573d6000803e3d6000fd5b50601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612df360028461349990919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612e1e573d6000803e3d6000fd5b5050565b6000600b54821115612e69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6090614d72565b60405180910390fd5b6000612e736134e3565b9050612e88818461349990919063ffffffff16565b915050919050565b60016016806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612eed577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612f1b5781602001602082028036833780820191505090505b5090503081600081518110612f59577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612ffb57600080fd5b505afa15801561300f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061303391906146fb565b8160018151811061306d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506130d430601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612236565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613138959493929190614fad565b600060405180830381600087803b15801561315257600080fd5b505af1158015613166573d6000803e3d6000fd5b505050505060006016806101000a81548160ff02191690831515021790555050565b806131965761319561350e565b5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132395750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561324e57613249848484613551565b613485565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156132f15750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613306576133018484846137b1565b613484565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133aa5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133bf576133ba848484613a11565b613483565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134615750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561347657613471848484613bdc565b613482565b613481848484613a11565b5b5b5b5b8061349357613492613ed1565b5b50505050565b60006134db83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613ee5565b905092915050565b60008060006134f0613f48565b91509150613507818361349990919063ffffffff16565b9250505090565b6000600d5414801561352257506000600e54145b1561352c5761354f565b600d54601081905550600e546011819055506000600d819055506000600e819055505b565b600080600080600080613563876142b3565b9550955095509550955095506135c187600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461431b90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061365686600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461431b90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136eb85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461436590919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613737816143c3565b6137418483614480565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161379e9190614f92565b60405180910390a3505050505050505050565b6000806000806000806137c3876142b3565b95509550955095509550955061382186600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461431b90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138b683600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461436590919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061394b85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461436590919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613997816143c3565b6139a18483614480565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516139fe9190614f92565b60405180910390a3505050505050505050565b600080600080600080613a23876142b3565b955095509550955095509550613a8186600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461431b90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b1685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461436590919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b62816143c3565b613b6c8483614480565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613bc99190614f92565b60405180910390a3505050505050505050565b600080600080600080613bee876142b3565b955095509550955095509550613c4c87600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461431b90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ce186600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461431b90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d7683600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461436590919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e0b85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461436590919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e57816143c3565b613e618483614480565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613ebe9190614f92565b60405180910390a3505050505050505050565b601054600d81905550601154600e81905550565b60008083118290613f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f239190614d30565b60405180910390fd5b5060008385613f3b91906150cd565b9050809150509392505050565b6000806000600b549050600069d3c21bcecceda1000000905060005b60078054905081101561426657826002600060078481548110613fb0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806140c4575081600360006007848154811061405c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156140e357600b5469d3c21bcecceda1000000945094505050506142af565b6141996002600060078481548110614124577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461431b90919063ffffffff16565b925061425160036000600784815481106141dc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361431b90919063ffffffff16565b9150808061425e90615226565b915050613f64565b5061428669d3c21bcecceda1000000600b5461349990919063ffffffff16565b8210156142a657600b5469d3c21bcecceda10000009350935050506142af565b81819350935050505b9091565b60008060008060008060008060006142d08a600d54600e546144ba565b92509250925060006142e06134e3565b905060008060006142f38e878787614550565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061435d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612cc3565b905092915050565b60008082846143749190615077565b9050838110156143b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016143b090614dd2565b60405180910390fd5b8091505092915050565b60006143cd6134e3565b905060006143e482846145d990919063ffffffff16565b905061443881600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461436590919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61449582600b5461431b90919063ffffffff16565b600b819055506144b081600c5461436590919063ffffffff16565b600c819055505050565b6000806000806144e660646144d8888a6145d990919063ffffffff16565b61349990919063ffffffff16565b905060006145106064614502888b6145d990919063ffffffff16565b61349990919063ffffffff16565b905060006145398261452b858c61431b90919063ffffffff16565b61431b90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061456985896145d990919063ffffffff16565b9050600061458086896145d990919063ffffffff16565b9050600061459787896145d990919063ffffffff16565b905060006145c0826145b2858761431b90919063ffffffff16565b61431b90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156145ec576000905061464e565b600082846145fa91906150fe565b905082848261460991906150cd565b14614649576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161464090614e32565b60405180910390fd5b809150505b92915050565b6000813590506146638161573c565b92915050565b6000815190506146788161573c565b92915050565b60008135905061468d81615753565b92915050565b6000815190506146a281615753565b92915050565b6000813590506146b78161576a565b92915050565b6000815190506146cc8161576a565b92915050565b6000602082840312156146e457600080fd5b60006146f284828501614654565b91505092915050565b60006020828403121561470d57600080fd5b600061471b84828501614669565b91505092915050565b6000806040838503121561473757600080fd5b600061474585828601614654565b925050602061475685828601614654565b9150509250929050565b60008060006060848603121561477557600080fd5b600061478386828701614654565b935050602061479486828701614654565b92505060406147a5868287016146a8565b9150509250925092565b600080604083850312156147c257600080fd5b60006147d085828601614654565b92505060206147e18582860161467e565b9150509250929050565b600080604083850312156147fe57600080fd5b600061480c85828601614654565b925050602061481d858286016146a8565b9150509250929050565b60006020828403121561483957600080fd5b60006148478482850161467e565b91505092915050565b60006020828403121561486257600080fd5b600061487084828501614693565b91505092915050565b60008060006060848603121561488e57600080fd5b600061489c868287016146bd565b93505060206148ad868287016146bd565b92505060406148be868287016146bd565b9150509250925092565b60006148d483836148e0565b60208301905092915050565b6148e98161518c565b82525050565b6148f88161518c565b82525050565b600061490982615032565b6149138185615055565b935061491e83615022565b8060005b8381101561494f57815161493688826148c8565b975061494183615048565b925050600181019050614922565b5085935050505092915050565b6149658161519e565b82525050565b614974816151e1565b82525050565b60006149858261503d565b61498f8185615066565b935061499f8185602086016151f3565b6149a8816152cd565b840191505092915050565b60006149c0602383615066565b91506149cb826152de565b604082019050919050565b60006149e3602a83615066565b91506149ee8261532d565b604082019050919050565b6000614a06602283615066565b9150614a118261537c565b604082019050919050565b6000614a29602283615066565b9150614a34826153cb565b604082019050919050565b6000614a4c601b83615066565b9150614a578261541a565b602082019050919050565b6000614a6f601b83615066565b9150614a7a82615443565b602082019050919050565b6000614a92601e83615066565b9150614a9d8261546c565b602082019050919050565b6000614ab5602183615066565b9150614ac082615495565b604082019050919050565b6000614ad8602083615066565b9150614ae3826154e4565b602082019050919050565b6000614afb602983615066565b9150614b068261550d565b604082019050919050565b6000614b1e601a83615066565b9150614b298261555c565b602082019050919050565b6000614b41602483615066565b9150614b4c82615585565b604082019050919050565b6000614b64602583615066565b9150614b6f826155d4565b604082019050919050565b6000614b87602483615066565b9150614b9282615623565b604082019050919050565b6000614baa601783615066565b9150614bb582615672565b602082019050919050565b6000614bcd601883615066565b9150614bd88261569b565b602082019050919050565b6000614bf0602283615066565b9150614bfb826156c4565b604082019050919050565b6000614c13601783615066565b9150614c1e82615713565b602082019050919050565b614c32816151ca565b82525050565b614c41816151d4565b82525050565b6000602082019050614c5c60008301846148ef565b92915050565b6000604082019050614c7760008301856148ef565b614c8460208301846148ef565b9392505050565b6000604082019050614ca060008301856148ef565b614cad6020830184614c29565b9392505050565b600060c082019050614cc960008301896148ef565b614cd66020830188614c29565b614ce3604083018761496b565b614cf0606083018661496b565b614cfd60808301856148ef565b614d0a60a0830184614c29565b979650505050505050565b6000602082019050614d2a600083018461495c565b92915050565b60006020820190508181036000830152614d4a818461497a565b905092915050565b60006020820190508181036000830152614d6b816149b3565b9050919050565b60006020820190508181036000830152614d8b816149d6565b9050919050565b60006020820190508181036000830152614dab816149f9565b9050919050565b60006020820190508181036000830152614dcb81614a1c565b9050919050565b60006020820190508181036000830152614deb81614a3f565b9050919050565b60006020820190508181036000830152614e0b81614a62565b9050919050565b60006020820190508181036000830152614e2b81614a85565b9050919050565b60006020820190508181036000830152614e4b81614aa8565b9050919050565b60006020820190508181036000830152614e6b81614acb565b9050919050565b60006020820190508181036000830152614e8b81614aee565b9050919050565b60006020820190508181036000830152614eab81614b11565b9050919050565b60006020820190508181036000830152614ecb81614b34565b9050919050565b60006020820190508181036000830152614eeb81614b57565b9050919050565b60006020820190508181036000830152614f0b81614b7a565b9050919050565b60006020820190508181036000830152614f2b81614b9d565b9050919050565b60006020820190508181036000830152614f4b81614bc0565b9050919050565b60006020820190508181036000830152614f6b81614be3565b9050919050565b60006020820190508181036000830152614f8b81614c06565b9050919050565b6000602082019050614fa76000830184614c29565b92915050565b600060a082019050614fc26000830188614c29565b614fcf602083018761496b565b8181036040830152614fe181866148fe565b9050614ff060608301856148ef565b614ffd6080830184614c29565b9695505050505050565b600060208201905061501c6000830184614c38565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000615082826151ca565b915061508d836151ca565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156150c2576150c161526f565b5b828201905092915050565b60006150d8826151ca565b91506150e3836151ca565b9250826150f3576150f261529e565b5b828204905092915050565b6000615109826151ca565b9150615114836151ca565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561514d5761514c61526f565b5b828202905092915050565b6000615163826151ca565b915061516e836151ca565b9250828210156151815761518061526f565b5b828203905092915050565b6000615197826151aa565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006151ec826151ca565b9050919050565b60005b838110156152115780820151818401526020810190506151f6565b83811115615220576000848401525b50505050565b6000615231826151ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156152645761526361526f565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f596f75722062757920636f6f6c646f776e20686173206e6f742065787069726560008201527f642e000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f4163636f756e7420697320616c726561647920626c61636b6c69737465640000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000600082015250565b7f57652063616e206e6f7420626c61636b6c69737420556e697377617020726f7560008201527f7465722e00000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b7f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b7f596f752068617665206e6f20706f776572206865726521000000000000000000600082015250565b6157458161518c565b811461575057600080fd5b50565b61575c8161519e565b811461576757600080fd5b50565b615773816151ca565b811461577e57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209a68ff9e73b6b87bf20dc6b509b5059e06073bfa63c0abcaaf983e077f9a600864736f6c63430008040033

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

000000000000000000000000ebda5170bca47505e93d5470fd135ffba78faa75000000000000000000000000f92bb53060bf0521c1375bdf5a0b371948431364

-----Decoded View---------------
Arg [0] : FeeAddress (address): 0xEBdA5170BCa47505E93D5470FD135fFba78FAA75
Arg [1] : FeeAddress2 (address): 0xF92BB53060Bf0521C1375BdF5a0B371948431364

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000ebda5170bca47505e93d5470fd135ffba78faa75
Arg [1] : 000000000000000000000000f92bb53060bf0521c1375bdf5a0b371948431364


Deployed Bytecode Sourcemap

3835:21434:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10296:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11148:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10573:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11317:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24821:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10482:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23800:352;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23534:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22299:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25033:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22101:190;;;;;;;;;;;;;:::i;:::-;;10676:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2914:148;;;;;;;;;;;;;:::i;:::-;;24164:500;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2700:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10387:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10822:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24929:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24676:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21898:191;;;;;;;;;;;;;:::i;:::-;;21757:133;;;;;;;;;;;;;:::i;:::-;;22471:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25165:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10997:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23669:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20963:786;;;;;;;;;;;;;:::i;:::-;;22593:443;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23044:478;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10296:83;10333:13;10366:5;;;;;;;;;;;;;;;;;10359:12;;10296:83;:::o;11148:161::-;11223:4;11240:39;11249:12;:10;:12::i;:::-;11263:7;11272:6;11240:8;:39::i;:::-;11297:4;11290:11;;11148:161;;;;:::o;10573:95::-;10626:7;4479:12;10646:14;;10573:95;:::o;11317:313::-;11415:4;11432:36;11442:6;11450:9;11461:6;11432:9;:36::i;:::-;11479:121;11488:6;11496:12;:10;:12::i;:::-;11510:89;11548:6;11510:89;;;;;;;;;;;;;;;;;:11;:19;11522:6;11510:19;;;;;;;;;;;;;;;:33;11530:12;:10;:12::i;:::-;11510:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;11479:8;:121::i;:::-;11618:4;11611:11;;11317:313;;;;;:::o;24821:100::-;24865:4;24889:24;24907:4;24889:9;:24::i;:::-;24882:31;;24821:100;:::o;10482:83::-;10523:5;4739:1;10541:16;;10482:83;:::o;23800:352::-;2837:12;:10;:12::i;:::-;2827:22;;:6;;;;;;;;;;:22;;;2819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23895:42:::1;23884:53;;:7;:53;;;;23876:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;23998:17;:26;24016:7;23998:26;;;;;;;;;;;;;;;;;;;;;;;;;23997:27;23989:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;24099:4;24070:17;:26;24088:7;24070:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;24114:16;24136:7;24114:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23800:352:::0;:::o;23534:123::-;23598:4;23622:18;:27;23641:7;23622:27;;;;;;;;;;;;;;;;;;;;;;;;;23615:34;;23534:123;;;:::o;22299:160::-;2837:12;:10;:12::i;:::-;2827:22;;:6;;;;;;;;;;:22;;;2819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22390:5:::1;22371:16;;:24;;;;;;;;;;;;;;;;;;22411:40;22434:16;;;;;;;;;;;22411:40;;;;;;:::i;:::-;;;;;;;;22299:160:::0;:::o;25033:124::-;25088:4;25130:8;:15;25139:5;25130:15;;;;;;;;;;;;;;;:19;;;25112:15;:37;;;;:::i;:::-;25105:44;;25033:124;;;:::o;22101:190::-;22167:11;;;;;;;;;;;22151:27;;:12;:10;:12::i;:::-;:27;;;22143:36;;;;;;22190:26;22219:21;22190:50;;22251:32;22264:18;22251:12;:32::i;:::-;22101:190;:::o;10676:138::-;10742:7;10769:37;10789:7;:16;10797:7;10789:16;;;;;;;;;;;;;;;;10769:19;:37::i;:::-;10762:44;;10676:138;;;:::o;2914:148::-;2837:12;:10;:12::i;:::-;2827:22;;:6;;;;;;;;;;:22;;;2819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3021:1:::1;2984:40;;3005:6;::::0;::::1;;;;;;;;2984:40;;;;;;;;;;;;3052:1;3035:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2914:148::o:0;24164:500::-;2837:12;:10;:12::i;:::-;2827:22;;:6;;;;;;;;;;:22;;;2819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24253:17:::1;:26;24271:7;24253:26;;;;;;;;;;;;;;;;;;;;;;;;;24245:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;24326:9;24321:336;24345:16;:23;;;;24341:1;:27;24321:336;;;24417:7;24394:30;;:16;24411:1;24394:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;24390:256;;;24467:16;24510:1;24484:16;:23;;;;:27;;;;:::i;:::-;24467:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24445:16;24462:1;24445:19;;;;;;;;;;;;;;;;;;;;;;;;:67;;;;;;;;;;;;;;;;;;24560:5;24531:17;:26;24549:7;24531:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;24584:16;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24625:5;;24390:256;24370:3;;;;;:::i;:::-;;;;24321:336;;;;24164:500:::0;:::o;2700:79::-;2738:7;2765:6;;;;;;;;;;;2758:13;;2700:79;:::o;10387:87::-;10426:13;10459:7;;;;;;;;;;;;;;;;;10452:14;;10387:87;:::o;10822:167::-;10900:4;10917:42;10927:12;:10;:12::i;:::-;10941:9;10952:6;10917:9;:42::i;:::-;10977:4;10970:11;;10822:167;;;;:::o;24929:96::-;24977:4;25001:16;;;;;;;;;;;24994:23;;24929:96;:::o;24676:137::-;2837:12;:10;:12::i;:::-;2827:22;;:6;;;;;;;;;;:22;;;2819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24797:8:::1;24767:18;:27;24786:7;24767:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;24676:137:::0;;:::o;21898:191::-;21964:11;;;;;;;;;;;21948:27;;:12;:10;:12::i;:::-;:27;;;21940:36;;;;;;21987:23;22013:24;22031:4;22013:9;:24::i;:::-;21987:50;;22048:33;22065:15;22048:16;:33::i;:::-;21898:191;:::o;21757:133::-;2837:12;:10;:12::i;:::-;2827:22;;:6;;;;;;;;;;:22;;;2819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21822:4:::1;21808:11;;:18;;;;;;;;;;;;;;;;;;21870:11;21851:15;:31;;;;:::i;:::-;21837:11;:45;;;;21757:133::o:0;22471:110::-;22529:4;22553:11;:20;22565:7;22553:20;;;;;;;;;;;;;;;;;;;;;;;;;22546:27;;22471:110;;;:::o;25165:101::-;25210:4;25234:24;25244:13;;;;;;;;;;;25234:9;:24::i;:::-;25227:31;;25165:101;:::o;10997:143::-;11078:7;11105:11;:18;11117:5;11105:18;;;;;;;;;;;;;;;:27;11124:7;11105:27;;;;;;;;;;;;;;;;11098:34;;10997:143;;;;:::o;23669:119::-;23730:4;23754:17;:26;23772:7;23754:26;;;;;;;;;;;;;;;;;;;;;;;;;23747:33;;23669:119;;;:::o;20963:786::-;2837:12;:10;:12::i;:::-;2827:22;;:6;;;;;;;;;;:22;;;2819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21028:11:::1;;;;;;;;;;;21027:12;21019:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;21077:35;21134:42;21077:100;;21206:16;21188:15;;:34;;;;;;;;;;;;;;;;;;21233:58;21250:4;21265:15;;;;;;;;;;;4479:12;21233:8;:58::i;:::-;21336:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21318:56;;;21383:4;21390:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21318:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21302:13;;:112;;;;;;;;;;;;;;;;;;21425:15;;;;;;;;;;;:31;;;21464:21;21495:4;21501:24;21519:4;21501:9;:24::i;:::-;21526:1;21528::::0;21530:7:::1;:5;:7::i;:::-;21538:15;21425:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21581:22;21565:13;:38;;;;21644:15;21630:11;:29;;;;21677:13;;;;;;;;;;;21670:29;;;21708:15;;;;;;;;;;;21726:14;21670:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2897:1;20963:786::o:0;22593:443::-;2837:12;:10;:12::i;:::-;2827:22;;:6;;;;;;;;;;:22;;;2819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22685:42:::1;22674:53;;:7;:53;;;;22666:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;22786:11;:20;22798:7;22786:20;;;;;;;;;;;;;;;;;;;;;;;;;22785:21;22777:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;22871:1;22852:7;:16;22860:7;22852:16;;;;;;;;;;;;;;;;:20;22849:108;;;22908:37;22928:7;:16;22936:7;22928:16;;;;;;;;;;;;;;;;22908:19;:37::i;:::-;22889:7;:16;22897:7;22889:16;;;;;;;;;;;;;;;:56;;;;22849:108;22990:4;22967:11;:20;22979:7;22967:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;23005:9;23020:7;23005:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22593:443:::0;:::o;23044:478::-;2837:12;:10;:12::i;:::-;2827:22;;:6;;;;;;;;;;:22;;;2819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23125:11:::1;:20;23137:7;23125:20;;;;;;;;;;;;;;;;;;;;;;;;;23117:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;23193:9;23188:327;23212:9;:16;;;;23208:1;:20;23188:327;;;23270:7;23254:23;;:9;23264:1;23254:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;23250:254;;;23313:9;23342:1;23323:9;:16;;;;:20;;;;:::i;:::-;23313:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23298:9;23308:1;23298:12;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;23382:1;23363:7;:16;23371:7;23363:16;;;;;;;;;;;;;;;:20;;;;23425:5;23402:11;:20;23414:7;23402:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;23449:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23483:5;;23250:254;23230:3;;;;;:::i;:::-;;;;23188:327;;;;23044:478:::0;:::o;109:98::-;162:7;189:10;182:17;;109:98;:::o;12245:335::-;12355:1;12338:19;;:5;:19;;;;12330:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12436:1;12417:21;;:7;:21;;;;12409:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12518:6;12488:11;:18;12500:5;12488:18;;;;;;;;;;;;;;;:27;12507:7;12488:27;;;;;;;;;;;;;;;:36;;;;12556:7;12540:32;;12549:5;12540:32;;;12565:6;12540:32;;;;;;:::i;:::-;;;;;;;;12245:335;;;:::o;12588:2234::-;12692:1;12676:18;;:4;:18;;;;12668:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12769:1;12755:16;;:2;:16;;;;12747:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12839:1;12830:6;:10;12822:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12906:17;:21;12924:2;12906:21;;;;;;;;;;;;;;;;;;;;;;;;;12905:22;12897:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;12975:17;:29;12993:10;12975:29;;;;;;;;;;;;;;;;;;;;;;;;;12974:30;12966:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;13056:7;:5;:7::i;:::-;13048:15;;:4;:15;;;;:32;;;;;13073:7;:5;:7::i;:::-;13067:13;;:2;:13;;;;13048:32;13045:1573;;;13100:16;;;;;;;;;;;13097:168;;;13141:8;:20;13150:10;13141:20;;;;;;;;;;;;;;;:27;;;;;;;;;;;;13137:113;;13216:14;;;;;;;;13221:1;13216:14;;;;13223:1;13216:14;;;;13225:4;13216:14;;;;;13193:8;:20;13202:10;13193:20;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13137:113;13097:168;13312:13;;;;;;;;;;;13304:21;;:4;:21;;;:55;;;;;13343:15;;;;;;;;;;;13329:30;;:2;:30;;;;13304:55;:82;;;;;13364:18;:22;13383:2;13364:22;;;;;;;;;;;;;;;;;;;;;;;;;13363:23;13304:82;13301:613;;;13415:11;;;;;;;;;;;13407:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13484:1;13474:7;:11;;;;13515:1;13504:8;:12;;;;13538:16;;;;;;;;;;;13535:364;;;13596:15;13582:11;;:29;13579:301;;;13658:13;;13648:6;:23;;13640:32;;;;;;13726:15;13707:8;:12;13716:2;13707:12;;;;;;;;;;;;;;;:16;;;:34;13699:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;13845:10;13826:15;:30;;;;:::i;:::-;13807:8;:12;13816:2;13807:12;;;;;;;;;;;;;;;:16;;:49;;;;13579:301;13535:364;13301:613;13961:13;;;;;;;;;;;13955:19;;:2;:19;;;:55;;;;;13994:15;;;;;;;;;;;13978:32;;:4;:32;;;;13955:55;:85;;;;;14016:18;:24;14035:4;14016:24;;;;;;;;;;;;;;;;;;;;;;;;;14014:26;13955:85;13951:168;;;14071:1;14061:7;:11;;;;14102:1;14091:8;:12;;;;13951:168;14135:28;14166:24;14184:4;14166:9;:24::i;:::-;14135:55;;14223:6;;;;;;;;;;14222:7;:32;;;;;14241:13;;;;;;;;;;;14233:21;;:4;:21;;;;14222:32;:47;;;;;14258:11;;;;;;;;;;;14222:47;14219:388;;;14316:1;14293:20;:24;14290:110;;;14342:38;14359:20;14342:16;:38::i;:::-;14290:110;14418:26;14447:21;14418:50;;14511:1;14490:18;:22;14487:105;;;14537:35;14550:21;14537:12;:35::i;:::-;14487:105;14219:388;;13045:1573;;14628:12;14643:4;14628:19;;14663:18;:24;14682:4;14663:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;14691:18;:22;14710:2;14691:22;;;;;;;;;;;;;;;;;;;;;;;;;14663:50;14660:96;;;14739:5;14729:15;;14660:96;14776:38;14791:4;14796:2;14799:6;14806:7;14776:14;:38::i;:::-;12588:2234;;;;:::o;1246:190::-;1332:7;1365:1;1360;:6;;1368:12;1352:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1392:9;1408:1;1404;:5;;;;:::i;:::-;1392:17;;1427:1;1420:8;;;1246:190;;;;;:::o;15329:147::-;15386:11;;;;;;;;;;;:20;;:35;15407:13;15418:1;15407:6;:10;;:13;;;;:::i;:::-;15386:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15432:12;;;;;;;;;;;:21;;:36;15454:13;15465:1;15454:6;:10;;:13;;;;:::i;:::-;15432:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15329:147;:::o;11638:254::-;11705:7;11744;;11733;:18;;11725:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11809:19;11832:10;:8;:10::i;:::-;11809:33;;11860:24;11872:11;11860:7;:11;;:24;;;;:::i;:::-;11853:31;;;11638:254;;;:::o;14830:483::-;5537:4;5528:6;;:13;;;;;;;;;;;;;;;;;;14908:21:::1;14946:1;14932:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14908:40;;14977:4;14959;14964:1;14959:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;15003:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14993:4;14998:1;14993:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;15036:62;15053:4;15068:15;;;;;;;;;;;15086:11;15036:8;:62::i;:::-;15109:15;;;;;;;;;;;:66;;;15190:11;15216:1;15232:4;15259;15279:15;15109:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5552:1;5573:5:::0;5564:6;;:14;;;;;;;;;;;;;;;;;;14830:483;:::o;15488:815::-;15600:7;15596:40;;15622:14;:12;:14::i;:::-;15596:40;15651:11;:19;15663:6;15651:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;15675:11;:22;15687:9;15675:22;;;;;;;;;;;;;;;;;;;;;;;;;15674:23;15651:46;15647:597;;;15714:48;15736:6;15744:9;15755:6;15714:21;:48::i;:::-;15647:597;;;15785:11;:19;15797:6;15785:19;;;;;;;;;;;;;;;;;;;;;;;;;15784:20;:46;;;;;15808:11;:22;15820:9;15808:22;;;;;;;;;;;;;;;;;;;;;;;;;15784:46;15780:464;;;15847:46;15867:6;15875:9;15886:6;15847:19;:46::i;:::-;15780:464;;;15916:11;:19;15928:6;15916:19;;;;;;;;;;;;;;;;;;;;;;;;;15915:20;:47;;;;;15940:11;:22;15952:9;15940:22;;;;;;;;;;;;;;;;;;;;;;;;;15939:23;15915:47;15911:333;;;15979:44;15997:6;16005:9;16016:6;15979:17;:44::i;:::-;15911:333;;;16045:11;:19;16057:6;16045:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;16068:11;:22;16080:9;16068:22;;;;;;;;;;;;;;;;;;;;;;;;;16045:45;16041:203;;;16107:48;16129:6;16137:9;16148:6;16107:21;:48::i;:::-;16041:203;;;16188:44;16206:6;16214:9;16225:6;16188:17;:44::i;:::-;16041:203;15911:333;15780:464;15647:597;16258:7;16254:41;;16280:15;:13;:15::i;:::-;16254:41;15488:815;;;;:::o;1697:132::-;1755:7;1782:39;1786:1;1789;1782:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1775:46;;1697:132;;;;:::o;19395:163::-;19436:7;19457:15;19474;19493:19;:17;:19::i;:::-;19456:56;;;;19530:20;19542:7;19530;:11;;:20;;;;:::i;:::-;19523:27;;;;19395:163;:::o;11900:210::-;11957:1;11946:7;;:12;:29;;;;;11974:1;11962:8;;:13;11946:29;11943:41;;;11977:7;;11943:41;12012:7;;11994:15;:25;;;;12049:8;;12030:16;:27;;;;12078:1;12068:7;:11;;;;12101:1;12090:8;:12;;;;11900:210;:::o;17375:549::-;17478:15;17495:23;17520:12;17534:23;17559:12;17573:13;17590:19;17601:7;17590:10;:19::i;:::-;17477:132;;;;;;;;;;;;17638:28;17658:7;17638;:15;17646:6;17638:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;17620:7;:15;17628:6;17620:15;;;;;;;;;;;;;;;:46;;;;17695:28;17715:7;17695;:15;17703:6;17695:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;17677:7;:15;17685:6;17677:15;;;;;;;;;;;;;;;:46;;;;17755:39;17778:15;17755:7;:18;17763:9;17755:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;17734:7;:18;17742:9;17734:18;;;;;;;;;;;;;;;:60;;;;17806:16;17816:5;17806:9;:16::i;:::-;17833:23;17845:4;17851;17833:11;:23::i;:::-;17889:9;17872:44;;17881:6;17872:44;;;17900:15;17872:44;;;;;;:::i;:::-;;;;;;;;17375:549;;;;;;;;;:::o;16805:564::-;16906:15;16923:23;16948:12;16962:23;16987:12;17001:13;17018:19;17029:7;17018:10;:19::i;:::-;16905:132;;;;;;;;;;;;17066:28;17086:7;17066;:15;17074:6;17066:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;17048:7;:15;17056:6;17048:15;;;;;;;;;;;;;;;:46;;;;17126:39;17149:15;17126:7;:18;17134:9;17126:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;17105:7;:18;17113:9;17105:18;;;;;;;;;;;;;;;:60;;;;17197:39;17220:15;17197:7;:18;17205:9;17197:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;17176:7;:18;17184:9;17176:18;;;;;;;;;;;;;;;:60;;;;17251:16;17261:5;17251:9;:16::i;:::-;17278:23;17290:4;17296;17278:11;:23::i;:::-;17334:9;17317:44;;17326:6;17317:44;;;17345:15;17317:44;;;;;;:::i;:::-;;;;;;;;16805:564;;;;;;;;;:::o;16311:488::-;16410:15;16427:23;16452:12;16466:23;16491:12;16505:13;16522:19;16533:7;16522:10;:19::i;:::-;16409:132;;;;;;;;;;;;16570:28;16590:7;16570;:15;16578:6;16570:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;16552:7;:15;16560:6;16552:15;;;;;;;;;;;;;;;:46;;;;16630:39;16653:15;16630:7;:18;16638:9;16630:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;16609:7;:18;16617:9;16609:18;;;;;;;;;;;;;;;:60;;;;16681:16;16691:5;16681:9;:16::i;:::-;16708:23;16720:4;16726;16708:11;:23::i;:::-;16764:9;16747:44;;16756:6;16747:44;;;16775:15;16747:44;;;;;;:::i;:::-;;;;;;;;16311:488;;;;;;;;;:::o;17930:622::-;18033:15;18050:23;18075:12;18089:23;18114:12;18128:13;18145:19;18156:7;18145:10;:19::i;:::-;18032:132;;;;;;;;;;;;18193:28;18213:7;18193;:15;18201:6;18193:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;18175:7;:15;18183:6;18175:15;;;;;;;;;;;;;;;:46;;;;18250:28;18270:7;18250;:15;18258:6;18250:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;18232:7;:15;18240:6;18232:15;;;;;;;;;;;;;;;:46;;;;18310:39;18333:15;18310:7;:18;18318:9;18310:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;18289:7;:18;18297:9;18289:18;;;;;;;;;;;;;;;:60;;;;18381:39;18404:15;18381:7;:18;18389:9;18381:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;18360:7;:18;18368:9;18360:18;;;;;;;;;;;;;;;:60;;;;18434:16;18444:5;18434:9;:16::i;:::-;18461:23;18473:4;18479;18461:11;:23::i;:::-;18517:9;18500:44;;18509:6;18500:44;;;18528:15;18500:44;;;;;;:::i;:::-;;;;;;;;17930:622;;;;;;;;;:::o;12122:115::-;12176:15;;12166:7;:25;;;;12213:16;;12202:8;:27;;;;12122:115::o;1837:189::-;1923:7;1955:1;1951;:5;1958:12;1943:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1982:9;1998:1;1994;:5;;;;:::i;:::-;1982:17;;2017:1;2010:8;;;1837:189;;;;;:::o;19566:554::-;19616:7;19625;19645:15;19663:7;;19645:25;;19681:15;4479:12;19681:25;;19722:9;19717:289;19741:9;:16;;;;19737:1;:20;19717:289;;;19807:7;19783;:21;19791:9;19801:1;19791:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19783:21;;;;;;;;;;;;;;;;:31;:66;;;;19842:7;19818;:21;19826:9;19836:1;19826:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19818:21;;;;;;;;;;;;;;;;:31;19783:66;19779:97;;;19859:7;;4479:12;19851:25;;;;;;;;;19779:97;19901:34;19913:7;:21;19921:9;19931:1;19921:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19913:21;;;;;;;;;;;;;;;;19901:7;:11;;:34;;;;:::i;:::-;19891:44;;19960:34;19972:7;:21;19980:9;19990:1;19980:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19972:21;;;;;;;;;;;;;;;;19960:7;:11;;:34;;;;:::i;:::-;19950:44;;19759:3;;;;;:::i;:::-;;;;19717:289;;;;20029:20;4479:12;20029:7;;:11;;:20;;;;:::i;:::-;20019:7;:30;20016:60;;;20059:7;;4479:12;20051:25;;;;;;;;20016:60;20095:7;20104;20087:25;;;;;;19566:554;;;:::o;18560:468::-;18619:7;18628;18637;18646;18655;18664;18685:23;18710:12;18724:13;18741:39;18753:7;18762;;18771:8;;18741:11;:39::i;:::-;18684:96;;;;;;18791:19;18814:10;:8;:10::i;:::-;18791:33;;18836:15;18853:23;18878:12;18894:46;18906:7;18915:4;18921:5;18928:11;18894;:46::i;:::-;18835:105;;;;;;18959:7;18968:15;18985:4;18991:15;19008:4;19014:5;18951:69;;;;;;;;;;;;;;;;;;;18560:468;;;;;;;:::o;1102:136::-;1160:7;1187:43;1191:1;1194;1187:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1180:50;;1102:136;;;;:::o;915:179::-;973:7;993:9;1009:1;1005;:5;;;;:::i;:::-;993:17;;1034:1;1029;:6;;1021:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1085:1;1078:8;;;915:179;;;;:::o;20545:214::-;20598:19;20621:10;:8;:10::i;:::-;20598:33;;20642:13;20658:22;20668:11;20658:5;:9;;:22;;;;:::i;:::-;20642:38;;20718:33;20745:5;20718:7;:22;20734:4;20718:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;20693:7;:22;20709:4;20693:22;;;;;;;;;;;;;;;:58;;;;20545:214;;;:::o;20767:147::-;20845:17;20857:4;20845:7;;:11;;:17;;;;:::i;:::-;20835:7;:27;;;;20886:20;20901:4;20886:10;;:14;;:20;;;;:::i;:::-;20873:10;:33;;;;20767:147;;:::o;19036:351::-;19129:7;19138;19147;19167:12;19182:28;19206:3;19182:19;19194:6;19182:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;19167:43;;19221:13;19237:29;19262:3;19237:20;19249:7;19237;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;19221:45;;19277:23;19303:28;19325:5;19303:17;19315:4;19303:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;19277:54;;19350:15;19367:4;19373:5;19342:37;;;;;;;;;19036:351;;;;;;;:::o;20128:409::-;20238:7;20247;20256;20276:15;20294:24;20306:11;20294:7;:11;;:24;;;;:::i;:::-;20276:42;;20329:12;20344:21;20353:11;20344:4;:8;;:21;;;;:::i;:::-;20329:36;;20376:13;20392:22;20402:11;20392:5;:9;;:22;;;;:::i;:::-;20376:38;;20425:23;20451:28;20473:5;20451:17;20463:4;20451:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;20425:54;;20498:7;20507:15;20524:4;20490:39;;;;;;;;;;20128:409;;;;;;;;:::o;1444:245::-;1502:7;1530:1;1525;:6;1522:46;;;1555:1;1548:8;;;;1522:46;1578:9;1594:1;1590;:5;;;;:::i;:::-;1578:17;;1623:1;1618;1614;:5;;;;:::i;:::-;:10;1606:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1680:1;1673:8;;;1444:245;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:137::-;494:5;525:6;519:13;510:22;;541:30;565:5;541:30;:::i;:::-;500:77;;;;:::o;583:139::-;629:5;667:6;654:20;645:29;;683:33;710:5;683:33;:::i;:::-;635:87;;;;:::o;728:143::-;785:5;816:6;810:13;801:22;;832:33;859:5;832:33;:::i;:::-;791:80;;;;:::o;877:262::-;936:6;985:2;973:9;964:7;960:23;956:32;953:2;;;1001:1;998;991:12;953:2;1044:1;1069:53;1114:7;1105:6;1094:9;1090:22;1069:53;:::i;:::-;1059:63;;1015:117;943:196;;;;:::o;1145:284::-;1215:6;1264:2;1252:9;1243:7;1239:23;1235:32;1232:2;;;1280:1;1277;1270:12;1232:2;1323:1;1348:64;1404:7;1395:6;1384:9;1380:22;1348:64;:::i;:::-;1338:74;;1294:128;1222:207;;;;:::o;1435:407::-;1503:6;1511;1560:2;1548:9;1539:7;1535:23;1531:32;1528:2;;;1576:1;1573;1566:12;1528:2;1619:1;1644:53;1689:7;1680:6;1669:9;1665:22;1644:53;:::i;:::-;1634:63;;1590:117;1746:2;1772:53;1817:7;1808:6;1797:9;1793:22;1772:53;:::i;:::-;1762:63;;1717:118;1518:324;;;;;:::o;1848:552::-;1925:6;1933;1941;1990:2;1978:9;1969:7;1965:23;1961:32;1958:2;;;2006:1;2003;1996:12;1958:2;2049:1;2074:53;2119:7;2110:6;2099:9;2095:22;2074:53;:::i;:::-;2064:63;;2020:117;2176:2;2202:53;2247:7;2238:6;2227:9;2223:22;2202:53;:::i;:::-;2192:63;;2147:118;2304:2;2330:53;2375:7;2366:6;2355:9;2351:22;2330:53;:::i;:::-;2320:63;;2275:118;1948:452;;;;;:::o;2406:401::-;2471:6;2479;2528:2;2516:9;2507:7;2503:23;2499:32;2496:2;;;2544:1;2541;2534:12;2496:2;2587:1;2612:53;2657:7;2648:6;2637:9;2633:22;2612:53;:::i;:::-;2602:63;;2558:117;2714:2;2740:50;2782:7;2773:6;2762:9;2758:22;2740:50;:::i;:::-;2730:60;;2685:115;2486:321;;;;;:::o;2813:407::-;2881:6;2889;2938:2;2926:9;2917:7;2913:23;2909:32;2906:2;;;2954:1;2951;2944:12;2906:2;2997:1;3022:53;3067:7;3058:6;3047:9;3043:22;3022:53;:::i;:::-;3012:63;;2968:117;3124:2;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3095:118;2896:324;;;;;:::o;3226:256::-;3282:6;3331:2;3319:9;3310:7;3306:23;3302:32;3299:2;;;3347:1;3344;3337:12;3299:2;3390:1;3415:50;3457:7;3448:6;3437:9;3433:22;3415:50;:::i;:::-;3405:60;;3361:114;3289:193;;;;:::o;3488:278::-;3555:6;3604:2;3592:9;3583:7;3579:23;3575:32;3572:2;;;3620:1;3617;3610:12;3572:2;3663:1;3688:61;3741:7;3732:6;3721:9;3717:22;3688:61;:::i;:::-;3678:71;;3634:125;3562:204;;;;:::o;3772:596::-;3860:6;3868;3876;3925:2;3913:9;3904:7;3900:23;3896:32;3893:2;;;3941:1;3938;3931:12;3893:2;3984:1;4009:64;4065:7;4056:6;4045:9;4041:22;4009:64;:::i;:::-;3999:74;;3955:128;4122:2;4148:64;4204:7;4195:6;4184:9;4180:22;4148:64;:::i;:::-;4138:74;;4093:129;4261:2;4287:64;4343:7;4334:6;4323:9;4319:22;4287:64;:::i;:::-;4277:74;;4232:129;3883:485;;;;;:::o;4374:179::-;4443:10;4464:46;4506:3;4498:6;4464:46;:::i;:::-;4542:4;4537:3;4533:14;4519:28;;4454:99;;;;:::o;4559:108::-;4636:24;4654:5;4636:24;:::i;:::-;4631:3;4624:37;4614:53;;:::o;4673:118::-;4760:24;4778:5;4760:24;:::i;:::-;4755:3;4748:37;4738:53;;:::o;4827:732::-;4946:3;4975:54;5023:5;4975:54;:::i;:::-;5045:86;5124:6;5119:3;5045:86;:::i;:::-;5038:93;;5155:56;5205:5;5155:56;:::i;:::-;5234:7;5265:1;5250:284;5275:6;5272:1;5269:13;5250:284;;;5351:6;5345:13;5378:63;5437:3;5422:13;5378:63;:::i;:::-;5371:70;;5464:60;5517:6;5464:60;:::i;:::-;5454:70;;5310:224;5297:1;5294;5290:9;5285:14;;5250:284;;;5254:14;5550:3;5543:10;;4951:608;;;;;;;:::o;5565:109::-;5646:21;5661:5;5646:21;:::i;:::-;5641:3;5634:34;5624:50;;:::o;5680:147::-;5775:45;5814:5;5775:45;:::i;:::-;5770:3;5763:58;5753:74;;:::o;5833:364::-;5921:3;5949:39;5982:5;5949:39;:::i;:::-;6004:71;6068:6;6063:3;6004:71;:::i;:::-;5997:78;;6084:52;6129:6;6124:3;6117:4;6110:5;6106:16;6084:52;:::i;:::-;6161:29;6183:6;6161:29;:::i;:::-;6156:3;6152:39;6145:46;;5925:272;;;;;:::o;6203:366::-;6345:3;6366:67;6430:2;6425:3;6366:67;:::i;:::-;6359:74;;6442:93;6531:3;6442:93;:::i;:::-;6560:2;6555:3;6551:12;6544:19;;6349:220;;;:::o;6575:366::-;6717:3;6738:67;6802:2;6797:3;6738:67;:::i;:::-;6731:74;;6814:93;6903:3;6814:93;:::i;:::-;6932:2;6927:3;6923:12;6916:19;;6721:220;;;:::o;6947:366::-;7089:3;7110:67;7174:2;7169:3;7110:67;:::i;:::-;7103:74;;7186:93;7275:3;7186:93;:::i;:::-;7304:2;7299:3;7295:12;7288:19;;7093:220;;;:::o;7319:366::-;7461:3;7482:67;7546:2;7541:3;7482:67;:::i;:::-;7475:74;;7558:93;7647:3;7558:93;:::i;:::-;7676:2;7671:3;7667:12;7660:19;;7465:220;;;:::o;7691:366::-;7833:3;7854:67;7918:2;7913:3;7854:67;:::i;:::-;7847:74;;7930:93;8019:3;7930:93;:::i;:::-;8048:2;8043:3;8039:12;8032:19;;7837:220;;;:::o;8063:366::-;8205:3;8226:67;8290:2;8285:3;8226:67;:::i;:::-;8219:74;;8302:93;8391:3;8302:93;:::i;:::-;8420:2;8415:3;8411:12;8404:19;;8209:220;;;:::o;8435:366::-;8577:3;8598:67;8662:2;8657:3;8598:67;:::i;:::-;8591:74;;8674:93;8763:3;8674:93;:::i;:::-;8792:2;8787:3;8783:12;8776:19;;8581:220;;;:::o;8807:366::-;8949:3;8970:67;9034:2;9029:3;8970:67;:::i;:::-;8963:74;;9046:93;9135:3;9046:93;:::i;:::-;9164:2;9159:3;9155:12;9148:19;;8953:220;;;:::o;9179:366::-;9321:3;9342:67;9406:2;9401:3;9342:67;:::i;:::-;9335:74;;9418:93;9507:3;9418:93;:::i;:::-;9536:2;9531:3;9527:12;9520:19;;9325:220;;;:::o;9551:366::-;9693:3;9714:67;9778:2;9773:3;9714:67;:::i;:::-;9707:74;;9790:93;9879:3;9790:93;:::i;:::-;9908:2;9903:3;9899:12;9892:19;;9697:220;;;:::o;9923:366::-;10065:3;10086:67;10150:2;10145:3;10086:67;:::i;:::-;10079:74;;10162:93;10251:3;10162:93;:::i;:::-;10280:2;10275:3;10271:12;10264:19;;10069:220;;;:::o;10295:366::-;10437:3;10458:67;10522:2;10517:3;10458:67;:::i;:::-;10451:74;;10534:93;10623:3;10534:93;:::i;:::-;10652:2;10647:3;10643:12;10636:19;;10441:220;;;:::o;10667:366::-;10809:3;10830:67;10894:2;10889:3;10830:67;:::i;:::-;10823:74;;10906:93;10995:3;10906:93;:::i;:::-;11024:2;11019:3;11015:12;11008:19;;10813:220;;;:::o;11039:366::-;11181:3;11202:67;11266:2;11261:3;11202:67;:::i;:::-;11195:74;;11278:93;11367:3;11278:93;:::i;:::-;11396:2;11391:3;11387:12;11380:19;;11185:220;;;:::o;11411:366::-;11553:3;11574:67;11638:2;11633:3;11574:67;:::i;:::-;11567:74;;11650:93;11739:3;11650:93;:::i;:::-;11768:2;11763:3;11759:12;11752:19;;11557:220;;;:::o;11783:366::-;11925:3;11946:67;12010:2;12005:3;11946:67;:::i;:::-;11939:74;;12022:93;12111:3;12022:93;:::i;:::-;12140:2;12135:3;12131:12;12124:19;;11929:220;;;:::o;12155:366::-;12297:3;12318:67;12382:2;12377:3;12318:67;:::i;:::-;12311:74;;12394:93;12483:3;12394:93;:::i;:::-;12512:2;12507:3;12503:12;12496:19;;12301:220;;;:::o;12527:366::-;12669:3;12690:67;12754:2;12749:3;12690:67;:::i;:::-;12683:74;;12766:93;12855:3;12766:93;:::i;:::-;12884:2;12879:3;12875:12;12868:19;;12673:220;;;:::o;12899:118::-;12986:24;13004:5;12986:24;:::i;:::-;12981:3;12974:37;12964:53;;:::o;13023:112::-;13106:22;13122:5;13106:22;:::i;:::-;13101:3;13094:35;13084:51;;:::o;13141:222::-;13234:4;13272:2;13261:9;13257:18;13249:26;;13285:71;13353:1;13342:9;13338:17;13329:6;13285:71;:::i;:::-;13239:124;;;;:::o;13369:332::-;13490:4;13528:2;13517:9;13513:18;13505:26;;13541:71;13609:1;13598:9;13594:17;13585:6;13541:71;:::i;:::-;13622:72;13690:2;13679:9;13675:18;13666:6;13622:72;:::i;:::-;13495:206;;;;;:::o;13707:332::-;13828:4;13866:2;13855:9;13851:18;13843:26;;13879:71;13947:1;13936:9;13932:17;13923:6;13879:71;:::i;:::-;13960:72;14028:2;14017:9;14013:18;14004:6;13960:72;:::i;:::-;13833:206;;;;;:::o;14045:807::-;14294:4;14332:3;14321:9;14317:19;14309:27;;14346:71;14414:1;14403:9;14399:17;14390:6;14346:71;:::i;:::-;14427:72;14495:2;14484:9;14480:18;14471:6;14427:72;:::i;:::-;14509:80;14585:2;14574:9;14570:18;14561:6;14509:80;:::i;:::-;14599;14675:2;14664:9;14660:18;14651:6;14599:80;:::i;:::-;14689:73;14757:3;14746:9;14742:19;14733:6;14689:73;:::i;:::-;14772;14840:3;14829:9;14825:19;14816:6;14772:73;:::i;:::-;14299:553;;;;;;;;;:::o;14858:210::-;14945:4;14983:2;14972:9;14968:18;14960:26;;14996:65;15058:1;15047:9;15043:17;15034:6;14996:65;:::i;:::-;14950:118;;;;:::o;15074:313::-;15187:4;15225:2;15214:9;15210:18;15202:26;;15274:9;15268:4;15264:20;15260:1;15249:9;15245:17;15238:47;15302:78;15375:4;15366:6;15302:78;:::i;:::-;15294:86;;15192:195;;;;:::o;15393:419::-;15559:4;15597:2;15586:9;15582:18;15574:26;;15646:9;15640:4;15636:20;15632:1;15621:9;15617:17;15610:47;15674:131;15800:4;15674:131;:::i;:::-;15666:139;;15564:248;;;:::o;15818:419::-;15984:4;16022:2;16011:9;16007:18;15999:26;;16071:9;16065:4;16061:20;16057:1;16046:9;16042:17;16035:47;16099:131;16225:4;16099:131;:::i;:::-;16091:139;;15989:248;;;:::o;16243:419::-;16409:4;16447:2;16436:9;16432:18;16424:26;;16496:9;16490:4;16486:20;16482:1;16471:9;16467:17;16460:47;16524:131;16650:4;16524:131;:::i;:::-;16516:139;;16414:248;;;:::o;16668:419::-;16834:4;16872:2;16861:9;16857:18;16849:26;;16921:9;16915:4;16911:20;16907:1;16896:9;16892:17;16885:47;16949:131;17075:4;16949:131;:::i;:::-;16941:139;;16839:248;;;:::o;17093:419::-;17259:4;17297:2;17286:9;17282:18;17274:26;;17346:9;17340:4;17336:20;17332:1;17321:9;17317:17;17310:47;17374:131;17500:4;17374:131;:::i;:::-;17366:139;;17264:248;;;:::o;17518:419::-;17684:4;17722:2;17711:9;17707:18;17699:26;;17771:9;17765:4;17761:20;17757:1;17746:9;17742:17;17735:47;17799:131;17925:4;17799:131;:::i;:::-;17791:139;;17689:248;;;:::o;17943:419::-;18109:4;18147:2;18136:9;18132:18;18124:26;;18196:9;18190:4;18186:20;18182:1;18171:9;18167:17;18160:47;18224:131;18350:4;18224:131;:::i;:::-;18216:139;;18114:248;;;:::o;18368:419::-;18534:4;18572:2;18561:9;18557:18;18549:26;;18621:9;18615:4;18611:20;18607:1;18596:9;18592:17;18585:47;18649:131;18775:4;18649:131;:::i;:::-;18641:139;;18539:248;;;:::o;18793:419::-;18959:4;18997:2;18986:9;18982:18;18974:26;;19046:9;19040:4;19036:20;19032:1;19021:9;19017:17;19010:47;19074:131;19200:4;19074:131;:::i;:::-;19066:139;;18964:248;;;:::o;19218:419::-;19384:4;19422:2;19411:9;19407:18;19399:26;;19471:9;19465:4;19461:20;19457:1;19446:9;19442:17;19435:47;19499:131;19625:4;19499:131;:::i;:::-;19491:139;;19389:248;;;:::o;19643:419::-;19809:4;19847:2;19836:9;19832:18;19824:26;;19896:9;19890:4;19886:20;19882:1;19871:9;19867:17;19860:47;19924:131;20050:4;19924:131;:::i;:::-;19916:139;;19814:248;;;:::o;20068:419::-;20234:4;20272:2;20261:9;20257:18;20249:26;;20321:9;20315:4;20311:20;20307:1;20296:9;20292:17;20285:47;20349:131;20475:4;20349:131;:::i;:::-;20341:139;;20239:248;;;:::o;20493:419::-;20659:4;20697:2;20686:9;20682:18;20674:26;;20746:9;20740:4;20736:20;20732:1;20721:9;20717:17;20710:47;20774:131;20900:4;20774:131;:::i;:::-;20766:139;;20664:248;;;:::o;20918:419::-;21084:4;21122:2;21111:9;21107:18;21099:26;;21171:9;21165:4;21161:20;21157:1;21146:9;21142:17;21135:47;21199:131;21325:4;21199:131;:::i;:::-;21191:139;;21089:248;;;:::o;21343:419::-;21509:4;21547:2;21536:9;21532:18;21524:26;;21596:9;21590:4;21586:20;21582:1;21571:9;21567:17;21560:47;21624:131;21750:4;21624:131;:::i;:::-;21616:139;;21514:248;;;:::o;21768:419::-;21934:4;21972:2;21961:9;21957:18;21949:26;;22021:9;22015:4;22011:20;22007:1;21996:9;21992:17;21985:47;22049:131;22175:4;22049:131;:::i;:::-;22041:139;;21939:248;;;:::o;22193:419::-;22359:4;22397:2;22386:9;22382:18;22374:26;;22446:9;22440:4;22436:20;22432:1;22421:9;22417:17;22410:47;22474:131;22600:4;22474:131;:::i;:::-;22466:139;;22364:248;;;:::o;22618:419::-;22784:4;22822:2;22811:9;22807:18;22799:26;;22871:9;22865:4;22861:20;22857:1;22846:9;22842:17;22835:47;22899:131;23025:4;22899:131;:::i;:::-;22891:139;;22789:248;;;:::o;23043:222::-;23136:4;23174:2;23163:9;23159:18;23151:26;;23187:71;23255:1;23244:9;23240:17;23231:6;23187:71;:::i;:::-;23141:124;;;;:::o;23271:831::-;23534:4;23572:3;23561:9;23557:19;23549:27;;23586:71;23654:1;23643:9;23639:17;23630:6;23586:71;:::i;:::-;23667:80;23743:2;23732:9;23728:18;23719:6;23667:80;:::i;:::-;23794:9;23788:4;23784:20;23779:2;23768:9;23764:18;23757:48;23822:108;23925:4;23916:6;23822:108;:::i;:::-;23814:116;;23940:72;24008:2;23997:9;23993:18;23984:6;23940:72;:::i;:::-;24022:73;24090:3;24079:9;24075:19;24066:6;24022:73;:::i;:::-;23539:563;;;;;;;;:::o;24108:214::-;24197:4;24235:2;24224:9;24220:18;24212:26;;24248:67;24312:1;24301:9;24297:17;24288:6;24248:67;:::i;:::-;24202:120;;;;:::o;24328:132::-;24395:4;24418:3;24410:11;;24448:4;24443:3;24439:14;24431:22;;24400:60;;;:::o;24466:114::-;24533:6;24567:5;24561:12;24551:22;;24540:40;;;:::o;24586:99::-;24638:6;24672:5;24666:12;24656:22;;24645:40;;;:::o;24691:113::-;24761:4;24793;24788:3;24784:14;24776:22;;24766:38;;;:::o;24810:184::-;24909:11;24943:6;24938:3;24931:19;24983:4;24978:3;24974:14;24959:29;;24921:73;;;;:::o;25000:169::-;25084:11;25118:6;25113:3;25106:19;25158:4;25153:3;25149:14;25134:29;;25096:73;;;;:::o;25175:305::-;25215:3;25234:20;25252:1;25234:20;:::i;:::-;25229:25;;25268:20;25286:1;25268:20;:::i;:::-;25263:25;;25422:1;25354:66;25350:74;25347:1;25344:81;25341:2;;;25428:18;;:::i;:::-;25341:2;25472:1;25469;25465:9;25458:16;;25219:261;;;;:::o;25486:185::-;25526:1;25543:20;25561:1;25543:20;:::i;:::-;25538:25;;25577:20;25595:1;25577:20;:::i;:::-;25572:25;;25616:1;25606:2;;25621:18;;:::i;:::-;25606:2;25663:1;25660;25656:9;25651:14;;25528:143;;;;:::o;25677:348::-;25717:7;25740:20;25758:1;25740:20;:::i;:::-;25735:25;;25774:20;25792:1;25774:20;:::i;:::-;25769:25;;25962:1;25894:66;25890:74;25887:1;25884:81;25879:1;25872:9;25865:17;25861:105;25858:2;;;25969:18;;:::i;:::-;25858:2;26017:1;26014;26010:9;25999:20;;25725:300;;;;:::o;26031:191::-;26071:4;26091:20;26109:1;26091:20;:::i;:::-;26086:25;;26125:20;26143:1;26125:20;:::i;:::-;26120:25;;26164:1;26161;26158:8;26155:2;;;26169:18;;:::i;:::-;26155:2;26214:1;26211;26207:9;26199:17;;26076:146;;;;:::o;26228:96::-;26265:7;26294:24;26312:5;26294:24;:::i;:::-;26283:35;;26273:51;;;:::o;26330:90::-;26364:7;26407:5;26400:13;26393:21;26382:32;;26372:48;;;:::o;26426:126::-;26463:7;26503:42;26496:5;26492:54;26481:65;;26471:81;;;:::o;26558:77::-;26595:7;26624:5;26613:16;;26603:32;;;:::o;26641:86::-;26676:7;26716:4;26709:5;26705:16;26694:27;;26684:43;;;:::o;26733:121::-;26791:9;26824:24;26842:5;26824:24;:::i;:::-;26811:37;;26801:53;;;:::o;26860:307::-;26928:1;26938:113;26952:6;26949:1;26946:13;26938:113;;;27037:1;27032:3;27028:11;27022:18;27018:1;27013:3;27009:11;27002:39;26974:2;26971:1;26967:10;26962:15;;26938:113;;;27069:6;27066:1;27063:13;27060:2;;;27149:1;27140:6;27135:3;27131:16;27124:27;27060:2;26909:258;;;;:::o;27173:233::-;27212:3;27235:24;27253:5;27235:24;:::i;:::-;27226:33;;27281:66;27274:5;27271:77;27268:2;;;27351:18;;:::i;:::-;27268:2;27398:1;27391:5;27387:13;27380:20;;27216:190;;;:::o;27412:180::-;27460:77;27457:1;27450:88;27557:4;27554:1;27547:15;27581:4;27578:1;27571:15;27598:180;27646:77;27643:1;27636:88;27743:4;27740:1;27733:15;27767:4;27764:1;27757:15;27784:102;27825:6;27876:2;27872:7;27867:2;27860:5;27856:14;27852:28;27842:38;;27832:54;;;:::o;27892:222::-;28032:34;28028:1;28020:6;28016:14;28009:58;28101:5;28096:2;28088:6;28084:15;28077:30;27998:116;:::o;28120:229::-;28260:34;28256:1;28248:6;28244:14;28237:58;28329:12;28324:2;28316:6;28312:15;28305:37;28226:123;:::o;28355:221::-;28495:34;28491:1;28483:6;28479:14;28472:58;28564:4;28559:2;28551:6;28547:15;28540:29;28461:115;:::o;28582:221::-;28722:34;28718:1;28710:6;28706:14;28699:58;28791:4;28786:2;28778:6;28774:15;28767:29;28688:115;:::o;28809:177::-;28949:29;28945:1;28937:6;28933:14;28926:53;28915:71;:::o;28992:177::-;29132:29;29128:1;29120:6;29116:14;29109:53;29098:71;:::o;29175:180::-;29315:32;29311:1;29303:6;29299:14;29292:56;29281:74;:::o;29361:220::-;29501:34;29497:1;29489:6;29485:14;29478:58;29570:3;29565:2;29557:6;29553:15;29546:28;29467:114;:::o;29587:182::-;29727:34;29723:1;29715:6;29711:14;29704:58;29693:76;:::o;29775:228::-;29915:34;29911:1;29903:6;29899:14;29892:58;29984:11;29979:2;29971:6;29967:15;29960:36;29881:122;:::o;30009:176::-;30149:28;30145:1;30137:6;30133:14;30126:52;30115:70;:::o;30191:223::-;30331:34;30327:1;30319:6;30315:14;30308:58;30400:6;30395:2;30387:6;30383:15;30376:31;30297:117;:::o;30420:224::-;30560:34;30556:1;30548:6;30544:14;30537:58;30629:7;30624:2;30616:6;30612:15;30605:32;30526:118;:::o;30650:223::-;30790:34;30786:1;30778:6;30774:14;30767:58;30859:6;30854:2;30846:6;30842:15;30835:31;30756:117;:::o;30879:173::-;31019:25;31015:1;31007:6;31003:14;30996:49;30985:67;:::o;31058:174::-;31198:26;31194:1;31186:6;31182:14;31175:50;31164:68;:::o;31238:221::-;31378:34;31374:1;31366:6;31362:14;31355:58;31447:4;31442:2;31434:6;31430:15;31423:29;31344:115;:::o;31465:173::-;31605:25;31601:1;31593:6;31589:14;31582:49;31571:67;:::o;31644:122::-;31717:24;31735:5;31717:24;:::i;:::-;31710:5;31707:35;31697:2;;31756:1;31753;31746:12;31697:2;31687:79;:::o;31772:116::-;31842:21;31857:5;31842:21;:::i;:::-;31835:5;31832:32;31822:2;;31878:1;31875;31868:12;31822:2;31812:76;:::o;31894:122::-;31967:24;31985:5;31967:24;:::i;:::-;31960:5;31957:35;31947:2;;32006:1;32003;31996:12;31947:2;31937:79;:::o

Swarm Source

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