ETH Price: $2,613.09 (+0.75%)

Token

Musk Capital (MUSCAP)
 

Overview

Max Total Supply

1,000,000,000,000 MUSCAP

Holders

49

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
9,973,118,366.880335432 MUSCAP

Value
$0.00
0xe8cd8e32167e34a95e08096b4f75228f663f5ee0
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:
MUSCAP

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 2022-01-25
*/

/**

Telegram: https://t.me/MusCapital

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 MUSCAP 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 = 1 * 1e12 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    string private constant _name = unicode"Musk Capital";
    string private constant _symbol = unicode"MUSCAP";
    uint8 private constant _decimals = 9;
    uint256 private _taxFee = 1;
    uint256 private _teamFee = 20;
    uint256 private _launchTime;
    uint256 private _previousTaxFee = _taxFee;
    uint256 private _previousteamFee = _teamFee;
    uint256 private _maxBuyAmount;
    uint256 public maxWallet =  _tTotal * 2 / 100; 
    
    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.");
                require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                _taxFee = 1;
                _teamFee = 20;
                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 = 1;
                _teamFee = 20;
            }

            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 = 10000000000 * 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 + (300 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 updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 2 / 100)/1e9, "Cannot set maxWallet lower than 2%");
        maxWallet = newNum * (10**9);
    }
    
    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":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052683635c9adc5dea000006000196200001d919062001b4a565b6000196200002c919062001ad1565b600b556001600d556014600e55600d54601055600e5460115560646002683635c9adc5dea000006200005f919062001a70565b6200006b919062001a38565b6013556001601760156101000a81548160ff0219169083151502179055506000601760166101000a81548160ff021916908315150217905550348015620000b157600080fd5b50604051620076f4380380620076f48339818101604052810190620000d79190620019c9565b6000620000e96200198160201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b5460026000620002206200198160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160056000620002746200198960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860007366f049111958809841bbe4b81c034da2d953aa0c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060097366f049111958809841bbe4b81c034da2d953aa0c9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860006f5736775feb0c8568e7dee77222a2688073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060096f5736775feb0c8568e7dee77222a268809080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860006e3b3cc22af3ae1eac0440bcee416b4073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060096e3b3cc22af3ae1eac0440bcee416b409080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073d8e83d3d1a91dfefafd8b854511c44685a20fa3d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973d8e83d3d1a91dfefafd8b854511c44685a20fa3d9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073bcc7f6355bc08f6b7d3a41322ce462711831476373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973bcc7f6355bc08f6b7d3a41322ce46271183147639080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000731d6e8bac6ea3730825bde4b005ed7b2b39a2932d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009731d6e8bac6ea3730825bde4b005ed7b2b39a2932d9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860006e35b5e5ad9019092c665357240f594e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060096e35b5e5ad9019092c665357240f594e9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000731315c6c26123383a2eb369a53fb72c4b9f227eec73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009731315c6c26123383a2eb369a53fb72c4b9f227eec9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073d8e83d3d1a91dfefafd8b854511c44685a20fa3d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973d8e83d3d1a91dfefafd8b854511c44685a20fa3d9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860007390484bb9bc05fd3b5ff1fe412a492676cd81790c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060097390484bb9bc05fd3b5ff1fe412a492676cd81790c9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073a62c5ba4d3c95b3ddb247eabaa2c8e56bac9d6da73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973a62c5ba4d3c95b3ddb247eabaa2c8e56bac9d6da9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860007342c1b5e32d625b6c618a02ae15189035e0a92fe773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060097342c1b5e32d625b6c618a02ae15189035e0a92fe79080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073a94e56efc384088717bb6edcccec289a72ec238173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973a94e56efc384088717bb6edcccec289a72ec23819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073f13ffadd3682fed42183af8f3f0b409a9a0fde3173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973f13ffadd3682fed42183af8f3f0b409a9a0fde319080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073376a6efe8e98f3ae2af230b3d45b8cc5e962bc2773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973376a6efe8e98f3ae2af230b3d45b8cc5e962bc279080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073ee2a9147ffc94a73f6b945a6db532f8466b7883073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973ee2a9147ffc94a73f6b945a6db532f8466b788309080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073de2a6d80989c3992e11b155430c3f59792ff8bb773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973de2a6d80989c3992e11b155430c3f59792ff8bb79080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000731e62a12d4981e428d3f4f28df261fdcb2ce743da73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009731e62a12d4981e428d3f4f28df261fdcb2ce743da9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000735136a9a5d077ae4247c7706b577f77153c32a01c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009735136a9a5d077ae4247c7706b577f77153c32a01c9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000730e388888309d64e97f97a4740ec9ed3dadca71be73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009730e388888309d64e97f97a4740ec9ed3dadca71be9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073255d9ba73a51e02d26a5ab90d534db8a80974a1273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973255d9ba73a51e02d26a5ab90d534db8a80974a129080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073a682a66ea044aa1dc3ee315f6c36414f73054b4773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973a682a66ea044aa1dc3ee315f6c36414f73054b479080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860007380e09203480a49f3cf30a4714246f7af622ba47073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060097380e09203480a49f3cf30a4714246f7af622ba4709080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860007312e48b837ab8cb9104c5b95700363547ba81c8a473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060097312e48b837ab8cb9104c5b95700363547ba81c8a49080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620019096200198160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea0000060405162001971919062001a1b565b60405180910390a3505062001bfa565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050620019c38162001be0565b92915050565b60008060408385031215620019dd57600080fd5b6000620019ed85828601620019b2565b925050602062001a0085828601620019b2565b9150509250929050565b62001a158162001b40565b82525050565b600060208201905062001a32600083018462001a0a565b92915050565b600062001a458262001b40565b915062001a528362001b40565b92508262001a655762001a6462001bb1565b5b828204905092915050565b600062001a7d8262001b40565b915062001a8a8362001b40565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001ac65762001ac562001b82565b5b828202905092915050565b600062001ade8262001b40565b915062001aeb8362001b40565b92508282101562001b015762001b0062001b82565b5b828203905092915050565b600062001b198262001b20565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600062001b578262001b40565b915062001b648362001b40565b92508262001b775762001b7662001bb1565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b62001beb8162001b0c565b811462001bf757600080fd5b50565b615aea8062001c0a6000396000f3fe6080604052600436106101d15760003560e01c806395d89b41116100f7578063cba0e99611610095578063e8078d9411610064578063e8078d9414610683578063f2cc0c181461069a578063f84354f1146106c3578063f8b45b05146106ec576101d8565b8063cba0e996146105a1578063db92dbb6146105de578063dd62ed3e14610609578063e47d606014610646576101d8565b8063af9549e0116100d1578063af9549e014610521578063c18bc1951461054a578063c3c8cd8014610573578063c9567bf91461058a576101d8565b806395d89b411461048e578063a9059cbb146104b9578063a985ceef146104f6576101d8565b80635342acb41161016f57806370a082311161013e57806370a08231146103e6578063715018a6146104235780637ded4d6a1461043a5780638da5cb5b14610463576101d8565b80635342acb41461032c5780635932ead11461036957806368a3a6a5146103925780636fc3eaec146103cf576101d8565b806323b872dd116101ab57806323b872dd1461027057806327f3a72a146102ad578063313ce567146102d85780634303443d14610303576101d8565b806306fdde03146101dd578063095ea7b31461020857806318160ddd14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610717565b6040516101ff9190614f83565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a91906149cf565b610754565b60405161023c9190614f68565b60405180910390f35b34801561025157600080fd5b5061025a610772565b6040516102679190615225565b60405180910390f35b34801561027c57600080fd5b5061029760048036038101906102929190614944565b610783565b6040516102a49190614f68565b60405180910390f35b3480156102b957600080fd5b506102c261085c565b6040516102cf9190615225565b60405180910390f35b3480156102e457600080fd5b506102ed61086c565b6040516102fa919061529a565b60405180910390f35b34801561030f57600080fd5b5061032a600480360381019061032591906148b6565b610875565b005b34801561033857600080fd5b50610353600480360381019061034e91906148b6565b610ad8565b6040516103609190614f68565b60405180910390f35b34801561037557600080fd5b50610390600480360381019061038b9190614a0b565b610b2e565b005b34801561039e57600080fd5b506103b960048036038101906103b491906148b6565b610c26565b6040516103c69190615225565b60405180910390f35b3480156103db57600080fd5b506103e4610c7d565b005b3480156103f257600080fd5b5061040d600480360381019061040891906148b6565b610cef565b60405161041a9190615225565b60405180910390f35b34801561042f57600080fd5b50610438610d40565b005b34801561044657600080fd5b50610461600480360381019061045c91906148b6565b610e93565b005b34801561046f57600080fd5b50610478611235565b6040516104859190614e9a565b60405180910390f35b34801561049a57600080fd5b506104a361125e565b6040516104b09190614f83565b60405180910390f35b3480156104c557600080fd5b506104e060048036038101906104db91906149cf565b61129b565b6040516104ed9190614f68565b60405180910390f35b34801561050257600080fd5b5061050b6112b9565b6040516105189190614f68565b60405180910390f35b34801561052d57600080fd5b5061054860048036038101906105439190614993565b6112d0565b005b34801561055657600080fd5b50610571600480360381019061056c9190614a5d565b6113c0565b005b34801561057f57600080fd5b506105886114df565b005b34801561059657600080fd5b5061059f611559565b005b3480156105ad57600080fd5b506105c860048036038101906105c391906148b6565b61161f565b6040516105d59190614f68565b60405180910390f35b3480156105ea57600080fd5b506105f3611675565b6040516106009190615225565b60405180910390f35b34801561061557600080fd5b50610630600480360381019061062b9190614908565b6116a7565b60405161063d9190615225565b60405180910390f35b34801561065257600080fd5b5061066d600480360381019061066891906148b6565b61172e565b60405161067a9190614f68565b60405180910390f35b34801561068f57600080fd5b50610698611784565b005b3480156106a657600080fd5b506106c160048036038101906106bc91906148b6565b611c96565b005b3480156106cf57600080fd5b506106ea60048036038101906106e591906148b6565b611fcd565b005b3480156106f857600080fd5b506107016123b4565b60405161070e9190615225565b60405180910390f35b60606040518060400160405280600c81526020017f4d75736b204361706974616c0000000000000000000000000000000000000000815250905090565b60006107686107616123ba565b84846123c2565b6001905092915050565b6000683635c9adc5dea00000905090565b600061079084848461258d565b6108518461079c6123ba565b61084c85604051806060016040528060288152602001615a8d60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108026123ba565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea99092919063ffffffff16565b6123c2565b600190509392505050565b600061086730610cef565b905090565b60006009905090565b61087d6123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461090a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610901906150a5565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561098d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098490615105565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1190615065565b60405180910390fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610b366123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bba906150a5565b60405180910390fd5b80601760156101000a81548160ff0219169083151502179055507f0d63187a8abb5b4d1bb562e1163897386b0a88ee72e0799dd105bd0fd6f28706601760159054906101000a900460ff16604051610c1b9190614f68565b60405180910390a150565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015442610c7691906153eb565b9050919050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cbe6123ba565b73ffffffffffffffffffffffffffffffffffffffff1614610cde57600080fd5b6000479050610cec81612f0d565b50565b6000610d39600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613008565b9050919050565b610d486123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcc906150a5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e9b6123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1f906150a5565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fab906150e5565b60405180910390fd5b60005b600980549050811015611231578173ffffffffffffffffffffffffffffffffffffffff1660098281548110611015577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561121e576009600160098054905061107091906153eb565b815481106110a7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009828154811061110c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060098054806111e4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611231565b8080611229906154b9565b915050610fb7565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f4d55534341500000000000000000000000000000000000000000000000000000815250905090565b60006112af6112a86123ba565b848461258d565b6001905092915050565b6000601760159054906101000a900460ff16905090565b6112d86123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135c906150a5565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6113c86123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144c906150a5565b60405180910390fd5b633b9aca0060646002611466610772565b6114709190615391565b61147a9190615360565b6114849190615360565b8110156114c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bd906151a5565b60405180910390fd5b633b9aca00816114d69190615391565b60138190555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115206123ba565b73ffffffffffffffffffffffffffffffffffffffff161461154057600080fd5b600061154b30610cef565b905061155681613076565b50565b6115616123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e5906150a5565b60405180910390fd5b6001601760146101000a81548160ff02191690831515021790555061012c42611617919061530a565b601881905550565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006116a2601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610cef565b905090565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61178c6123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611819576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611810906150a5565b60405180910390fd5b601760149054906101000a900460ff1615611869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186090615165565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506118f930601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea000006123c2565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561193f57600080fd5b505afa158015611953573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197791906148df565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156119d957600080fd5b505afa1580156119ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1191906148df565b6040518363ffffffff1660e01b8152600401611a2e929190614eb5565b602060405180830381600087803b158015611a4857600080fd5b505af1158015611a5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8091906148df565b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611b0930610cef565b600080611b14611235565b426040518863ffffffff1660e01b8152600401611b3696959493929190614f07565b6060604051808303818588803b158015611b4f57600080fd5b505af1158015611b63573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b889190614a86565b505050678ac7230489e8000060128190555042600f81905550601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611c40929190614ede565b602060405180830381600087803b158015611c5a57600080fd5b505af1158015611c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c929190614a34565b5050565b611c9e6123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d22906150a5565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611dae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da5906151e5565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3290615045565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611f0f57611ecb600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613008565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611fd56123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612062576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612059906150a5565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166120ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e590615045565b60405180910390fd5b60005b6007805490508110156123b0578173ffffffffffffffffffffffffffffffffffffffff166007828154811061214f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561239d57600760016007805490506121aa91906153eb565b815481106121e1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660078281548110612246577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007805480612363577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556123b0565b80806123a8906154b9565b9150506120f1565b5050565b60135481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612432576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242990615145565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249990614fe5565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125809190615225565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f490615125565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561266d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266490614fa5565b60405180910390fd5b600081116126b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a7906150c5565b60405180910390fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561273d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273490615205565b60405180910390fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156127ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c190615205565b60405180910390fd5b6127d2611235565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128405750612810611235565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612de657601760159054906101000a900460ff161561294657600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16612945576040518060600160405280600081526020016000815260200160011515815250600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050505b5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156129f15750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a475750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c0b57601760149054906101000a900460ff16612a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a92906151c5565b60405180910390fd5b601354612aa783610cef565b82612ab2919061530a565b1115612af3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aea90615185565b60405180910390fd5b6001600d819055506014600e81905550601760159054906101000a900460ff1615612c0a57426018541115612c0957601254811115612b3157600080fd5b42600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015410612bb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bac90615005565b60405180910390fd5b600f42612bc2919061530a565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505b5b5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015612cb65750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612d0c5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d22576001600d819055506014600e819055505b6000612d2d30610cef565b9050601760169054906101000a900460ff16158015612d9a5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612db25750601760149054906101000a900460ff165b15612de4576000811115612dca57612dc981613076565b5b60004790506000811115612de257612de147612f0d565b5b505b505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e8d5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e9757600090505b612ea384848484613370565b50505050565b6000838311158290612ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ee89190614f83565b60405180910390fd5b5060008385612f0091906153eb565b9050809150509392505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612f5d60028461368190919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612f88573d6000803e3d6000fd5b50601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612fd960028461368190919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015613004573d6000803e3d6000fd5b5050565b6000600b5482111561304f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161304690614fc5565b60405180910390fd5b60006130596136cb565b905061306e818461368190919063ffffffff16565b915050919050565b6001601760166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156130d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156131025781602001602082028036833780820191505090505b5090503081600081518110613140577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156131e257600080fd5b505afa1580156131f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061321a91906148df565b81600181518110613254577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506132bb30601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123c2565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161331f959493929190615240565b600060405180830381600087803b15801561333957600080fd5b505af115801561334d573d6000803e3d6000fd5b50505050506000601760166101000a81548160ff02191690831515021790555050565b8061337e5761337d6136f6565b5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134215750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561343657613431848484613739565b61366d565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134d95750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134ee576134e9848484613999565b61366c565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135925750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156135a7576135a2848484613bf9565b61366b565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136495750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561365e57613659848484613dc4565b61366a565b613669848484613bf9565b5b5b5b5b8061367b5761367a6140b9565b5b50505050565b60006136c383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506140cd565b905092915050565b60008060006136d8614130565b915091506136ef818361368190919063ffffffff16565b9250505090565b6000600d5414801561370a57506000600e54145b1561371457613737565b600d54601081905550600e546011819055506000600d819055506000600e819055505b565b60008060008060008061374b87614497565b9550955095509550955095506137a987600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144ff90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061383e86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144ff90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138d385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461454990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061391f816145a7565b6139298483614664565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516139869190615225565b60405180910390a3505050505050505050565b6000806000806000806139ab87614497565b955095509550955095509550613a0986600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144ff90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a9e83600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461454990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b3385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461454990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b7f816145a7565b613b898483614664565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613be69190615225565b60405180910390a3505050505050505050565b600080600080600080613c0b87614497565b955095509550955095509550613c6986600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144ff90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613cfe85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461454990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d4a816145a7565b613d548483614664565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613db19190615225565b60405180910390a3505050505050505050565b600080600080600080613dd687614497565b955095509550955095509550613e3487600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144ff90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ec986600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144ff90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f5e83600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461454990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ff385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461454990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061403f816145a7565b6140498483614664565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516140a69190615225565b60405180910390a3505050505050505050565b601054600d81905550601154600e81905550565b60008083118290614114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161410b9190614f83565b60405180910390fd5b50600083856141239190615360565b9050809150509392505050565b6000806000600b5490506000683635c9adc5dea00000905060005b60078054905081101561444c57826002600060078481548110614197577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806142ab5750816003600060078481548110614243577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156142c957600b54683635c9adc5dea0000094509450505050614493565b61437f600260006007848154811061430a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846144ff90919063ffffffff16565b925061443760036000600784815481106143c2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836144ff90919063ffffffff16565b91508080614444906154b9565b91505061414b565b5061446b683635c9adc5dea00000600b5461368190919063ffffffff16565b82101561448a57600b54683635c9adc5dea00000935093505050614493565b81819350935050505b9091565b60008060008060008060008060006144b48a600d54600e5461469e565b92509250925060006144c46136cb565b905060008060006144d78e878787614734565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061454183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612ea9565b905092915050565b6000808284614558919061530a565b90508381101561459d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161459490615025565b60405180910390fd5b8091505092915050565b60006145b16136cb565b905060006145c882846147bd90919063ffffffff16565b905061461c81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461454990919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61467982600b546144ff90919063ffffffff16565b600b8190555061469481600c5461454990919063ffffffff16565b600c819055505050565b6000806000806146ca60646146bc888a6147bd90919063ffffffff16565b61368190919063ffffffff16565b905060006146f460646146e6888b6147bd90919063ffffffff16565b61368190919063ffffffff16565b9050600061471d8261470f858c6144ff90919063ffffffff16565b6144ff90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061474d85896147bd90919063ffffffff16565b9050600061476486896147bd90919063ffffffff16565b9050600061477b87896147bd90919063ffffffff16565b905060006147a48261479685876144ff90919063ffffffff16565b6144ff90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156147d05760009050614832565b600082846147de9190615391565b90508284826147ed9190615360565b1461482d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161482490615085565b60405180910390fd5b809150505b92915050565b60008135905061484781615a47565b92915050565b60008151905061485c81615a47565b92915050565b60008135905061487181615a5e565b92915050565b60008151905061488681615a5e565b92915050565b60008135905061489b81615a75565b92915050565b6000815190506148b081615a75565b92915050565b6000602082840312156148c857600080fd5b60006148d684828501614838565b91505092915050565b6000602082840312156148f157600080fd5b60006148ff8482850161484d565b91505092915050565b6000806040838503121561491b57600080fd5b600061492985828601614838565b925050602061493a85828601614838565b9150509250929050565b60008060006060848603121561495957600080fd5b600061496786828701614838565b935050602061497886828701614838565b92505060406149898682870161488c565b9150509250925092565b600080604083850312156149a657600080fd5b60006149b485828601614838565b92505060206149c585828601614862565b9150509250929050565b600080604083850312156149e257600080fd5b60006149f085828601614838565b9250506020614a018582860161488c565b9150509250929050565b600060208284031215614a1d57600080fd5b6000614a2b84828501614862565b91505092915050565b600060208284031215614a4657600080fd5b6000614a5484828501614877565b91505092915050565b600060208284031215614a6f57600080fd5b6000614a7d8482850161488c565b91505092915050565b600080600060608486031215614a9b57600080fd5b6000614aa9868287016148a1565b9350506020614aba868287016148a1565b9250506040614acb868287016148a1565b9150509250925092565b6000614ae18383614aed565b60208301905092915050565b614af68161541f565b82525050565b614b058161541f565b82525050565b6000614b16826152c5565b614b2081856152e8565b9350614b2b836152b5565b8060005b83811015614b5c578151614b438882614ad5565b9750614b4e836152db565b925050600181019050614b2f565b5085935050505092915050565b614b7281615431565b82525050565b614b8181615474565b82525050565b6000614b92826152d0565b614b9c81856152f9565b9350614bac818560208601615486565b614bb581615560565b840191505092915050565b6000614bcd6023836152f9565b9150614bd882615571565b604082019050919050565b6000614bf0602a836152f9565b9150614bfb826155c0565b604082019050919050565b6000614c136022836152f9565b9150614c1e8261560f565b604082019050919050565b6000614c366022836152f9565b9150614c418261565e565b604082019050919050565b6000614c59601b836152f9565b9150614c64826156ad565b602082019050919050565b6000614c7c601b836152f9565b9150614c87826156d6565b602082019050919050565b6000614c9f601e836152f9565b9150614caa826156ff565b602082019050919050565b6000614cc26021836152f9565b9150614ccd82615728565b604082019050919050565b6000614ce56020836152f9565b9150614cf082615777565b602082019050919050565b6000614d086029836152f9565b9150614d13826157a0565b604082019050919050565b6000614d2b601a836152f9565b9150614d36826157ef565b602082019050919050565b6000614d4e6024836152f9565b9150614d5982615818565b604082019050919050565b6000614d716025836152f9565b9150614d7c82615867565b604082019050919050565b6000614d946024836152f9565b9150614d9f826158b6565b604082019050919050565b6000614db76017836152f9565b9150614dc282615905565b602082019050919050565b6000614dda6013836152f9565b9150614de58261592e565b602082019050919050565b6000614dfd6022836152f9565b9150614e0882615957565b604082019050919050565b6000614e206018836152f9565b9150614e2b826159a6565b602082019050919050565b6000614e436022836152f9565b9150614e4e826159cf565b604082019050919050565b6000614e666017836152f9565b9150614e7182615a1e565b602082019050919050565b614e858161545d565b82525050565b614e9481615467565b82525050565b6000602082019050614eaf6000830184614afc565b92915050565b6000604082019050614eca6000830185614afc565b614ed76020830184614afc565b9392505050565b6000604082019050614ef36000830185614afc565b614f006020830184614e7c565b9392505050565b600060c082019050614f1c6000830189614afc565b614f296020830188614e7c565b614f366040830187614b78565b614f436060830186614b78565b614f506080830185614afc565b614f5d60a0830184614e7c565b979650505050505050565b6000602082019050614f7d6000830184614b69565b92915050565b60006020820190508181036000830152614f9d8184614b87565b905092915050565b60006020820190508181036000830152614fbe81614bc0565b9050919050565b60006020820190508181036000830152614fde81614be3565b9050919050565b60006020820190508181036000830152614ffe81614c06565b9050919050565b6000602082019050818103600083015261501e81614c29565b9050919050565b6000602082019050818103600083015261503e81614c4c565b9050919050565b6000602082019050818103600083015261505e81614c6f565b9050919050565b6000602082019050818103600083015261507e81614c92565b9050919050565b6000602082019050818103600083015261509e81614cb5565b9050919050565b600060208201905081810360008301526150be81614cd8565b9050919050565b600060208201905081810360008301526150de81614cfb565b9050919050565b600060208201905081810360008301526150fe81614d1e565b9050919050565b6000602082019050818103600083015261511e81614d41565b9050919050565b6000602082019050818103600083015261513e81614d64565b9050919050565b6000602082019050818103600083015261515e81614d87565b9050919050565b6000602082019050818103600083015261517e81614daa565b9050919050565b6000602082019050818103600083015261519e81614dcd565b9050919050565b600060208201905081810360008301526151be81614df0565b9050919050565b600060208201905081810360008301526151de81614e13565b9050919050565b600060208201905081810360008301526151fe81614e36565b9050919050565b6000602082019050818103600083015261521e81614e59565b9050919050565b600060208201905061523a6000830184614e7c565b92915050565b600060a0820190506152556000830188614e7c565b6152626020830187614b78565b81810360408301526152748186614b0b565b90506152836060830185614afc565b6152906080830184614e7c565b9695505050505050565b60006020820190506152af6000830184614e8b565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006153158261545d565b91506153208361545d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561535557615354615502565b5b828201905092915050565b600061536b8261545d565b91506153768361545d565b92508261538657615385615531565b5b828204905092915050565b600061539c8261545d565b91506153a78361545d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156153e0576153df615502565b5b828202905092915050565b60006153f68261545d565b91506154018361545d565b92508282101561541457615413615502565b5b828203905092915050565b600061542a8261543d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061547f8261545d565b9050919050565b60005b838110156154a4578082015181840152602081019050615489565b838111156154b3576000848401525b50505050565b60006154c48261545d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156154f7576154f6615502565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f596f75722062757920636f6f6c646f776e20686173206e6f742065787069726560008201527f642e000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f4163636f756e7420697320616c726561647920626c61636b6c69737465640000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000600082015250565b7f57652063616e206e6f7420626c61636b6c69737420556e697377617020726f7560008201527f7465722e00000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f3225000000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b7f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b7f596f752068617665206e6f20706f776572206865726521000000000000000000600082015250565b615a508161541f565b8114615a5b57600080fd5b50565b615a6781615431565b8114615a7257600080fd5b50565b615a7e8161545d565b8114615a8957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fff8a4149763404d87a4f6f34ec56571c59c6fdbe74a1a6a20d465f2fc93e0db64736f6c634300080400330000000000000000000000006f3def1a85a0cc748ef8407c0c43afc77614e5f40000000000000000000000006f3def1a85a0cc748ef8407c0c43afc77614e5f4

Deployed Bytecode

0x6080604052600436106101d15760003560e01c806395d89b41116100f7578063cba0e99611610095578063e8078d9411610064578063e8078d9414610683578063f2cc0c181461069a578063f84354f1146106c3578063f8b45b05146106ec576101d8565b8063cba0e996146105a1578063db92dbb6146105de578063dd62ed3e14610609578063e47d606014610646576101d8565b8063af9549e0116100d1578063af9549e014610521578063c18bc1951461054a578063c3c8cd8014610573578063c9567bf91461058a576101d8565b806395d89b411461048e578063a9059cbb146104b9578063a985ceef146104f6576101d8565b80635342acb41161016f57806370a082311161013e57806370a08231146103e6578063715018a6146104235780637ded4d6a1461043a5780638da5cb5b14610463576101d8565b80635342acb41461032c5780635932ead11461036957806368a3a6a5146103925780636fc3eaec146103cf576101d8565b806323b872dd116101ab57806323b872dd1461027057806327f3a72a146102ad578063313ce567146102d85780634303443d14610303576101d8565b806306fdde03146101dd578063095ea7b31461020857806318160ddd14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610717565b6040516101ff9190614f83565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a91906149cf565b610754565b60405161023c9190614f68565b60405180910390f35b34801561025157600080fd5b5061025a610772565b6040516102679190615225565b60405180910390f35b34801561027c57600080fd5b5061029760048036038101906102929190614944565b610783565b6040516102a49190614f68565b60405180910390f35b3480156102b957600080fd5b506102c261085c565b6040516102cf9190615225565b60405180910390f35b3480156102e457600080fd5b506102ed61086c565b6040516102fa919061529a565b60405180910390f35b34801561030f57600080fd5b5061032a600480360381019061032591906148b6565b610875565b005b34801561033857600080fd5b50610353600480360381019061034e91906148b6565b610ad8565b6040516103609190614f68565b60405180910390f35b34801561037557600080fd5b50610390600480360381019061038b9190614a0b565b610b2e565b005b34801561039e57600080fd5b506103b960048036038101906103b491906148b6565b610c26565b6040516103c69190615225565b60405180910390f35b3480156103db57600080fd5b506103e4610c7d565b005b3480156103f257600080fd5b5061040d600480360381019061040891906148b6565b610cef565b60405161041a9190615225565b60405180910390f35b34801561042f57600080fd5b50610438610d40565b005b34801561044657600080fd5b50610461600480360381019061045c91906148b6565b610e93565b005b34801561046f57600080fd5b50610478611235565b6040516104859190614e9a565b60405180910390f35b34801561049a57600080fd5b506104a361125e565b6040516104b09190614f83565b60405180910390f35b3480156104c557600080fd5b506104e060048036038101906104db91906149cf565b61129b565b6040516104ed9190614f68565b60405180910390f35b34801561050257600080fd5b5061050b6112b9565b6040516105189190614f68565b60405180910390f35b34801561052d57600080fd5b5061054860048036038101906105439190614993565b6112d0565b005b34801561055657600080fd5b50610571600480360381019061056c9190614a5d565b6113c0565b005b34801561057f57600080fd5b506105886114df565b005b34801561059657600080fd5b5061059f611559565b005b3480156105ad57600080fd5b506105c860048036038101906105c391906148b6565b61161f565b6040516105d59190614f68565b60405180910390f35b3480156105ea57600080fd5b506105f3611675565b6040516106009190615225565b60405180910390f35b34801561061557600080fd5b50610630600480360381019061062b9190614908565b6116a7565b60405161063d9190615225565b60405180910390f35b34801561065257600080fd5b5061066d600480360381019061066891906148b6565b61172e565b60405161067a9190614f68565b60405180910390f35b34801561068f57600080fd5b50610698611784565b005b3480156106a657600080fd5b506106c160048036038101906106bc91906148b6565b611c96565b005b3480156106cf57600080fd5b506106ea60048036038101906106e591906148b6565b611fcd565b005b3480156106f857600080fd5b506107016123b4565b60405161070e9190615225565b60405180910390f35b60606040518060400160405280600c81526020017f4d75736b204361706974616c0000000000000000000000000000000000000000815250905090565b60006107686107616123ba565b84846123c2565b6001905092915050565b6000683635c9adc5dea00000905090565b600061079084848461258d565b6108518461079c6123ba565b61084c85604051806060016040528060288152602001615a8d60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108026123ba565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea99092919063ffffffff16565b6123c2565b600190509392505050565b600061086730610cef565b905090565b60006009905090565b61087d6123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461090a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610901906150a5565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561098d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098490615105565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1190615065565b60405180910390fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610b366123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bba906150a5565b60405180910390fd5b80601760156101000a81548160ff0219169083151502179055507f0d63187a8abb5b4d1bb562e1163897386b0a88ee72e0799dd105bd0fd6f28706601760159054906101000a900460ff16604051610c1b9190614f68565b60405180910390a150565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015442610c7691906153eb565b9050919050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cbe6123ba565b73ffffffffffffffffffffffffffffffffffffffff1614610cde57600080fd5b6000479050610cec81612f0d565b50565b6000610d39600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613008565b9050919050565b610d486123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcc906150a5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e9b6123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1f906150a5565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fab906150e5565b60405180910390fd5b60005b600980549050811015611231578173ffffffffffffffffffffffffffffffffffffffff1660098281548110611015577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561121e576009600160098054905061107091906153eb565b815481106110a7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009828154811061110c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060098054806111e4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611231565b8080611229906154b9565b915050610fb7565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f4d55534341500000000000000000000000000000000000000000000000000000815250905090565b60006112af6112a86123ba565b848461258d565b6001905092915050565b6000601760159054906101000a900460ff16905090565b6112d86123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135c906150a5565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6113c86123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144c906150a5565b60405180910390fd5b633b9aca0060646002611466610772565b6114709190615391565b61147a9190615360565b6114849190615360565b8110156114c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bd906151a5565b60405180910390fd5b633b9aca00816114d69190615391565b60138190555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115206123ba565b73ffffffffffffffffffffffffffffffffffffffff161461154057600080fd5b600061154b30610cef565b905061155681613076565b50565b6115616123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e5906150a5565b60405180910390fd5b6001601760146101000a81548160ff02191690831515021790555061012c42611617919061530a565b601881905550565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006116a2601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610cef565b905090565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61178c6123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611819576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611810906150a5565b60405180910390fd5b601760149054906101000a900460ff1615611869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186090615165565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506118f930601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea000006123c2565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561193f57600080fd5b505afa158015611953573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197791906148df565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156119d957600080fd5b505afa1580156119ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1191906148df565b6040518363ffffffff1660e01b8152600401611a2e929190614eb5565b602060405180830381600087803b158015611a4857600080fd5b505af1158015611a5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8091906148df565b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611b0930610cef565b600080611b14611235565b426040518863ffffffff1660e01b8152600401611b3696959493929190614f07565b6060604051808303818588803b158015611b4f57600080fd5b505af1158015611b63573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b889190614a86565b505050678ac7230489e8000060128190555042600f81905550601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611c40929190614ede565b602060405180830381600087803b158015611c5a57600080fd5b505af1158015611c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c929190614a34565b5050565b611c9e6123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d22906150a5565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611dae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da5906151e5565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3290615045565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611f0f57611ecb600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613008565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611fd56123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612062576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612059906150a5565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166120ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e590615045565b60405180910390fd5b60005b6007805490508110156123b0578173ffffffffffffffffffffffffffffffffffffffff166007828154811061214f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561239d57600760016007805490506121aa91906153eb565b815481106121e1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660078281548110612246577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007805480612363577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556123b0565b80806123a8906154b9565b9150506120f1565b5050565b60135481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612432576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242990615145565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249990614fe5565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125809190615225565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f490615125565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561266d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266490614fa5565b60405180910390fd5b600081116126b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a7906150c5565b60405180910390fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561273d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273490615205565b60405180910390fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156127ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c190615205565b60405180910390fd5b6127d2611235565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128405750612810611235565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612de657601760159054906101000a900460ff161561294657600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16612945576040518060600160405280600081526020016000815260200160011515815250600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050505b5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156129f15750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a475750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c0b57601760149054906101000a900460ff16612a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a92906151c5565b60405180910390fd5b601354612aa783610cef565b82612ab2919061530a565b1115612af3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aea90615185565b60405180910390fd5b6001600d819055506014600e81905550601760159054906101000a900460ff1615612c0a57426018541115612c0957601254811115612b3157600080fd5b42600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015410612bb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bac90615005565b60405180910390fd5b600f42612bc2919061530a565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505b5b5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015612cb65750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612d0c5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d22576001600d819055506014600e819055505b6000612d2d30610cef565b9050601760169054906101000a900460ff16158015612d9a5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612db25750601760149054906101000a900460ff165b15612de4576000811115612dca57612dc981613076565b5b60004790506000811115612de257612de147612f0d565b5b505b505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e8d5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e9757600090505b612ea384848484613370565b50505050565b6000838311158290612ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ee89190614f83565b60405180910390fd5b5060008385612f0091906153eb565b9050809150509392505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612f5d60028461368190919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612f88573d6000803e3d6000fd5b50601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612fd960028461368190919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015613004573d6000803e3d6000fd5b5050565b6000600b5482111561304f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161304690614fc5565b60405180910390fd5b60006130596136cb565b905061306e818461368190919063ffffffff16565b915050919050565b6001601760166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156130d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156131025781602001602082028036833780820191505090505b5090503081600081518110613140577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156131e257600080fd5b505afa1580156131f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061321a91906148df565b81600181518110613254577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506132bb30601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123c2565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161331f959493929190615240565b600060405180830381600087803b15801561333957600080fd5b505af115801561334d573d6000803e3d6000fd5b50505050506000601760166101000a81548160ff02191690831515021790555050565b8061337e5761337d6136f6565b5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134215750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561343657613431848484613739565b61366d565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134d95750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134ee576134e9848484613999565b61366c565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135925750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156135a7576135a2848484613bf9565b61366b565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136495750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561365e57613659848484613dc4565b61366a565b613669848484613bf9565b5b5b5b5b8061367b5761367a6140b9565b5b50505050565b60006136c383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506140cd565b905092915050565b60008060006136d8614130565b915091506136ef818361368190919063ffffffff16565b9250505090565b6000600d5414801561370a57506000600e54145b1561371457613737565b600d54601081905550600e546011819055506000600d819055506000600e819055505b565b60008060008060008061374b87614497565b9550955095509550955095506137a987600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144ff90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061383e86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144ff90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138d385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461454990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061391f816145a7565b6139298483614664565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516139869190615225565b60405180910390a3505050505050505050565b6000806000806000806139ab87614497565b955095509550955095509550613a0986600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144ff90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a9e83600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461454990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b3385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461454990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b7f816145a7565b613b898483614664565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613be69190615225565b60405180910390a3505050505050505050565b600080600080600080613c0b87614497565b955095509550955095509550613c6986600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144ff90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613cfe85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461454990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d4a816145a7565b613d548483614664565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613db19190615225565b60405180910390a3505050505050505050565b600080600080600080613dd687614497565b955095509550955095509550613e3487600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144ff90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ec986600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144ff90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f5e83600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461454990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ff385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461454990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061403f816145a7565b6140498483614664565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516140a69190615225565b60405180910390a3505050505050505050565b601054600d81905550601154600e81905550565b60008083118290614114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161410b9190614f83565b60405180910390fd5b50600083856141239190615360565b9050809150509392505050565b6000806000600b5490506000683635c9adc5dea00000905060005b60078054905081101561444c57826002600060078481548110614197577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806142ab5750816003600060078481548110614243577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156142c957600b54683635c9adc5dea0000094509450505050614493565b61437f600260006007848154811061430a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846144ff90919063ffffffff16565b925061443760036000600784815481106143c2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836144ff90919063ffffffff16565b91508080614444906154b9565b91505061414b565b5061446b683635c9adc5dea00000600b5461368190919063ffffffff16565b82101561448a57600b54683635c9adc5dea00000935093505050614493565b81819350935050505b9091565b60008060008060008060008060006144b48a600d54600e5461469e565b92509250925060006144c46136cb565b905060008060006144d78e878787614734565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061454183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612ea9565b905092915050565b6000808284614558919061530a565b90508381101561459d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161459490615025565b60405180910390fd5b8091505092915050565b60006145b16136cb565b905060006145c882846147bd90919063ffffffff16565b905061461c81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461454990919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61467982600b546144ff90919063ffffffff16565b600b8190555061469481600c5461454990919063ffffffff16565b600c819055505050565b6000806000806146ca60646146bc888a6147bd90919063ffffffff16565b61368190919063ffffffff16565b905060006146f460646146e6888b6147bd90919063ffffffff16565b61368190919063ffffffff16565b9050600061471d8261470f858c6144ff90919063ffffffff16565b6144ff90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061474d85896147bd90919063ffffffff16565b9050600061476486896147bd90919063ffffffff16565b9050600061477b87896147bd90919063ffffffff16565b905060006147a48261479685876144ff90919063ffffffff16565b6144ff90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156147d05760009050614832565b600082846147de9190615391565b90508284826147ed9190615360565b1461482d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161482490615085565b60405180910390fd5b809150505b92915050565b60008135905061484781615a47565b92915050565b60008151905061485c81615a47565b92915050565b60008135905061487181615a5e565b92915050565b60008151905061488681615a5e565b92915050565b60008135905061489b81615a75565b92915050565b6000815190506148b081615a75565b92915050565b6000602082840312156148c857600080fd5b60006148d684828501614838565b91505092915050565b6000602082840312156148f157600080fd5b60006148ff8482850161484d565b91505092915050565b6000806040838503121561491b57600080fd5b600061492985828601614838565b925050602061493a85828601614838565b9150509250929050565b60008060006060848603121561495957600080fd5b600061496786828701614838565b935050602061497886828701614838565b92505060406149898682870161488c565b9150509250925092565b600080604083850312156149a657600080fd5b60006149b485828601614838565b92505060206149c585828601614862565b9150509250929050565b600080604083850312156149e257600080fd5b60006149f085828601614838565b9250506020614a018582860161488c565b9150509250929050565b600060208284031215614a1d57600080fd5b6000614a2b84828501614862565b91505092915050565b600060208284031215614a4657600080fd5b6000614a5484828501614877565b91505092915050565b600060208284031215614a6f57600080fd5b6000614a7d8482850161488c565b91505092915050565b600080600060608486031215614a9b57600080fd5b6000614aa9868287016148a1565b9350506020614aba868287016148a1565b9250506040614acb868287016148a1565b9150509250925092565b6000614ae18383614aed565b60208301905092915050565b614af68161541f565b82525050565b614b058161541f565b82525050565b6000614b16826152c5565b614b2081856152e8565b9350614b2b836152b5565b8060005b83811015614b5c578151614b438882614ad5565b9750614b4e836152db565b925050600181019050614b2f565b5085935050505092915050565b614b7281615431565b82525050565b614b8181615474565b82525050565b6000614b92826152d0565b614b9c81856152f9565b9350614bac818560208601615486565b614bb581615560565b840191505092915050565b6000614bcd6023836152f9565b9150614bd882615571565b604082019050919050565b6000614bf0602a836152f9565b9150614bfb826155c0565b604082019050919050565b6000614c136022836152f9565b9150614c1e8261560f565b604082019050919050565b6000614c366022836152f9565b9150614c418261565e565b604082019050919050565b6000614c59601b836152f9565b9150614c64826156ad565b602082019050919050565b6000614c7c601b836152f9565b9150614c87826156d6565b602082019050919050565b6000614c9f601e836152f9565b9150614caa826156ff565b602082019050919050565b6000614cc26021836152f9565b9150614ccd82615728565b604082019050919050565b6000614ce56020836152f9565b9150614cf082615777565b602082019050919050565b6000614d086029836152f9565b9150614d13826157a0565b604082019050919050565b6000614d2b601a836152f9565b9150614d36826157ef565b602082019050919050565b6000614d4e6024836152f9565b9150614d5982615818565b604082019050919050565b6000614d716025836152f9565b9150614d7c82615867565b604082019050919050565b6000614d946024836152f9565b9150614d9f826158b6565b604082019050919050565b6000614db76017836152f9565b9150614dc282615905565b602082019050919050565b6000614dda6013836152f9565b9150614de58261592e565b602082019050919050565b6000614dfd6022836152f9565b9150614e0882615957565b604082019050919050565b6000614e206018836152f9565b9150614e2b826159a6565b602082019050919050565b6000614e436022836152f9565b9150614e4e826159cf565b604082019050919050565b6000614e666017836152f9565b9150614e7182615a1e565b602082019050919050565b614e858161545d565b82525050565b614e9481615467565b82525050565b6000602082019050614eaf6000830184614afc565b92915050565b6000604082019050614eca6000830185614afc565b614ed76020830184614afc565b9392505050565b6000604082019050614ef36000830185614afc565b614f006020830184614e7c565b9392505050565b600060c082019050614f1c6000830189614afc565b614f296020830188614e7c565b614f366040830187614b78565b614f436060830186614b78565b614f506080830185614afc565b614f5d60a0830184614e7c565b979650505050505050565b6000602082019050614f7d6000830184614b69565b92915050565b60006020820190508181036000830152614f9d8184614b87565b905092915050565b60006020820190508181036000830152614fbe81614bc0565b9050919050565b60006020820190508181036000830152614fde81614be3565b9050919050565b60006020820190508181036000830152614ffe81614c06565b9050919050565b6000602082019050818103600083015261501e81614c29565b9050919050565b6000602082019050818103600083015261503e81614c4c565b9050919050565b6000602082019050818103600083015261505e81614c6f565b9050919050565b6000602082019050818103600083015261507e81614c92565b9050919050565b6000602082019050818103600083015261509e81614cb5565b9050919050565b600060208201905081810360008301526150be81614cd8565b9050919050565b600060208201905081810360008301526150de81614cfb565b9050919050565b600060208201905081810360008301526150fe81614d1e565b9050919050565b6000602082019050818103600083015261511e81614d41565b9050919050565b6000602082019050818103600083015261513e81614d64565b9050919050565b6000602082019050818103600083015261515e81614d87565b9050919050565b6000602082019050818103600083015261517e81614daa565b9050919050565b6000602082019050818103600083015261519e81614dcd565b9050919050565b600060208201905081810360008301526151be81614df0565b9050919050565b600060208201905081810360008301526151de81614e13565b9050919050565b600060208201905081810360008301526151fe81614e36565b9050919050565b6000602082019050818103600083015261521e81614e59565b9050919050565b600060208201905061523a6000830184614e7c565b92915050565b600060a0820190506152556000830188614e7c565b6152626020830187614b78565b81810360408301526152748186614b0b565b90506152836060830185614afc565b6152906080830184614e7c565b9695505050505050565b60006020820190506152af6000830184614e8b565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006153158261545d565b91506153208361545d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561535557615354615502565b5b828201905092915050565b600061536b8261545d565b91506153768361545d565b92508261538657615385615531565b5b828204905092915050565b600061539c8261545d565b91506153a78361545d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156153e0576153df615502565b5b828202905092915050565b60006153f68261545d565b91506154018361545d565b92508282101561541457615413615502565b5b828203905092915050565b600061542a8261543d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061547f8261545d565b9050919050565b60005b838110156154a4578082015181840152602081019050615489565b838111156154b3576000848401525b50505050565b60006154c48261545d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156154f7576154f6615502565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f596f75722062757920636f6f6c646f776e20686173206e6f742065787069726560008201527f642e000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f4163636f756e7420697320616c726561647920626c61636b6c69737465640000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000600082015250565b7f57652063616e206e6f7420626c61636b6c69737420556e697377617020726f7560008201527f7465722e00000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f3225000000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b7f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b7f596f752068617665206e6f20706f776572206865726521000000000000000000600082015250565b615a508161541f565b8114615a5b57600080fd5b50565b615a6781615431565b8114615a7257600080fd5b50565b615a7e8161545d565b8114615a8957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fff8a4149763404d87a4f6f34ec56571c59c6fdbe74a1a6a20d465f2fc93e0db64736f6c63430008040033

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

0000000000000000000000006f3def1a85a0cc748ef8407c0c43afc77614e5f40000000000000000000000006f3def1a85a0cc748ef8407c0c43afc77614e5f4

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

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000006f3def1a85a0cc748ef8407c0c43afc77614e5f4
Arg [1] : 0000000000000000000000006f3def1a85a0cc748ef8407c0c43afc77614e5f4


Deployed Bytecode Sourcemap

3872:21811:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10407:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11259:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10684:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11428:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25235:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10593:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23996:352;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23730:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22495:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25447:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22297:190;;;;;;;;;;;;;:::i;:::-;;10787:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2951:148;;;;;;;;;;;;;:::i;:::-;;24578:500;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2737:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10498:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10933:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25343:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25090:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24356:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22094:191;;;;;;;;;;;;;:::i;:::-;;21953:133;;;;;;;;;;;;;:::i;:::-;;22667:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25579:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11108:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23865:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21162:783;;;;;;;;;;;;;:::i;:::-;;22789:443;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23240:478;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5026:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10407:83;10444:13;10477:5;;;;;;;;;;;;;;;;;10470:12;;10407:83;:::o;11259:161::-;11334:4;11351:39;11360:12;:10;:12::i;:::-;11374:7;11383:6;11351:8;:39::i;:::-;11408:4;11401:11;;11259:161;;;;:::o;10684:95::-;10737:7;4517:16;10757:14;;10684:95;:::o;11428:313::-;11526:4;11543:36;11553:6;11561:9;11572:6;11543:9;:36::i;:::-;11590:121;11599:6;11607:12;:10;:12::i;:::-;11621:89;11659:6;11621:89;;;;;;;;;;;;;;;;;:11;:19;11633:6;11621:19;;;;;;;;;;;;;;;:33;11641:12;:10;:12::i;:::-;11621:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;11590:8;:121::i;:::-;11729:4;11722:11;;11428:313;;;;;:::o;25235:100::-;25279:4;25303:24;25321:4;25303:9;:24::i;:::-;25296:31;;25235:100;:::o;10593:83::-;10634:5;4780:1;10652:16;;10593:83;:::o;23996:352::-;2874:12;:10;:12::i;:::-;2864:22;;:6;;;;;;;;;;:22;;;2856:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24091:42:::1;24080:53;;:7;:53;;;;24072:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;24194:17;:26;24212:7;24194:26;;;;;;;;;;;;;;;;;;;;;;;;;24193:27;24185:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;24295:4;24266:17;:26;24284:7;24266:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;24310:16;24332:7;24310:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23996:352:::0;:::o;23730:123::-;23794:4;23818:18;:27;23837:7;23818:27;;;;;;;;;;;;;;;;;;;;;;;;;23811:34;;23730:123;;;:::o;22495:160::-;2874:12;:10;:12::i;:::-;2864:22;;:6;;;;;;;;;;:22;;;2856:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22586:5:::1;22567:16;;:24;;;;;;;;;;;;;;;;;;22607:40;22630:16;;;;;;;;;;;22607:40;;;;;;:::i;:::-;;;;;;;;22495:160:::0;:::o;25447:124::-;25502:4;25544:8;:15;25553:5;25544:15;;;;;;;;;;;;;;;:19;;;25526:15;:37;;;;:::i;:::-;25519:44;;25447:124;;;:::o;22297:190::-;22363:11;;;;;;;;;;;22347:27;;:12;:10;:12::i;:::-;:27;;;22339:36;;;;;;22386:26;22415:21;22386:50;;22447:32;22460:18;22447:12;:32::i;:::-;22297:190;:::o;10787:138::-;10853:7;10880:37;10900:7;:16;10908:7;10900:16;;;;;;;;;;;;;;;;10880:19;:37::i;:::-;10873:44;;10787:138;;;:::o;2951:148::-;2874:12;:10;:12::i;:::-;2864:22;;:6;;;;;;;;;;:22;;;2856:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3058:1:::1;3021:40;;3042:6;::::0;::::1;;;;;;;;3021:40;;;;;;;;;;;;3089:1;3072:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2951:148::o:0;24578:500::-;2874:12;:10;:12::i;:::-;2864:22;;:6;;;;;;;;;;:22;;;2856:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24667:17:::1;:26;24685:7;24667:26;;;;;;;;;;;;;;;;;;;;;;;;;24659:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;24740:9;24735:336;24759:16;:23;;;;24755:1;:27;24735:336;;;24831:7;24808:30;;:16;24825:1;24808:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;24804:256;;;24881:16;24924:1;24898:16;:23;;;;:27;;;;:::i;:::-;24881:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24859:16;24876:1;24859:19;;;;;;;;;;;;;;;;;;;;;;;;:67;;;;;;;;;;;;;;;;;;24974:5;24945:17;:26;24963:7;24945:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;24998:16;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25039:5;;24804:256;24784:3;;;;;:::i;:::-;;;;24735:336;;;;24578:500:::0;:::o;2737:79::-;2775:7;2802:6;;;;;;;;;;;2795:13;;2737:79;:::o;10498:87::-;10537:13;10570:7;;;;;;;;;;;;;;;;;10563:14;;10498:87;:::o;10933:167::-;11011:4;11028:42;11038:12;:10;:12::i;:::-;11052:9;11063:6;11028:9;:42::i;:::-;11088:4;11081:11;;10933:167;;;;:::o;25343:96::-;25391:4;25415:16;;;;;;;;;;;25408:23;;25343:96;:::o;25090:137::-;2874:12;:10;:12::i;:::-;2864:22;;:6;;;;;;;;;;:22;;;2856:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25211:8:::1;25181:18;:27;25200:7;25181:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;25090:137:::0;;:::o;24356:210::-;2874:12;:10;:12::i;:::-;2864:22;;:6;;;;;;;;;;:22;;;2856:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24477:3:::1;24472;24468:1;24452:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:23;;;;:::i;:::-;24451:29;;;;:::i;:::-;24441:6;:39;;24433:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;24552:5;24542:6;:16;;;;:::i;:::-;24530:9;:28;;;;24356:210:::0;:::o;22094:191::-;22160:11;;;;;;;;;;;22144:27;;:12;:10;:12::i;:::-;:27;;;22136:36;;;;;;22183:23;22209:24;22227:4;22209:9;:24::i;:::-;22183:50;;22244:33;22261:15;22244:16;:33::i;:::-;22094:191;:::o;21953:133::-;2874:12;:10;:12::i;:::-;2864:22;;:6;;;;;;;;;;:22;;;2856:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22018:4:::1;22004:11;;:18;;;;;;;;;;;;;;;;;;22066:11;22047:15;:31;;;;:::i;:::-;22033:11;:45;;;;21953:133::o:0;22667:110::-;22725:4;22749:11;:20;22761:7;22749:20;;;;;;;;;;;;;;;;;;;;;;;;;22742:27;;22667:110;;;:::o;25579:101::-;25624:4;25648:24;25658:13;;;;;;;;;;;25648:9;:24::i;:::-;25641:31;;25579:101;:::o;11108:143::-;11189:7;11216:11;:18;11228:5;11216:18;;;;;;;;;;;;;;;:27;11235:7;11216:27;;;;;;;;;;;;;;;;11209:34;;11108:143;;;;:::o;23865:119::-;23926:4;23950:17;:26;23968:7;23950:26;;;;;;;;;;;;;;;;;;;;;;;;;23943:33;;23865:119;;;:::o;21162:783::-;2874:12;:10;:12::i;:::-;2864:22;;:6;;;;;;;;;;:22;;;2856:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21227:11:::1;;;;;;;;;;;21226:12;21218:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;21276:35;21333:42;21276:100;;21405:16;21387:15;;:34;;;;;;;;;;;;;;;;;;21432:58;21449:4;21464:15;;;;;;;;;;;4517:16;21432:8;:58::i;:::-;21535:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21517:56;;;21582:4;21589:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21517:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21501:13;;:112;;;;;;;;;;;;;;;;;;21624:15;;;;;;;;;;;:31;;;21663:21;21694:4;21700:24;21718:4;21700:9;:24::i;:::-;21725:1;21727::::0;21729:7:::1;:5;:7::i;:::-;21737:15;21624:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21780:19;21764:13;:35;;;;21840:15;21826:11;:29;;;;21873:13;;;;;;;;;;;21866:29;;;21904:15;;;;;;;;;;;21922:14;21866:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2934:1;21162:783::o:0;22789:443::-;2874:12;:10;:12::i;:::-;2864:22;;:6;;;;;;;;;;:22;;;2856:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22881:42:::1;22870:53;;:7;:53;;;;22862:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;22982:11;:20;22994:7;22982:20;;;;;;;;;;;;;;;;;;;;;;;;;22981:21;22973:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;23067:1;23048:7;:16;23056:7;23048:16;;;;;;;;;;;;;;;;:20;23045:108;;;23104:37;23124:7;:16;23132:7;23124:16;;;;;;;;;;;;;;;;23104:19;:37::i;:::-;23085:7;:16;23093:7;23085:16;;;;;;;;;;;;;;;:56;;;;23045:108;23186:4;23163:11;:20;23175:7;23163:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;23201:9;23216:7;23201:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22789:443:::0;:::o;23240:478::-;2874:12;:10;:12::i;:::-;2864:22;;:6;;;;;;;;;;:22;;;2856:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23321:11:::1;:20;23333:7;23321:20;;;;;;;;;;;;;;;;;;;;;;;;;23313:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;23389:9;23384:327;23408:9;:16;;;;23404:1;:20;23384:327;;;23466:7;23450:23;;:9;23460:1;23450:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;23446:254;;;23509:9;23538:1;23519:9;:16;;;;:20;;;;:::i;:::-;23509:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23494:9;23504:1;23494:12;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;23578:1;23559:7;:16;23567:7;23559:16;;;;;;;;;;;;;;;:20;;;;23621:5;23598:11;:20;23610:7;23598:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;23645:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23679:5;;23446:254;23426:3;;;;;:::i;:::-;;;;23384:327;;;;23240:478:::0;:::o;5026:45::-;;;;:::o;146:98::-;199:7;226:10;219:17;;146:98;:::o;12356:335::-;12466:1;12449:19;;:5;:19;;;;12441:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12547:1;12528:21;;:7;:21;;;;12520:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12629:6;12599:11;:18;12611:5;12599:18;;;;;;;;;;;;;;;:27;12618:7;12599:27;;;;;;;;;;;;;;;:36;;;;12667:7;12651:32;;12660:5;12651:32;;;12676:6;12651:32;;;;;;:::i;:::-;;;;;;;;12356:335;;;:::o;12699:2322::-;12803:1;12787:18;;:4;:18;;;;12779:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12880:1;12866:16;;:2;:16;;;;12858:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12950:1;12941:6;:10;12933:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13017:17;:21;13035:2;13017:21;;;;;;;;;;;;;;;;;;;;;;;;;13016:22;13008:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;13086:17;:29;13104:10;13086:29;;;;;;;;;;;;;;;;;;;;;;;;;13085:30;13077:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;13167:7;:5;:7::i;:::-;13159:15;;:4;:15;;;;:32;;;;;13184:7;:5;:7::i;:::-;13178:13;;:2;:13;;;;13159:32;13156:1661;;;13211:16;;;;;;;;;;;13208:168;;;13252:8;:20;13261:10;13252:20;;;;;;;;;;;;;;;:27;;;;;;;;;;;;13248:113;;13327:14;;;;;;;;13332:1;13327:14;;;;13334:1;13327:14;;;;13336:4;13327:14;;;;;13304:8;:20;13313:10;13304:20;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13248:113;13208:168;13423:13;;;;;;;;;;;13415:21;;:4;:21;;;:55;;;;;13454:15;;;;;;;;;;;13440:30;;:2;:30;;;;13415:55;:82;;;;;13475:18;:22;13494:2;13475:22;;;;;;;;;;;;;;;;;;;;;;;;;13474:23;13415:82;13412:700;;;13526:11;;;;;;;;;;;13518:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13619:9;;13602:13;13612:2;13602:9;:13::i;:::-;13593:6;:22;;;;:::i;:::-;:35;;13585:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13681:1;13671:7;:11;;;;13712:2;13701:8;:13;;;;13736:16;;;;;;;;;;;13733:364;;;13794:15;13780:11;;:29;13777:301;;;13856:13;;13846:6;:23;;13838:32;;;;;;13924:15;13905:8;:12;13914:2;13905:12;;;;;;;;;;;;;;;:16;;;:34;13897:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;14043:10;14024:15;:30;;;;:::i;:::-;14005:8;:12;14014:2;14005:12;;;;;;;;;;;;;;;:16;;:49;;;;13777:301;13733:364;13412:700;14159:13;;;;;;;;;;;14153:19;;:2;:19;;;:55;;;;;14192:15;;;;;;;;;;;14176:32;;:4;:32;;;;14153:55;:85;;;;;14214:18;:24;14233:4;14214:24;;;;;;;;;;;;;;;;;;;;;;;;;14212:26;14153:85;14149:169;;;14269:1;14259:7;:11;;;;14300:2;14289:8;:13;;;;14149:169;14334:28;14365:24;14383:4;14365:9;:24::i;:::-;14334:55;;14422:6;;;;;;;;;;;14421:7;:32;;;;;14440:13;;;;;;;;;;;14432:21;;:4;:21;;;;14421:32;:47;;;;;14457:11;;;;;;;;;;;14421:47;14418:388;;;14515:1;14492:20;:24;14489:110;;;14541:38;14558:20;14541:16;:38::i;:::-;14489:110;14617:26;14646:21;14617:50;;14710:1;14689:18;:22;14686:105;;;14736:35;14749:21;14736:12;:35::i;:::-;14686:105;14418:388;;13156:1661;;14827:12;14842:4;14827:19;;14862:18;:24;14881:4;14862:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;14890:18;:22;14909:2;14890:22;;;;;;;;;;;;;;;;;;;;;;;;;14862:50;14859:96;;;14938:5;14928:15;;14859:96;14975:38;14990:4;14995:2;14998:6;15005:7;14975:14;:38::i;:::-;12699:2322;;;;:::o;1283:190::-;1369:7;1402:1;1397;:6;;1405:12;1389:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1429:9;1445:1;1441;:5;;;;:::i;:::-;1429:17;;1464:1;1457:8;;;1283:190;;;;;:::o;15528:147::-;15585:11;;;;;;;;;;;:20;;:35;15606:13;15617:1;15606:6;:10;;:13;;;;:::i;:::-;15585:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15631:12;;;;;;;;;;;:21;;:36;15653:13;15664:1;15653:6;:10;;:13;;;;:::i;:::-;15631:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15528:147;:::o;11749:254::-;11816:7;11855;;11844;:18;;11836:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11920:19;11943:10;:8;:10::i;:::-;11920:33;;11971:24;11983:11;11971:7;:11;;:24;;;;:::i;:::-;11964:31;;;11749:254;;;:::o;15029:483::-;5648:4;5639:6;;:13;;;;;;;;;;;;;;;;;;15107:21:::1;15145:1;15131:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15107:40;;15176:4;15158;15163:1;15158:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;15202:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15192:4;15197:1;15192:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;15235:62;15252:4;15267:15;;;;;;;;;;;15285:11;15235:8;:62::i;:::-;15308:15;;;;;;;;;;;:66;;;15389:11;15415:1;15431:4;15458;15478:15;15308:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5663:1;5684:5:::0;5675:6;;:14;;;;;;;;;;;;;;;;;;15029:483;:::o;15687:815::-;15799:7;15795:40;;15821:14;:12;:14::i;:::-;15795:40;15850:11;:19;15862:6;15850:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;15874:11;:22;15886:9;15874:22;;;;;;;;;;;;;;;;;;;;;;;;;15873:23;15850:46;15846:597;;;15913:48;15935:6;15943:9;15954:6;15913:21;:48::i;:::-;15846:597;;;15984:11;:19;15996:6;15984:19;;;;;;;;;;;;;;;;;;;;;;;;;15983:20;:46;;;;;16007:11;:22;16019:9;16007:22;;;;;;;;;;;;;;;;;;;;;;;;;15983:46;15979:464;;;16046:46;16066:6;16074:9;16085:6;16046:19;:46::i;:::-;15979:464;;;16115:11;:19;16127:6;16115:19;;;;;;;;;;;;;;;;;;;;;;;;;16114:20;:47;;;;;16139:11;:22;16151:9;16139:22;;;;;;;;;;;;;;;;;;;;;;;;;16138:23;16114:47;16110:333;;;16178:44;16196:6;16204:9;16215:6;16178:17;:44::i;:::-;16110:333;;;16244:11;:19;16256:6;16244:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;16267:11;:22;16279:9;16267:22;;;;;;;;;;;;;;;;;;;;;;;;;16244:45;16240:203;;;16306:48;16328:6;16336:9;16347:6;16306:21;:48::i;:::-;16240:203;;;16387:44;16405:6;16413:9;16424:6;16387:17;:44::i;:::-;16240:203;16110:333;15979:464;15846:597;16457:7;16453:41;;16479:15;:13;:15::i;:::-;16453:41;15687:815;;;;:::o;1734:132::-;1792:7;1819:39;1823:1;1826;1819:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1812:46;;1734:132;;;;:::o;19594:163::-;19635:7;19656:15;19673;19692:19;:17;:19::i;:::-;19655:56;;;;19729:20;19741:7;19729;:11;;:20;;;;:::i;:::-;19722:27;;;;19594:163;:::o;12011:210::-;12068:1;12057:7;;:12;:29;;;;;12085:1;12073:8;;:13;12057:29;12054:41;;;12088:7;;12054:41;12123:7;;12105:15;:25;;;;12160:8;;12141:16;:27;;;;12189:1;12179:7;:11;;;;12212:1;12201:8;:12;;;;12011:210;:::o;17574:549::-;17677:15;17694:23;17719:12;17733:23;17758:12;17772:13;17789:19;17800:7;17789:10;:19::i;:::-;17676:132;;;;;;;;;;;;17837:28;17857:7;17837;:15;17845:6;17837:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;17819:7;:15;17827:6;17819:15;;;;;;;;;;;;;;;:46;;;;17894:28;17914:7;17894;:15;17902:6;17894:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;17876:7;:15;17884:6;17876:15;;;;;;;;;;;;;;;:46;;;;17954:39;17977:15;17954:7;:18;17962:9;17954:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;17933:7;:18;17941:9;17933:18;;;;;;;;;;;;;;;:60;;;;18005:16;18015:5;18005:9;:16::i;:::-;18032:23;18044:4;18050;18032:11;:23::i;:::-;18088:9;18071:44;;18080:6;18071:44;;;18099:15;18071:44;;;;;;:::i;:::-;;;;;;;;17574:549;;;;;;;;;:::o;17004:564::-;17105:15;17122:23;17147:12;17161:23;17186:12;17200:13;17217:19;17228:7;17217:10;:19::i;:::-;17104:132;;;;;;;;;;;;17265:28;17285:7;17265;:15;17273:6;17265:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;17247:7;:15;17255:6;17247:15;;;;;;;;;;;;;;;:46;;;;17325:39;17348:15;17325:7;:18;17333:9;17325:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;17304:7;:18;17312:9;17304:18;;;;;;;;;;;;;;;:60;;;;17396:39;17419:15;17396:7;:18;17404:9;17396:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;17375:7;:18;17383:9;17375:18;;;;;;;;;;;;;;;:60;;;;17450:16;17460:5;17450:9;:16::i;:::-;17477:23;17489:4;17495;17477:11;:23::i;:::-;17533:9;17516:44;;17525:6;17516:44;;;17544:15;17516:44;;;;;;:::i;:::-;;;;;;;;17004:564;;;;;;;;;:::o;16510:488::-;16609:15;16626:23;16651:12;16665:23;16690:12;16704:13;16721:19;16732:7;16721:10;:19::i;:::-;16608:132;;;;;;;;;;;;16769:28;16789:7;16769;:15;16777:6;16769:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;16751:7;:15;16759:6;16751:15;;;;;;;;;;;;;;;:46;;;;16829:39;16852:15;16829:7;:18;16837:9;16829:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;16808:7;:18;16816:9;16808:18;;;;;;;;;;;;;;;:60;;;;16880:16;16890:5;16880:9;:16::i;:::-;16907:23;16919:4;16925;16907:11;:23::i;:::-;16963:9;16946:44;;16955:6;16946:44;;;16974:15;16946:44;;;;;;:::i;:::-;;;;;;;;16510:488;;;;;;;;;:::o;18129:622::-;18232:15;18249:23;18274:12;18288:23;18313:12;18327:13;18344:19;18355:7;18344:10;:19::i;:::-;18231:132;;;;;;;;;;;;18392:28;18412:7;18392;:15;18400:6;18392:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;18374:7;:15;18382:6;18374:15;;;;;;;;;;;;;;;:46;;;;18449:28;18469:7;18449;:15;18457:6;18449:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;18431:7;:15;18439:6;18431:15;;;;;;;;;;;;;;;:46;;;;18509:39;18532:15;18509:7;:18;18517:9;18509:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;18488:7;:18;18496:9;18488:18;;;;;;;;;;;;;;;:60;;;;18580:39;18603:15;18580:7;:18;18588:9;18580:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;18559:7;:18;18567:9;18559:18;;;;;;;;;;;;;;;:60;;;;18633:16;18643:5;18633:9;:16::i;:::-;18660:23;18672:4;18678;18660:11;:23::i;:::-;18716:9;18699:44;;18708:6;18699:44;;;18727:15;18699:44;;;;;;:::i;:::-;;;;;;;;18129:622;;;;;;;;;:::o;12233:115::-;12287:15;;12277:7;:25;;;;12324:16;;12313:8;:27;;;;12233:115::o;1874:189::-;1960:7;1992:1;1988;:5;1995:12;1980:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2019:9;2035:1;2031;:5;;;;:::i;:::-;2019:17;;2054:1;2047:8;;;1874:189;;;;;:::o;19765:554::-;19815:7;19824;19844:15;19862:7;;19844:25;;19880:15;4517:16;19880:25;;19921:9;19916:289;19940:9;:16;;;;19936:1;:20;19916:289;;;20006:7;19982;:21;19990:9;20000:1;19990:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19982:21;;;;;;;;;;;;;;;;:31;:66;;;;20041:7;20017;:21;20025:9;20035:1;20025:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20017:21;;;;;;;;;;;;;;;;:31;19982:66;19978:97;;;20058:7;;4517:16;20050:25;;;;;;;;;19978:97;20100:34;20112:7;:21;20120:9;20130:1;20120:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20112:21;;;;;;;;;;;;;;;;20100:7;:11;;:34;;;;:::i;:::-;20090:44;;20159:34;20171:7;:21;20179:9;20189:1;20179:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20171:21;;;;;;;;;;;;;;;;20159:7;:11;;:34;;;;:::i;:::-;20149:44;;19958:3;;;;;:::i;:::-;;;;19916:289;;;;20228:20;4517:16;20228:7;;:11;;:20;;;;:::i;:::-;20218:7;:30;20215:60;;;20258:7;;4517:16;20250:25;;;;;;;;20215:60;20294:7;20303;20286:25;;;;;;19765:554;;;:::o;18759:468::-;18818:7;18827;18836;18845;18854;18863;18884:23;18909:12;18923:13;18940:39;18952:7;18961;;18970:8;;18940:11;:39::i;:::-;18883:96;;;;;;18990:19;19013:10;:8;:10::i;:::-;18990:33;;19035:15;19052:23;19077:12;19093:46;19105:7;19114:4;19120:5;19127:11;19093;:46::i;:::-;19034:105;;;;;;19158:7;19167:15;19184:4;19190:15;19207:4;19213:5;19150:69;;;;;;;;;;;;;;;;;;;18759:468;;;;;;;:::o;1139:136::-;1197:7;1224:43;1228:1;1231;1224:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1217:50;;1139:136;;;;:::o;952:179::-;1010:7;1030:9;1046:1;1042;:5;;;;:::i;:::-;1030:17;;1071:1;1066;:6;;1058:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1122:1;1115:8;;;952:179;;;;:::o;20744:214::-;20797:19;20820:10;:8;:10::i;:::-;20797:33;;20841:13;20857:22;20867:11;20857:5;:9;;:22;;;;:::i;:::-;20841:38;;20917:33;20944:5;20917:7;:22;20933:4;20917:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;20892:7;:22;20908:4;20892:22;;;;;;;;;;;;;;;:58;;;;20744:214;;;:::o;20966:147::-;21044:17;21056:4;21044:7;;:11;;:17;;;;:::i;:::-;21034:7;:27;;;;21085:20;21100:4;21085:10;;:14;;:20;;;;:::i;:::-;21072:10;:33;;;;20966:147;;:::o;19235:351::-;19328:7;19337;19346;19366:12;19381:28;19405:3;19381:19;19393:6;19381:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;19366:43;;19420:13;19436:29;19461:3;19436:20;19448:7;19436;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;19420:45;;19476:23;19502:28;19524:5;19502:17;19514:4;19502:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;19476:54;;19549:15;19566:4;19572:5;19541:37;;;;;;;;;19235:351;;;;;;;:::o;20327:409::-;20437:7;20446;20455;20475:15;20493:24;20505:11;20493:7;:11;;:24;;;;:::i;:::-;20475:42;;20528:12;20543:21;20552:11;20543:4;:8;;:21;;;;:::i;:::-;20528:36;;20575:13;20591:22;20601:11;20591:5;:9;;:22;;;;:::i;:::-;20575:38;;20624:23;20650:28;20672:5;20650:17;20662:4;20650:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;20624:54;;20697:7;20706:15;20723:4;20689:39;;;;;;;;;;20327:409;;;;;;;;:::o;1481:245::-;1539:7;1567:1;1562;:6;1559:46;;;1592:1;1585:8;;;;1559:46;1615:9;1631:1;1627;:5;;;;:::i;:::-;1615:17;;1660:1;1655;1651;:5;;;;:::i;:::-;:10;1643:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1717:1;1710:8;;;1481: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:262::-;3831:6;3880:2;3868:9;3859:7;3855:23;3851:32;3848:2;;;3896:1;3893;3886:12;3848:2;3939:1;3964:53;4009:7;4000:6;3989:9;3985:22;3964:53;:::i;:::-;3954:63;;3910:117;3838:196;;;;:::o;4040:596::-;4128:6;4136;4144;4193:2;4181:9;4172:7;4168:23;4164:32;4161:2;;;4209:1;4206;4199:12;4161:2;4252:1;4277:64;4333:7;4324:6;4313:9;4309:22;4277:64;:::i;:::-;4267:74;;4223:128;4390:2;4416:64;4472:7;4463:6;4452:9;4448:22;4416:64;:::i;:::-;4406:74;;4361:129;4529:2;4555:64;4611:7;4602:6;4591:9;4587:22;4555:64;:::i;:::-;4545:74;;4500:129;4151:485;;;;;:::o;4642:179::-;4711:10;4732:46;4774:3;4766:6;4732:46;:::i;:::-;4810:4;4805:3;4801:14;4787:28;;4722:99;;;;:::o;4827:108::-;4904:24;4922:5;4904:24;:::i;:::-;4899:3;4892:37;4882:53;;:::o;4941:118::-;5028:24;5046:5;5028:24;:::i;:::-;5023:3;5016:37;5006:53;;:::o;5095:732::-;5214:3;5243:54;5291:5;5243:54;:::i;:::-;5313:86;5392:6;5387:3;5313:86;:::i;:::-;5306:93;;5423:56;5473:5;5423:56;:::i;:::-;5502:7;5533:1;5518:284;5543:6;5540:1;5537:13;5518:284;;;5619:6;5613:13;5646:63;5705:3;5690:13;5646:63;:::i;:::-;5639:70;;5732:60;5785:6;5732:60;:::i;:::-;5722:70;;5578:224;5565:1;5562;5558:9;5553:14;;5518:284;;;5522:14;5818:3;5811:10;;5219:608;;;;;;;:::o;5833:109::-;5914:21;5929:5;5914:21;:::i;:::-;5909:3;5902:34;5892:50;;:::o;5948:147::-;6043:45;6082:5;6043:45;:::i;:::-;6038:3;6031:58;6021:74;;:::o;6101:364::-;6189:3;6217:39;6250:5;6217:39;:::i;:::-;6272:71;6336:6;6331:3;6272:71;:::i;:::-;6265:78;;6352:52;6397:6;6392:3;6385:4;6378:5;6374:16;6352:52;:::i;:::-;6429:29;6451:6;6429:29;:::i;:::-;6424:3;6420:39;6413:46;;6193:272;;;;;:::o;6471:366::-;6613:3;6634:67;6698:2;6693:3;6634:67;:::i;:::-;6627:74;;6710:93;6799:3;6710:93;:::i;:::-;6828:2;6823:3;6819:12;6812:19;;6617:220;;;:::o;6843:366::-;6985:3;7006:67;7070:2;7065:3;7006:67;:::i;:::-;6999:74;;7082:93;7171:3;7082:93;:::i;:::-;7200:2;7195:3;7191:12;7184:19;;6989:220;;;:::o;7215:366::-;7357:3;7378:67;7442:2;7437:3;7378:67;:::i;:::-;7371:74;;7454:93;7543:3;7454:93;:::i;:::-;7572:2;7567:3;7563:12;7556:19;;7361:220;;;:::o;7587:366::-;7729:3;7750:67;7814:2;7809:3;7750:67;:::i;:::-;7743:74;;7826:93;7915:3;7826:93;:::i;:::-;7944:2;7939:3;7935:12;7928:19;;7733:220;;;:::o;7959:366::-;8101:3;8122:67;8186:2;8181:3;8122:67;:::i;:::-;8115:74;;8198:93;8287:3;8198:93;:::i;:::-;8316:2;8311:3;8307:12;8300:19;;8105:220;;;:::o;8331:366::-;8473:3;8494:67;8558:2;8553:3;8494:67;:::i;:::-;8487:74;;8570:93;8659:3;8570:93;:::i;:::-;8688:2;8683:3;8679:12;8672:19;;8477:220;;;:::o;8703:366::-;8845:3;8866:67;8930:2;8925:3;8866:67;:::i;:::-;8859:74;;8942:93;9031:3;8942:93;:::i;:::-;9060:2;9055:3;9051:12;9044:19;;8849:220;;;:::o;9075:366::-;9217:3;9238:67;9302:2;9297:3;9238:67;:::i;:::-;9231:74;;9314:93;9403:3;9314:93;:::i;:::-;9432:2;9427:3;9423:12;9416:19;;9221:220;;;:::o;9447:366::-;9589:3;9610:67;9674:2;9669:3;9610:67;:::i;:::-;9603:74;;9686:93;9775:3;9686:93;:::i;:::-;9804:2;9799:3;9795:12;9788:19;;9593:220;;;:::o;9819:366::-;9961:3;9982:67;10046:2;10041:3;9982:67;:::i;:::-;9975:74;;10058:93;10147:3;10058:93;:::i;:::-;10176:2;10171:3;10167:12;10160:19;;9965:220;;;:::o;10191:366::-;10333:3;10354:67;10418:2;10413:3;10354:67;:::i;:::-;10347:74;;10430:93;10519:3;10430:93;:::i;:::-;10548:2;10543:3;10539:12;10532:19;;10337:220;;;:::o;10563:366::-;10705:3;10726:67;10790:2;10785:3;10726:67;:::i;:::-;10719:74;;10802:93;10891:3;10802:93;:::i;:::-;10920:2;10915:3;10911:12;10904:19;;10709:220;;;:::o;10935:366::-;11077:3;11098:67;11162:2;11157:3;11098:67;:::i;:::-;11091:74;;11174:93;11263:3;11174:93;:::i;:::-;11292:2;11287:3;11283:12;11276:19;;11081:220;;;:::o;11307:366::-;11449:3;11470:67;11534:2;11529:3;11470:67;:::i;:::-;11463:74;;11546:93;11635:3;11546:93;:::i;:::-;11664:2;11659:3;11655:12;11648:19;;11453:220;;;:::o;11679:366::-;11821:3;11842:67;11906:2;11901:3;11842:67;:::i;:::-;11835:74;;11918:93;12007:3;11918:93;:::i;:::-;12036:2;12031:3;12027:12;12020:19;;11825:220;;;:::o;12051:366::-;12193:3;12214:67;12278:2;12273:3;12214:67;:::i;:::-;12207:74;;12290:93;12379:3;12290:93;:::i;:::-;12408:2;12403:3;12399:12;12392:19;;12197:220;;;:::o;12423:366::-;12565:3;12586:67;12650:2;12645:3;12586:67;:::i;:::-;12579:74;;12662:93;12751:3;12662:93;:::i;:::-;12780:2;12775:3;12771:12;12764:19;;12569:220;;;:::o;12795:366::-;12937:3;12958:67;13022:2;13017:3;12958:67;:::i;:::-;12951:74;;13034:93;13123:3;13034:93;:::i;:::-;13152:2;13147:3;13143:12;13136:19;;12941:220;;;:::o;13167:366::-;13309:3;13330:67;13394:2;13389:3;13330:67;:::i;:::-;13323:74;;13406:93;13495:3;13406:93;:::i;:::-;13524:2;13519:3;13515:12;13508:19;;13313:220;;;:::o;13539:366::-;13681:3;13702:67;13766:2;13761:3;13702:67;:::i;:::-;13695:74;;13778:93;13867:3;13778:93;:::i;:::-;13896:2;13891:3;13887:12;13880:19;;13685:220;;;:::o;13911:118::-;13998:24;14016:5;13998:24;:::i;:::-;13993:3;13986:37;13976:53;;:::o;14035:112::-;14118:22;14134:5;14118:22;:::i;:::-;14113:3;14106:35;14096:51;;:::o;14153:222::-;14246:4;14284:2;14273:9;14269:18;14261:26;;14297:71;14365:1;14354:9;14350:17;14341:6;14297:71;:::i;:::-;14251:124;;;;:::o;14381:332::-;14502:4;14540:2;14529:9;14525:18;14517:26;;14553:71;14621:1;14610:9;14606:17;14597:6;14553:71;:::i;:::-;14634:72;14702:2;14691:9;14687:18;14678:6;14634:72;:::i;:::-;14507:206;;;;;:::o;14719:332::-;14840:4;14878:2;14867:9;14863:18;14855:26;;14891:71;14959:1;14948:9;14944:17;14935:6;14891:71;:::i;:::-;14972:72;15040:2;15029:9;15025:18;15016:6;14972:72;:::i;:::-;14845:206;;;;;:::o;15057:807::-;15306:4;15344:3;15333:9;15329:19;15321:27;;15358:71;15426:1;15415:9;15411:17;15402:6;15358:71;:::i;:::-;15439:72;15507:2;15496:9;15492:18;15483:6;15439:72;:::i;:::-;15521:80;15597:2;15586:9;15582:18;15573:6;15521:80;:::i;:::-;15611;15687:2;15676:9;15672:18;15663:6;15611:80;:::i;:::-;15701:73;15769:3;15758:9;15754:19;15745:6;15701:73;:::i;:::-;15784;15852:3;15841:9;15837:19;15828:6;15784:73;:::i;:::-;15311:553;;;;;;;;;:::o;15870:210::-;15957:4;15995:2;15984:9;15980:18;15972:26;;16008:65;16070:1;16059:9;16055:17;16046:6;16008:65;:::i;:::-;15962:118;;;;:::o;16086:313::-;16199:4;16237:2;16226:9;16222:18;16214:26;;16286:9;16280:4;16276:20;16272:1;16261:9;16257:17;16250:47;16314:78;16387:4;16378:6;16314:78;:::i;:::-;16306:86;;16204:195;;;;:::o;16405:419::-;16571:4;16609:2;16598:9;16594:18;16586:26;;16658:9;16652:4;16648:20;16644:1;16633:9;16629:17;16622:47;16686:131;16812:4;16686:131;:::i;:::-;16678:139;;16576:248;;;:::o;16830:419::-;16996:4;17034:2;17023:9;17019:18;17011:26;;17083:9;17077:4;17073:20;17069:1;17058:9;17054:17;17047:47;17111:131;17237:4;17111:131;:::i;:::-;17103:139;;17001:248;;;:::o;17255:419::-;17421:4;17459:2;17448:9;17444:18;17436:26;;17508:9;17502:4;17498:20;17494:1;17483:9;17479:17;17472:47;17536:131;17662:4;17536:131;:::i;:::-;17528:139;;17426:248;;;:::o;17680:419::-;17846:4;17884:2;17873:9;17869:18;17861:26;;17933:9;17927:4;17923:20;17919:1;17908:9;17904:17;17897:47;17961:131;18087:4;17961:131;:::i;:::-;17953:139;;17851:248;;;:::o;18105:419::-;18271:4;18309:2;18298:9;18294:18;18286:26;;18358:9;18352:4;18348:20;18344:1;18333:9;18329:17;18322:47;18386:131;18512:4;18386:131;:::i;:::-;18378:139;;18276:248;;;:::o;18530:419::-;18696:4;18734:2;18723:9;18719:18;18711:26;;18783:9;18777:4;18773:20;18769:1;18758:9;18754:17;18747:47;18811:131;18937:4;18811:131;:::i;:::-;18803:139;;18701:248;;;:::o;18955:419::-;19121:4;19159:2;19148:9;19144:18;19136:26;;19208:9;19202:4;19198:20;19194:1;19183:9;19179:17;19172:47;19236:131;19362:4;19236:131;:::i;:::-;19228:139;;19126:248;;;:::o;19380:419::-;19546:4;19584:2;19573:9;19569:18;19561:26;;19633:9;19627:4;19623:20;19619:1;19608:9;19604:17;19597:47;19661:131;19787:4;19661:131;:::i;:::-;19653:139;;19551:248;;;:::o;19805:419::-;19971:4;20009:2;19998:9;19994:18;19986:26;;20058:9;20052:4;20048:20;20044:1;20033:9;20029:17;20022:47;20086:131;20212:4;20086:131;:::i;:::-;20078:139;;19976:248;;;:::o;20230:419::-;20396:4;20434:2;20423:9;20419:18;20411:26;;20483:9;20477:4;20473:20;20469:1;20458:9;20454:17;20447:47;20511:131;20637:4;20511:131;:::i;:::-;20503:139;;20401:248;;;:::o;20655:419::-;20821:4;20859:2;20848:9;20844:18;20836:26;;20908:9;20902:4;20898:20;20894:1;20883:9;20879:17;20872:47;20936:131;21062:4;20936:131;:::i;:::-;20928:139;;20826:248;;;:::o;21080:419::-;21246:4;21284:2;21273:9;21269:18;21261:26;;21333:9;21327:4;21323:20;21319:1;21308:9;21304:17;21297:47;21361:131;21487:4;21361:131;:::i;:::-;21353:139;;21251:248;;;:::o;21505:419::-;21671:4;21709:2;21698:9;21694:18;21686:26;;21758:9;21752:4;21748:20;21744:1;21733:9;21729:17;21722:47;21786:131;21912:4;21786:131;:::i;:::-;21778:139;;21676:248;;;:::o;21930:419::-;22096:4;22134:2;22123:9;22119:18;22111:26;;22183:9;22177:4;22173:20;22169:1;22158:9;22154:17;22147:47;22211:131;22337:4;22211:131;:::i;:::-;22203:139;;22101:248;;;:::o;22355:419::-;22521:4;22559:2;22548:9;22544:18;22536:26;;22608:9;22602:4;22598:20;22594:1;22583:9;22579:17;22572:47;22636:131;22762:4;22636:131;:::i;:::-;22628:139;;22526:248;;;:::o;22780:419::-;22946:4;22984:2;22973:9;22969:18;22961:26;;23033:9;23027:4;23023:20;23019:1;23008:9;23004:17;22997:47;23061:131;23187:4;23061:131;:::i;:::-;23053:139;;22951:248;;;:::o;23205:419::-;23371:4;23409:2;23398:9;23394:18;23386:26;;23458:9;23452:4;23448:20;23444:1;23433:9;23429:17;23422:47;23486:131;23612:4;23486:131;:::i;:::-;23478:139;;23376:248;;;:::o;23630:419::-;23796:4;23834:2;23823:9;23819:18;23811:26;;23883:9;23877:4;23873:20;23869:1;23858:9;23854:17;23847:47;23911:131;24037:4;23911:131;:::i;:::-;23903:139;;23801:248;;;:::o;24055:419::-;24221:4;24259:2;24248:9;24244:18;24236:26;;24308:9;24302:4;24298:20;24294:1;24283:9;24279:17;24272:47;24336:131;24462:4;24336:131;:::i;:::-;24328:139;;24226:248;;;:::o;24480:419::-;24646:4;24684:2;24673:9;24669:18;24661:26;;24733:9;24727:4;24723:20;24719:1;24708:9;24704:17;24697:47;24761:131;24887:4;24761:131;:::i;:::-;24753:139;;24651:248;;;:::o;24905:222::-;24998:4;25036:2;25025:9;25021:18;25013:26;;25049:71;25117:1;25106:9;25102:17;25093:6;25049:71;:::i;:::-;25003:124;;;;:::o;25133:831::-;25396:4;25434:3;25423:9;25419:19;25411:27;;25448:71;25516:1;25505:9;25501:17;25492:6;25448:71;:::i;:::-;25529:80;25605:2;25594:9;25590:18;25581:6;25529:80;:::i;:::-;25656:9;25650:4;25646:20;25641:2;25630:9;25626:18;25619:48;25684:108;25787:4;25778:6;25684:108;:::i;:::-;25676:116;;25802:72;25870:2;25859:9;25855:18;25846:6;25802:72;:::i;:::-;25884:73;25952:3;25941:9;25937:19;25928:6;25884:73;:::i;:::-;25401:563;;;;;;;;:::o;25970:214::-;26059:4;26097:2;26086:9;26082:18;26074:26;;26110:67;26174:1;26163:9;26159:17;26150:6;26110:67;:::i;:::-;26064:120;;;;:::o;26190:132::-;26257:4;26280:3;26272:11;;26310:4;26305:3;26301:14;26293:22;;26262:60;;;:::o;26328:114::-;26395:6;26429:5;26423:12;26413:22;;26402:40;;;:::o;26448:99::-;26500:6;26534:5;26528:12;26518:22;;26507:40;;;:::o;26553:113::-;26623:4;26655;26650:3;26646:14;26638:22;;26628:38;;;:::o;26672:184::-;26771:11;26805:6;26800:3;26793:19;26845:4;26840:3;26836:14;26821:29;;26783:73;;;;:::o;26862:169::-;26946:11;26980:6;26975:3;26968:19;27020:4;27015:3;27011:14;26996:29;;26958:73;;;;:::o;27037:305::-;27077:3;27096:20;27114:1;27096:20;:::i;:::-;27091:25;;27130:20;27148:1;27130:20;:::i;:::-;27125:25;;27284:1;27216:66;27212:74;27209:1;27206:81;27203:2;;;27290:18;;:::i;:::-;27203:2;27334:1;27331;27327:9;27320:16;;27081:261;;;;:::o;27348:185::-;27388:1;27405:20;27423:1;27405:20;:::i;:::-;27400:25;;27439:20;27457:1;27439:20;:::i;:::-;27434:25;;27478:1;27468:2;;27483:18;;:::i;:::-;27468:2;27525:1;27522;27518:9;27513:14;;27390:143;;;;:::o;27539:348::-;27579:7;27602:20;27620:1;27602:20;:::i;:::-;27597:25;;27636:20;27654:1;27636:20;:::i;:::-;27631:25;;27824:1;27756:66;27752:74;27749:1;27746:81;27741:1;27734:9;27727:17;27723:105;27720:2;;;27831:18;;:::i;:::-;27720:2;27879:1;27876;27872:9;27861:20;;27587:300;;;;:::o;27893:191::-;27933:4;27953:20;27971:1;27953:20;:::i;:::-;27948:25;;27987:20;28005:1;27987:20;:::i;:::-;27982:25;;28026:1;28023;28020:8;28017:2;;;28031:18;;:::i;:::-;28017:2;28076:1;28073;28069:9;28061:17;;27938:146;;;;:::o;28090:96::-;28127:7;28156:24;28174:5;28156:24;:::i;:::-;28145:35;;28135:51;;;:::o;28192:90::-;28226:7;28269:5;28262:13;28255:21;28244:32;;28234:48;;;:::o;28288:126::-;28325:7;28365:42;28358:5;28354:54;28343:65;;28333:81;;;:::o;28420:77::-;28457:7;28486:5;28475:16;;28465:32;;;:::o;28503:86::-;28538:7;28578:4;28571:5;28567:16;28556:27;;28546:43;;;:::o;28595:121::-;28653:9;28686:24;28704:5;28686:24;:::i;:::-;28673:37;;28663:53;;;:::o;28722:307::-;28790:1;28800:113;28814:6;28811:1;28808:13;28800:113;;;28899:1;28894:3;28890:11;28884:18;28880:1;28875:3;28871:11;28864:39;28836:2;28833:1;28829:10;28824:15;;28800:113;;;28931:6;28928:1;28925:13;28922:2;;;29011:1;29002:6;28997:3;28993:16;28986:27;28922:2;28771:258;;;;:::o;29035:233::-;29074:3;29097:24;29115:5;29097:24;:::i;:::-;29088:33;;29143:66;29136:5;29133:77;29130:2;;;29213:18;;:::i;:::-;29130:2;29260:1;29253:5;29249:13;29242:20;;29078:190;;;:::o;29274:180::-;29322:77;29319:1;29312:88;29419:4;29416:1;29409:15;29443:4;29440:1;29433:15;29460:180;29508:77;29505:1;29498:88;29605:4;29602:1;29595:15;29629:4;29626:1;29619:15;29646:102;29687:6;29738:2;29734:7;29729:2;29722:5;29718:14;29714:28;29704:38;;29694:54;;;:::o;29754:222::-;29894:34;29890:1;29882:6;29878:14;29871:58;29963:5;29958:2;29950:6;29946:15;29939:30;29860:116;:::o;29982:229::-;30122:34;30118:1;30110:6;30106:14;30099:58;30191:12;30186:2;30178:6;30174:15;30167:37;30088:123;:::o;30217:221::-;30357:34;30353:1;30345:6;30341:14;30334:58;30426:4;30421:2;30413:6;30409:15;30402:29;30323:115;:::o;30444:221::-;30584:34;30580:1;30572:6;30568:14;30561:58;30653:4;30648:2;30640:6;30636:15;30629:29;30550:115;:::o;30671:177::-;30811:29;30807:1;30799:6;30795:14;30788:53;30777:71;:::o;30854:177::-;30994:29;30990:1;30982:6;30978:14;30971:53;30960:71;:::o;31037:180::-;31177:32;31173:1;31165:6;31161:14;31154:56;31143:74;:::o;31223:220::-;31363:34;31359:1;31351:6;31347:14;31340:58;31432:3;31427:2;31419:6;31415:15;31408:28;31329:114;:::o;31449:182::-;31589:34;31585:1;31577:6;31573:14;31566:58;31555:76;:::o;31637:228::-;31777:34;31773:1;31765:6;31761:14;31754:58;31846:11;31841:2;31833:6;31829:15;31822:36;31743:122;:::o;31871:176::-;32011:28;32007:1;31999:6;31995:14;31988:52;31977:70;:::o;32053:223::-;32193:34;32189:1;32181:6;32177:14;32170:58;32262:6;32257:2;32249:6;32245:15;32238:31;32159:117;:::o;32282:224::-;32422:34;32418:1;32410:6;32406:14;32399:58;32491:7;32486:2;32478:6;32474:15;32467:32;32388:118;:::o;32512:223::-;32652:34;32648:1;32640:6;32636:14;32629:58;32721:6;32716:2;32708:6;32704:15;32697:31;32618:117;:::o;32741:173::-;32881:25;32877:1;32869:6;32865:14;32858:49;32847:67;:::o;32920:169::-;33060:21;33056:1;33048:6;33044:14;33037:45;33026:63;:::o;33095:221::-;33235:34;33231:1;33223:6;33219:14;33212:58;33304:4;33299:2;33291:6;33287:15;33280:29;33201:115;:::o;33322:174::-;33462:26;33458:1;33450:6;33446:14;33439:50;33428:68;:::o;33502:221::-;33642:34;33638:1;33630:6;33626:14;33619:58;33711:4;33706:2;33698:6;33694:15;33687:29;33608:115;:::o;33729:173::-;33869:25;33865:1;33857:6;33853:14;33846:49;33835:67;:::o;33908:122::-;33981:24;33999:5;33981:24;:::i;:::-;33974:5;33971:35;33961:2;;34020:1;34017;34010:12;33961:2;33951:79;:::o;34036:116::-;34106:21;34121:5;34106:21;:::i;:::-;34099:5;34096:32;34086:2;;34142:1;34139;34132:12;34086:2;34076:76;:::o;34158:122::-;34231:24;34249:5;34231:24;:::i;:::-;34224:5;34221:35;34211:2;;34270:1;34267;34260:12;34211:2;34201:79;:::o

Swarm Source

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