ETH Price: $2,503.90 (-0.47%)

Token

Night Owl (NOWL)
 

Overview

Max Total Supply

1,000,000,000,000 NOWL

Holders

48

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
3,800,000,000.000000043312057352 NOWL

Value
$0.00
0x4ec77164b5a7306b26b085d188770a6231e4c6c8
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:
NightOwl

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-25
*/

/*                                            
SPDX-License-Identifier: MIT
*/

pragma solidity 0.8.11;

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

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

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

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

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

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

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

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


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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

        _transfer(sender, recipient, amount);

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

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

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

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

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

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

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

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

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

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

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

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

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

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

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

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

    address private _teamWallet;
    
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
        
    bool public limitsInEffect = true;
    bool public tradingActive = false;
    
    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;
    
    uint256 private _sellteamFee = 8;
    uint256 private _liquidityFee = 1;
    uint256 public selltotalFees;

    uint256 private _buyteamFee = 4;
    uint256 public buytotalFees;

    uint256 private _tokensForTeam;
    uint256 private _tokensForLiquidity;
    
    /******************/

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

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

    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity);

    constructor() ERC20("Night Owl", "NOWL") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        
        uint256 totalSupply = 1e12 * 1e18;
        
        maxTransactionAmount = totalSupply * 1 / 100; // 1% maxTransactionAmountTxn
        maxWallet = totalSupply * 2 / 100; // 2% maxWallet
        swapTokensAtAmount = totalSupply * 5 / 10000; // 0.05% swap wallet

        // Set Fees
        selltotalFees = _sellteamFee.add(_liquidityFee);
        buytotalFees = _buyteamFee.add(_liquidityFee);

        // Set Fee Wallet
        _teamWallet = address(owner()); // set as fee wallet

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

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

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%");
        maxWallet = newNum * 1e18;
    }
    
    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }
    
    function updateSellFees(uint256 teamFee, uint256 liquidityFee) external onlyOwner {
        _sellteamFee = teamFee;
        _liquidityFee = liquidityFee;
        selltotalFees = teamFee.add(liquidityFee);
        require(selltotalFees <= 10, "Fees must be lower than 10%");
    }

    function updateBuyFees(uint256 teamFee, uint256 liquidityFee) external onlyOwner {
        _buyteamFee = teamFee;
        _liquidityFee = liquidityFee;
        buytotalFees = teamFee.add(liquidityFee);
        require(buytotalFees <= 10, "Fees must be lower than 10%");
    }
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
    }

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
    }
    
    function updateTeamWallet(address newWallet) external onlyOwner {
        _teamWallet = newWallet;
    }

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

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

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

        bool takeFee = !_swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) takeFee = false;
        
        
        uint256 fees = 0;
        // Only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // On sell
            if (automatedMarketMakerPairs[to] && selltotalFees > 0) {
                fees = amount.mul(selltotalFees).div(100);
                _tokensForTeam += fees * _sellteamFee / selltotalFees;
                _tokensForLiquidity += fees * _liquidityFee / selltotalFees;
            }
            //On Buy
            else if (automatedMarketMakerPairs[from] && buytotalFees > 0) {
                fees = amount.mul(buytotalFees).div(100);
                _tokensForTeam += fees * _buyteamFee / buytotalFees;
                _tokensForLiquidity += fees * _liquidityFee / buytotalFees;
            }

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

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

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

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

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

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = _tokensForLiquidity + _tokensForTeam;
        
        if (contractBalance == 0 || totalTokensToSwap == 0) return;
        if (contractBalance > swapTokensAtAmount * 20) contractBalance = swapTokensAtAmount * 20;
        
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * _tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
        
        uint256 initialETHBalance = address(this).balance;

        _swapTokensForEth(amountToSwapForETH); 
        
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        uint256 ethForTeam = ethBalance.mul(_tokensForTeam).div(totalTokensToSwap);
        uint256 ethForLiquidity = ethBalance - ethForTeam;
        
        _tokensForTeam = 0;
        _tokensForLiquidity = 0;
                
        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            _addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, _tokensForLiquidity);
        }
    }

    function claimEther() external {
        payable(_teamWallet).transfer(address(this).balance);
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buytotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Bblock","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots","type":"address[]"}],"name":"removeBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"selltotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"teamFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"teamFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600d60006101000a81548160ff0219169083151502179055506000600d60016101000a81548160ff0219169083151502179055506001600f60006101000a81548160ff0219169083151502179055506008601055600160115560046013553480156200007157600080fd5b506040518060400160405280600981526020017f4e69676874204f776c00000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4e4f574c000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000f6929190620009d8565b5080600490805190602001906200010f929190620009d8565b50505062000132620001266200051660201b60201c565b6200051e60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200015e816001620005e460201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000204919062000af2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000292919062000af2565b6040518363ffffffff1660e01b8152600401620002b192919062000b35565b6020604051808303816000875af1158015620002d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f7919062000af2565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200033f60a0516001620005e460201b60201c565b6200035460a0516001620006ce60201b60201c565b60006c0c9f2c9cd04674edea400000009050606460018262000377919062000b9b565b62000383919062000c2b565b600a8190555060646002826200039a919062000b9b565b620003a6919062000c2b565b600c81905550612710600582620003be919062000b9b565b620003ca919062000c2b565b600b81905550620003ee6011546010546200072960201b6200213f1790919060201c565b601281905550620004126011546013546200072960201b6200213f1790919060201c565b601481905550620004286200074160201b60201c565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200048a6200047c6200074160201b60201c565b60016200076b60201b60201c565b6200049d3060016200076b60201b60201c565b620004b261dead60016200076b60201b60201c565b620004d4620004c66200074160201b60201c565b6001620005e460201b60201c565b620004e7306001620005e460201b60201c565b620004fc61dead6001620005e460201b60201c565b6200050e33826200085560201b60201c565b505062000e48565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005f46200051660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200061a6200074160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000673576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200066a9062000cc4565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000818362000739919062000ce6565b905092915050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200077b6200051660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007a16200074160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620007fa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007f19062000cc4565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620008c8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008bf9062000d93565b60405180910390fd5b620008dc60008383620009ce60201b60201c565b8060026000828254620008f0919062000ce6565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000947919062000ce6565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009ae919062000dc6565b60405180910390a3620009ca60008383620009d360201b60201c565b5050565b505050565b505050565b828054620009e69062000e12565b90600052602060002090601f01602090048101928262000a0a576000855562000a56565b82601f1062000a2557805160ff191683800117855562000a56565b8280016001018555821562000a56579182015b8281111562000a5557825182559160200191906001019062000a38565b5b50905062000a65919062000a69565b5090565b5b8082111562000a8457600081600090555060010162000a6a565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000aba8262000a8d565b9050919050565b62000acc8162000aad565b811462000ad857600080fd5b50565b60008151905062000aec8162000ac1565b92915050565b60006020828403121562000b0b5762000b0a62000a88565b5b600062000b1b8482850162000adb565b91505092915050565b62000b2f8162000aad565b82525050565b600060408201905062000b4c600083018562000b24565b62000b5b602083018462000b24565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000ba88262000b62565b915062000bb58362000b62565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000bf15762000bf062000b6c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000c388262000b62565b915062000c458362000b62565b92508262000c585762000c5762000bfc565b5b828204905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000cac60208362000c63565b915062000cb98262000c74565b602082019050919050565b6000602082019050818103600083015262000cdf8162000c9d565b9050919050565b600062000cf38262000b62565b915062000d008362000b62565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d385762000d3762000b6c565b5b828201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000d7b601f8362000c63565b915062000d888262000d43565b602082019050919050565b6000602082019050818103600083015262000dae8162000d6c565b9050919050565b62000dc08162000b62565b82525050565b600060208201905062000ddd600083018462000db5565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e2b57607f821691505b6020821081141562000e425762000e4162000de3565b5b50919050565b60805160a051614f8962000eb460003960008181610f55015281816117f001528181611dab01526127d0015260008181610c1e01528181611e1c015281816127780152818161363d0152818161371e01528181613745015281816137e101526138080152614f896000f3fe60806040526004361061026b5760003560e01c80637cb332bb11610144578063c18bc195116100b6578063d34628cc1161007a578063d34628cc1461094f578063dd62ed3e14610978578063e2f45605146109b5578063e884f260146109e0578063f2fde38b14610a0b578063f8b45b0514610a3457610272565b8063c18bc19514610868578063c861cede14610891578063c876d0b9146108bc578063c8c8ebe4146108e7578063d257b34f1461091257610272565b80639a7a23d6116101085780639a7a23d614610734578063a457c2d71461075d578063a9059cbb1461079a578063b62496f5146107d7578063bbc0c74214610814578063c02466681461083f57610272565b80637cb332bb1461067557806382aa7c681461069e5780638a8c523c146106c75780638da5cb5b146106de57806395d89b411461070957610272565b80633bbac579116101dd57806366ca9b83116101a157806366ca9b831461057b5780636c3bbfd7146105a457806370a08231146105cd578063715018a61461060a578063751039fc146106215780637571336a1461064c57610272565b80633bbac5791461049457806349bd5a5e146104d15780634a62bb65146104fc5780634fbee1931461052757806355291dbd1461056457610272565b806316cdc7811161022f57806316cdc7811461037057806318160ddd1461039b578063203e727e146103c657806323b872dd146103ef578063313ce5671461042c578063395093511461045757610272565b806302dbd8f81461027757806306fdde03146102a0578063095ea7b3146102cb57806310d5de53146103085780631694505e1461034557610272565b3661027257005b600080fd5b34801561028357600080fd5b5061029e60048036038101906102999190613906565b610a5f565b005b3480156102ac57600080fd5b506102b5610b4c565b6040516102c291906139df565b60405180910390f35b3480156102d757600080fd5b506102f260048036038101906102ed9190613a5f565b610bde565b6040516102ff9190613aba565b60405180910390f35b34801561031457600080fd5b5061032f600480360381019061032a9190613ad5565b610bfc565b60405161033c9190613aba565b60405180910390f35b34801561035157600080fd5b5061035a610c1c565b6040516103679190613b61565b60405180910390f35b34801561037c57600080fd5b50610385610c40565b6040516103929190613b8b565b60405180910390f35b3480156103a757600080fd5b506103b0610c46565b6040516103bd9190613b8b565b60405180910390f35b3480156103d257600080fd5b506103ed60048036038101906103e89190613ba6565b610c50565b005b3480156103fb57600080fd5b5061041660048036038101906104119190613bd3565b610d5f565b6040516104239190613aba565b60405180910390f35b34801561043857600080fd5b50610441610e7e565b60405161044e9190613c42565b60405180910390f35b34801561046357600080fd5b5061047e60048036038101906104799190613a5f565b610e87565b60405161048b9190613aba565b60405180910390f35b3480156104a057600080fd5b506104bb60048036038101906104b69190613ad5565b610f33565b6040516104c89190613aba565b60405180910390f35b3480156104dd57600080fd5b506104e6610f53565b6040516104f39190613c6c565b60405180910390f35b34801561050857600080fd5b50610511610f77565b60405161051e9190613aba565b60405180910390f35b34801561053357600080fd5b5061054e60048036038101906105499190613ad5565b610f8a565b60405161055b9190613aba565b60405180910390f35b34801561057057600080fd5b50610579610fe0565b005b34801561058757600080fd5b506105a2600480360381019061059d9190613906565b61104b565b005b3480156105b057600080fd5b506105cb60048036038101906105c69190613dcf565b611138565b005b3480156105d957600080fd5b506105f460048036038101906105ef9190613ad5565b611249565b6040516106019190613b8b565b60405180910390f35b34801561061657600080fd5b5061061f611291565b005b34801561062d57600080fd5b50610636611319565b6040516106439190613aba565b60405180910390f35b34801561065857600080fd5b50610673600480360381019061066e9190613e44565b6113b9565b005b34801561068157600080fd5b5061069c60048036038101906106979190613ad5565b611490565b005b3480156106aa57600080fd5b506106c560048036038101906106c09190613ba6565b611550565b005b3480156106d357600080fd5b506106dc611603565b005b3480156106ea57600080fd5b506106f36116b6565b6040516107009190613c6c565b60405180910390f35b34801561071557600080fd5b5061071e6116e0565b60405161072b91906139df565b60405180910390f35b34801561074057600080fd5b5061075b60048036038101906107569190613e44565b611772565b005b34801561076957600080fd5b50610784600480360381019061077f9190613a5f565b61188b565b6040516107919190613aba565b60405180910390f35b3480156107a657600080fd5b506107c160048036038101906107bc9190613a5f565b611976565b6040516107ce9190613aba565b60405180910390f35b3480156107e357600080fd5b506107fe60048036038101906107f99190613ad5565b611994565b60405161080b9190613aba565b60405180910390f35b34801561082057600080fd5b506108296119b4565b6040516108369190613aba565b60405180910390f35b34801561084b57600080fd5b5061086660048036038101906108619190613e44565b6119c7565b005b34801561087457600080fd5b5061088f600480360381019061088a9190613ba6565b611a9e565b005b34801561089d57600080fd5b506108a6611bad565b6040516108b39190613b8b565b60405180910390f35b3480156108c857600080fd5b506108d1611bb3565b6040516108de9190613aba565b60405180910390f35b3480156108f357600080fd5b506108fc611bc6565b6040516109099190613b8b565b60405180910390f35b34801561091e57600080fd5b5061093960048036038101906109349190613ba6565b611bcc565b6040516109469190613aba565b60405180910390f35b34801561095b57600080fd5b5061097660048036038101906109719190613dcf565b611d21565b005b34801561098457600080fd5b5061099f600480360381019061099a9190613e84565b611f14565b6040516109ac9190613b8b565b60405180910390f35b3480156109c157600080fd5b506109ca611f9b565b6040516109d79190613b8b565b60405180910390f35b3480156109ec57600080fd5b506109f5611fa1565b604051610a029190613aba565b60405180910390f35b348015610a1757600080fd5b50610a326004803603810190610a2d9190613ad5565b612041565b005b348015610a4057600080fd5b50610a49612139565b604051610a569190613b8b565b60405180910390f35b610a67612155565b73ffffffffffffffffffffffffffffffffffffffff16610a856116b6565b73ffffffffffffffffffffffffffffffffffffffff1614610adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad290613f10565b60405180910390fd5b8160108190555080601181905550610afc818361213f90919063ffffffff16565b601281905550600a6012541115610b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3f90613f7c565b60405180910390fd5b5050565b606060038054610b5b90613fcb565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8790613fcb565b8015610bd45780601f10610ba957610100808354040283529160200191610bd4565b820191906000526020600020905b815481529060010190602001808311610bb757829003601f168201915b5050505050905090565b6000610bf2610beb612155565b848461215d565b6001905092915050565b60186020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60125481565b6000600254905090565b610c58612155565b73ffffffffffffffffffffffffffffffffffffffff16610c766116b6565b73ffffffffffffffffffffffffffffffffffffffff1614610ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc390613f10565b60405180910390fd5b670de0b6b3a76400006103e86001610ce2610c46565b610cec919061402c565b610cf691906140b5565b610d0091906140b5565b811015610d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3990614158565b60405180910390fd5b670de0b6b3a764000081610d56919061402c565b600a8190555050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610dab612155565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e675782811015610e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e49906141ea565b60405180910390fd5b610e6685610e5e612155565b85840361215d565b5b610e72858585612328565b60019150509392505050565b60006012905090565b6000610f29610e94612155565b848460016000610ea2612155565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f24919061420a565b61215d565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b600d60009054906101000a900460ff1681565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611048573d6000803e3d6000fd5b50565b611053612155565b73ffffffffffffffffffffffffffffffffffffffff166110716116b6565b73ffffffffffffffffffffffffffffffffffffffff16146110c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110be90613f10565b60405180910390fd5b81601381905550806011819055506110e8818361213f90919063ffffffff16565b601481905550600a6014541115611134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112b90613f7c565b60405180910390fd5b5050565b611140612155565b73ffffffffffffffffffffffffffffffffffffffff1661115e6116b6565b73ffffffffffffffffffffffffffffffffffffffff16146111b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ab90613f10565b60405180910390fd5b60005b8151811015611245576000600660008484815181106111d9576111d8614260565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061123d9061428f565b9150506111b7565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611299612155565b73ffffffffffffffffffffffffffffffffffffffff166112b76116b6565b73ffffffffffffffffffffffffffffffffffffffff161461130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130490613f10565b60405180910390fd5b6113176000613034565b565b6000611323612155565b73ffffffffffffffffffffffffffffffffffffffff166113416116b6565b73ffffffffffffffffffffffffffffffffffffffff1614611397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138e90613f10565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506001905090565b6113c1612155565b73ffffffffffffffffffffffffffffffffffffffff166113df6116b6565b73ffffffffffffffffffffffffffffffffffffffff1614611435576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142c90613f10565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611498612155565b73ffffffffffffffffffffffffffffffffffffffff166114b66116b6565b73ffffffffffffffffffffffffffffffffffffffff161461150c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150390613f10565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611558612155565b73ffffffffffffffffffffffffffffffffffffffff166115766116b6565b73ffffffffffffffffffffffffffffffffffffffff16146115cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c390613f10565b60405180910390fd5b6001600d60016101000a81548160ff0219169083151502179055506115fa814261213f90919063ffffffff16565b60088190555050565b61160b612155565b73ffffffffffffffffffffffffffffffffffffffff166116296116b6565b73ffffffffffffffffffffffffffffffffffffffff161461167f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167690613f10565b60405180910390fd5b6001600d60016101000a81548160ff0219169083151502179055506116ae60014261213f90919063ffffffff16565b600881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546116ef90613fcb565b80601f016020809104026020016040519081016040528092919081815260200182805461171b90613fcb565b80156117685780601f1061173d57610100808354040283529160200191611768565b820191906000526020600020905b81548152906001019060200180831161174b57829003601f168201915b5050505050905090565b61177a612155565b73ffffffffffffffffffffffffffffffffffffffff166117986116b6565b73ffffffffffffffffffffffffffffffffffffffff16146117ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e590613f10565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561187d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118749061434a565b60405180910390fd5b61188782826130fa565b5050565b6000806001600061189a612155565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194e906143dc565b60405180910390fd5b61196b611962612155565b8585840361215d565b600191505092915050565b600061198a611983612155565b8484612328565b6001905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b6119cf612155565b73ffffffffffffffffffffffffffffffffffffffff166119ed6116b6565b73ffffffffffffffffffffffffffffffffffffffff1614611a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3a90613f10565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611aa6612155565b73ffffffffffffffffffffffffffffffffffffffff16611ac46116b6565b73ffffffffffffffffffffffffffffffffffffffff1614611b1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1190613f10565b60405180910390fd5b670de0b6b3a76400006103e86005611b30610c46565b611b3a919061402c565b611b4491906140b5565b611b4e91906140b5565b811015611b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b879061446e565b60405180910390fd5b670de0b6b3a764000081611ba4919061402c565b600c8190555050565b60145481565b600f60009054906101000a900460ff1681565b600a5481565b6000611bd6612155565b73ffffffffffffffffffffffffffffffffffffffff16611bf46116b6565b73ffffffffffffffffffffffffffffffffffffffff1614611c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4190613f10565b60405180910390fd5b620186a06001611c58610c46565b611c62919061402c565b611c6c91906140b5565b821015611cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca590614500565b60405180910390fd5b6103e86005611cbb610c46565b611cc5919061402c565b611ccf91906140b5565b821115611d11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0890614592565b60405180910390fd5b81600b8190555060019050919050565b611d29612155565b73ffffffffffffffffffffffffffffffffffffffff16611d476116b6565b73ffffffffffffffffffffffffffffffffffffffff1614611d9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9490613f10565b60405180910390fd5b60005b8151811015611f10577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16828281518110611df357611df2614260565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614158015611e8557507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16828281518110611e6457611e63614260565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b15611efd57600160066000848481518110611ea357611ea2614260565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8080611f089061428f565b915050611da0565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b6000611fab612155565b73ffffffffffffffffffffffffffffffffffffffff16611fc96116b6565b73ffffffffffffffffffffffffffffffffffffffff161461201f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201690613f10565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055506001905090565b612049612155565b73ffffffffffffffffffffffffffffffffffffffff166120676116b6565b73ffffffffffffffffffffffffffffffffffffffff16146120bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b490613f10565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561212d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212490614624565b60405180910390fd5b61213681613034565b50565b600c5481565b6000818361214d919061420a565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156121cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c4906146b6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561223d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223490614748565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161231b9190613b8b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238f906147da565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ff9061486c565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612495576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248c90614924565b60405180910390fd5b60008114156124af576124aa83836000613155565b61302f565b600854421015612512576001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600d60009054906101000a900460ff1615612bd55761252f6116b6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561259d575061256d6116b6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125d65750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612610575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126295750600760009054906101000a900460ff16155b15612bd457600d60019054906101000a900460ff1661272357601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126e35750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612722576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271990614990565b60405180910390fd5b5b600f60009054906101000a900460ff16156128eb576127406116b6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156127c757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561281f57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156128ea5743600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106128a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289c90614a48565b60405180910390fd5b43600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561298e5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a3557600a548111156129d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cf90614ada565b60405180910390fd5b600c546129e483611249565b826129ef919061420a565b1115612a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2790614b46565b60405180910390fd5b612bd3565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ad85750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b2757600a54811115612b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1990614bd8565b60405180910390fd5b612bd2565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612bd157600c54612b8483611249565b82612b8f919061420a565b1115612bd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc790614b46565b60405180910390fd5b5b5b5b5b5b6000612be030611249565b90506000600b548210159050808015612c065750600760009054906101000a900460ff16155b8015612c5c5750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612cb25750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d085750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d4c576001600760006101000a81548160ff021916908315150217905550612d306133d6565b6000600760006101000a81548160ff0219169083151502179055505b6000600760009054906101000a900460ff16159050601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e025750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e0c57600090505b6000811561301f57601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e6f57506000601254115b15612f0957612e9c6064612e8e6012548861355290919063ffffffff16565b61356890919063ffffffff16565b905060125460105482612eaf919061402c565b612eb991906140b5565b60156000828254612eca919061420a565b9250508190555060125460115482612ee2919061402c565b612eec91906140b5565b60166000828254612efd919061420a565b92505081905550612ffb565b601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f6457506000601454115b15612ffa57612f916064612f836014548861355290919063ffffffff16565b61356890919063ffffffff16565b905060145460135482612fa4919061402c565b612fae91906140b5565b60156000828254612fbf919061420a565b9250508190555060145460115482612fd7919061402c565b612fe191906140b5565b60166000828254612ff2919061420a565b925050819055505b5b60008111156130105761300f873083613155565b5b808561301c9190614bf8565b94505b61302a878787613155565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156131c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131bc906147da565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613235576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161322c9061486c565b60405180910390fd5b61324083838361357e565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156132c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132bd90614c9e565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613359919061420a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133bd9190613b8b565b60405180910390a36133d0848484613583565b50505050565b60006133e130611249565b905060006015546016546133f5919061420a565b905060008214806134065750600081145b15613412575050613550565b6014600b54613421919061402c565b82111561343a576014600b54613437919061402c565b91505b60006002826016548561344d919061402c565b61345791906140b5565b61346191906140b5565b90506000613478828561358890919063ffffffff16565b905060004790506134888261359e565b600061349d824761358890919063ffffffff16565b905060006134c8866134ba6015548561355290919063ffffffff16565b61356890919063ffffffff16565b9050600081836134d89190614bf8565b9050600060158190555060006016819055506000861180156134fa5750600081115b156135475761350986826137db565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858260165460405161353e93929190614cbe565b60405180910390a15b50505050505050505b565b60008183613560919061402c565b905092915050565b6000818361357691906140b5565b905092915050565b505050565b505050565b600081836135969190614bf8565b905092915050565b6000600267ffffffffffffffff8111156135bb576135ba613c8c565b5b6040519080825280602002602001820160405280156135e95781602001602082028036833780820191505090505b509050308160008151811061360157613600614260565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136ca9190614d0a565b816001815181106136de576136dd614260565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613743307f00000000000000000000000000000000000000000000000000000000000000008461215d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016137a5959493929190614e30565b600060405180830381600087803b1580156137bf57600080fd5b505af11580156137d3573d6000803e3d6000fd5b505050505050565b613806307f00000000000000000000000000000000000000000000000000000000000000008461215d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806138506116b6565b426040518863ffffffff1660e01b815260040161387296959493929190614e8a565b60606040518083038185885af1158015613890573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906138b59190614f00565b5050505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6138e3816138d0565b81146138ee57600080fd5b50565b600081359050613900816138da565b92915050565b6000806040838503121561391d5761391c6138c6565b5b600061392b858286016138f1565b925050602061393c858286016138f1565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613980578082015181840152602081019050613965565b8381111561398f576000848401525b50505050565b6000601f19601f8301169050919050565b60006139b182613946565b6139bb8185613951565b93506139cb818560208601613962565b6139d481613995565b840191505092915050565b600060208201905081810360008301526139f981846139a6565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a2c82613a01565b9050919050565b613a3c81613a21565b8114613a4757600080fd5b50565b600081359050613a5981613a33565b92915050565b60008060408385031215613a7657613a756138c6565b5b6000613a8485828601613a4a565b9250506020613a95858286016138f1565b9150509250929050565b60008115159050919050565b613ab481613a9f565b82525050565b6000602082019050613acf6000830184613aab565b92915050565b600060208284031215613aeb57613aea6138c6565b5b6000613af984828501613a4a565b91505092915050565b6000819050919050565b6000613b27613b22613b1d84613a01565b613b02565b613a01565b9050919050565b6000613b3982613b0c565b9050919050565b6000613b4b82613b2e565b9050919050565b613b5b81613b40565b82525050565b6000602082019050613b766000830184613b52565b92915050565b613b85816138d0565b82525050565b6000602082019050613ba06000830184613b7c565b92915050565b600060208284031215613bbc57613bbb6138c6565b5b6000613bca848285016138f1565b91505092915050565b600080600060608486031215613bec57613beb6138c6565b5b6000613bfa86828701613a4a565b9350506020613c0b86828701613a4a565b9250506040613c1c868287016138f1565b9150509250925092565b600060ff82169050919050565b613c3c81613c26565b82525050565b6000602082019050613c576000830184613c33565b92915050565b613c6681613a21565b82525050565b6000602082019050613c816000830184613c5d565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613cc482613995565b810181811067ffffffffffffffff82111715613ce357613ce2613c8c565b5b80604052505050565b6000613cf66138bc565b9050613d028282613cbb565b919050565b600067ffffffffffffffff821115613d2257613d21613c8c565b5b602082029050602081019050919050565b600080fd5b6000613d4b613d4684613d07565b613cec565b90508083825260208201905060208402830185811115613d6e57613d6d613d33565b5b835b81811015613d975780613d838882613a4a565b845260208401935050602081019050613d70565b5050509392505050565b600082601f830112613db657613db5613c87565b5b8135613dc6848260208601613d38565b91505092915050565b600060208284031215613de557613de46138c6565b5b600082013567ffffffffffffffff811115613e0357613e026138cb565b5b613e0f84828501613da1565b91505092915050565b613e2181613a9f565b8114613e2c57600080fd5b50565b600081359050613e3e81613e18565b92915050565b60008060408385031215613e5b57613e5a6138c6565b5b6000613e6985828601613a4a565b9250506020613e7a85828601613e2f565b9150509250929050565b60008060408385031215613e9b57613e9a6138c6565b5b6000613ea985828601613a4a565b9250506020613eba85828601613a4a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613efa602083613951565b9150613f0582613ec4565b602082019050919050565b60006020820190508181036000830152613f2981613eed565b9050919050565b7f46656573206d757374206265206c6f776572207468616e203130250000000000600082015250565b6000613f66601b83613951565b9150613f7182613f30565b602082019050919050565b60006020820190508181036000830152613f9581613f59565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613fe357607f821691505b60208210811415613ff757613ff6613f9c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614037826138d0565b9150614042836138d0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561407b5761407a613ffd565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006140c0826138d0565b91506140cb836138d0565b9250826140db576140da614086565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614142602f83613951565b915061414d826140e6565b604082019050919050565b6000602082019050818103600083015261417181614135565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006141d4602883613951565b91506141df82614178565b604082019050919050565b60006020820190508181036000830152614203816141c7565b9050919050565b6000614215826138d0565b9150614220836138d0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561425557614254613ffd565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061429a826138d0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156142cd576142cc613ffd565b5b600182019050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614334603983613951565b915061433f826142d8565b604082019050919050565b6000602082019050818103600083015261436381614327565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006143c6602583613951565b91506143d18261436a565b604082019050919050565b600060208201905081810360008301526143f5816143b9565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614458602483613951565b9150614463826143fc565b604082019050919050565b600060208201905081810360008301526144878161444b565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006144ea603583613951565b91506144f58261448e565b604082019050919050565b60006020820190508181036000830152614519816144dd565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061457c603483613951565b915061458782614520565b604082019050919050565b600060208201905081810360008301526145ab8161456f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061460e602683613951565b9150614619826145b2565b604082019050919050565b6000602082019050818103600083015261463d81614601565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006146a0602483613951565b91506146ab82614644565b604082019050919050565b600060208201905081810360008301526146cf81614693565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614732602283613951565b915061473d826146d6565b604082019050919050565b6000602082019050818103600083015261476181614725565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006147c4602583613951565b91506147cf82614768565b604082019050919050565b600060208201905081810360008301526147f3816147b7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614856602383613951565b9150614861826147fa565b604082019050919050565b6000602082019050818103600083015261488581614849565b9050919050565b7f596f7572206164647265737320686173206265656e206d61726b65642061732060008201527f6120626f742f736e697065722c20796f752061726520756e61626c6520746f2060208201527f7472616e73666572206f7220737761702e000000000000000000000000000000604082015250565b600061490e605183613951565b91506149198261488c565b606082019050919050565b6000602082019050818103600083015261493d81614901565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061497a601683613951565b915061498582614944565b602082019050919050565b600060208201905081810360008301526149a98161496d565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614a32604983613951565b9150614a3d826149b0565b606082019050919050565b60006020820190508181036000830152614a6181614a25565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614ac4603583613951565b9150614acf82614a68565b604082019050919050565b60006020820190508181036000830152614af381614ab7565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614b30601383613951565b9150614b3b82614afa565b602082019050919050565b60006020820190508181036000830152614b5f81614b23565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614bc2603683613951565b9150614bcd82614b66565b604082019050919050565b60006020820190508181036000830152614bf181614bb5565b9050919050565b6000614c03826138d0565b9150614c0e836138d0565b925082821015614c2157614c20613ffd565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614c88602683613951565b9150614c9382614c2c565b604082019050919050565b60006020820190508181036000830152614cb781614c7b565b9050919050565b6000606082019050614cd36000830186613b7c565b614ce06020830185613b7c565b614ced6040830184613b7c565b949350505050565b600081519050614d0481613a33565b92915050565b600060208284031215614d2057614d1f6138c6565b5b6000614d2e84828501614cf5565b91505092915050565b6000819050919050565b6000614d5c614d57614d5284614d37565b613b02565b6138d0565b9050919050565b614d6c81614d41565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614da781613a21565b82525050565b6000614db98383614d9e565b60208301905092915050565b6000602082019050919050565b6000614ddd82614d72565b614de78185614d7d565b9350614df283614d8e565b8060005b83811015614e23578151614e0a8882614dad565b9750614e1583614dc5565b925050600181019050614df6565b5085935050505092915050565b600060a082019050614e456000830188613b7c565b614e526020830187614d63565b8181036040830152614e648186614dd2565b9050614e736060830185613c5d565b614e806080830184613b7c565b9695505050505050565b600060c082019050614e9f6000830189613c5d565b614eac6020830188613b7c565b614eb96040830187614d63565b614ec66060830186614d63565b614ed36080830185613c5d565b614ee060a0830184613b7c565b979650505050505050565b600081519050614efa816138da565b92915050565b600080600060608486031215614f1957614f186138c6565b5b6000614f2786828701614eeb565b9350506020614f3886828701614eeb565b9250506040614f4986828701614eeb565b915050925092509256fea2646970667358221220c2ab1b90778251244bb15133b942c97b43932606fa7f8be948a240fa7509cfbc64736f6c634300080b0033

Deployed Bytecode

0x60806040526004361061026b5760003560e01c80637cb332bb11610144578063c18bc195116100b6578063d34628cc1161007a578063d34628cc1461094f578063dd62ed3e14610978578063e2f45605146109b5578063e884f260146109e0578063f2fde38b14610a0b578063f8b45b0514610a3457610272565b8063c18bc19514610868578063c861cede14610891578063c876d0b9146108bc578063c8c8ebe4146108e7578063d257b34f1461091257610272565b80639a7a23d6116101085780639a7a23d614610734578063a457c2d71461075d578063a9059cbb1461079a578063b62496f5146107d7578063bbc0c74214610814578063c02466681461083f57610272565b80637cb332bb1461067557806382aa7c681461069e5780638a8c523c146106c75780638da5cb5b146106de57806395d89b411461070957610272565b80633bbac579116101dd57806366ca9b83116101a157806366ca9b831461057b5780636c3bbfd7146105a457806370a08231146105cd578063715018a61461060a578063751039fc146106215780637571336a1461064c57610272565b80633bbac5791461049457806349bd5a5e146104d15780634a62bb65146104fc5780634fbee1931461052757806355291dbd1461056457610272565b806316cdc7811161022f57806316cdc7811461037057806318160ddd1461039b578063203e727e146103c657806323b872dd146103ef578063313ce5671461042c578063395093511461045757610272565b806302dbd8f81461027757806306fdde03146102a0578063095ea7b3146102cb57806310d5de53146103085780631694505e1461034557610272565b3661027257005b600080fd5b34801561028357600080fd5b5061029e60048036038101906102999190613906565b610a5f565b005b3480156102ac57600080fd5b506102b5610b4c565b6040516102c291906139df565b60405180910390f35b3480156102d757600080fd5b506102f260048036038101906102ed9190613a5f565b610bde565b6040516102ff9190613aba565b60405180910390f35b34801561031457600080fd5b5061032f600480360381019061032a9190613ad5565b610bfc565b60405161033c9190613aba565b60405180910390f35b34801561035157600080fd5b5061035a610c1c565b6040516103679190613b61565b60405180910390f35b34801561037c57600080fd5b50610385610c40565b6040516103929190613b8b565b60405180910390f35b3480156103a757600080fd5b506103b0610c46565b6040516103bd9190613b8b565b60405180910390f35b3480156103d257600080fd5b506103ed60048036038101906103e89190613ba6565b610c50565b005b3480156103fb57600080fd5b5061041660048036038101906104119190613bd3565b610d5f565b6040516104239190613aba565b60405180910390f35b34801561043857600080fd5b50610441610e7e565b60405161044e9190613c42565b60405180910390f35b34801561046357600080fd5b5061047e60048036038101906104799190613a5f565b610e87565b60405161048b9190613aba565b60405180910390f35b3480156104a057600080fd5b506104bb60048036038101906104b69190613ad5565b610f33565b6040516104c89190613aba565b60405180910390f35b3480156104dd57600080fd5b506104e6610f53565b6040516104f39190613c6c565b60405180910390f35b34801561050857600080fd5b50610511610f77565b60405161051e9190613aba565b60405180910390f35b34801561053357600080fd5b5061054e60048036038101906105499190613ad5565b610f8a565b60405161055b9190613aba565b60405180910390f35b34801561057057600080fd5b50610579610fe0565b005b34801561058757600080fd5b506105a2600480360381019061059d9190613906565b61104b565b005b3480156105b057600080fd5b506105cb60048036038101906105c69190613dcf565b611138565b005b3480156105d957600080fd5b506105f460048036038101906105ef9190613ad5565b611249565b6040516106019190613b8b565b60405180910390f35b34801561061657600080fd5b5061061f611291565b005b34801561062d57600080fd5b50610636611319565b6040516106439190613aba565b60405180910390f35b34801561065857600080fd5b50610673600480360381019061066e9190613e44565b6113b9565b005b34801561068157600080fd5b5061069c60048036038101906106979190613ad5565b611490565b005b3480156106aa57600080fd5b506106c560048036038101906106c09190613ba6565b611550565b005b3480156106d357600080fd5b506106dc611603565b005b3480156106ea57600080fd5b506106f36116b6565b6040516107009190613c6c565b60405180910390f35b34801561071557600080fd5b5061071e6116e0565b60405161072b91906139df565b60405180910390f35b34801561074057600080fd5b5061075b60048036038101906107569190613e44565b611772565b005b34801561076957600080fd5b50610784600480360381019061077f9190613a5f565b61188b565b6040516107919190613aba565b60405180910390f35b3480156107a657600080fd5b506107c160048036038101906107bc9190613a5f565b611976565b6040516107ce9190613aba565b60405180910390f35b3480156107e357600080fd5b506107fe60048036038101906107f99190613ad5565b611994565b60405161080b9190613aba565b60405180910390f35b34801561082057600080fd5b506108296119b4565b6040516108369190613aba565b60405180910390f35b34801561084b57600080fd5b5061086660048036038101906108619190613e44565b6119c7565b005b34801561087457600080fd5b5061088f600480360381019061088a9190613ba6565b611a9e565b005b34801561089d57600080fd5b506108a6611bad565b6040516108b39190613b8b565b60405180910390f35b3480156108c857600080fd5b506108d1611bb3565b6040516108de9190613aba565b60405180910390f35b3480156108f357600080fd5b506108fc611bc6565b6040516109099190613b8b565b60405180910390f35b34801561091e57600080fd5b5061093960048036038101906109349190613ba6565b611bcc565b6040516109469190613aba565b60405180910390f35b34801561095b57600080fd5b5061097660048036038101906109719190613dcf565b611d21565b005b34801561098457600080fd5b5061099f600480360381019061099a9190613e84565b611f14565b6040516109ac9190613b8b565b60405180910390f35b3480156109c157600080fd5b506109ca611f9b565b6040516109d79190613b8b565b60405180910390f35b3480156109ec57600080fd5b506109f5611fa1565b604051610a029190613aba565b60405180910390f35b348015610a1757600080fd5b50610a326004803603810190610a2d9190613ad5565b612041565b005b348015610a4057600080fd5b50610a49612139565b604051610a569190613b8b565b60405180910390f35b610a67612155565b73ffffffffffffffffffffffffffffffffffffffff16610a856116b6565b73ffffffffffffffffffffffffffffffffffffffff1614610adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad290613f10565b60405180910390fd5b8160108190555080601181905550610afc818361213f90919063ffffffff16565b601281905550600a6012541115610b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3f90613f7c565b60405180910390fd5b5050565b606060038054610b5b90613fcb565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8790613fcb565b8015610bd45780601f10610ba957610100808354040283529160200191610bd4565b820191906000526020600020905b815481529060010190602001808311610bb757829003601f168201915b5050505050905090565b6000610bf2610beb612155565b848461215d565b6001905092915050565b60186020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b60125481565b6000600254905090565b610c58612155565b73ffffffffffffffffffffffffffffffffffffffff16610c766116b6565b73ffffffffffffffffffffffffffffffffffffffff1614610ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc390613f10565b60405180910390fd5b670de0b6b3a76400006103e86001610ce2610c46565b610cec919061402c565b610cf691906140b5565b610d0091906140b5565b811015610d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3990614158565b60405180910390fd5b670de0b6b3a764000081610d56919061402c565b600a8190555050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610dab612155565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e675782811015610e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e49906141ea565b60405180910390fd5b610e6685610e5e612155565b85840361215d565b5b610e72858585612328565b60019150509392505050565b60006012905090565b6000610f29610e94612155565b848460016000610ea2612155565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f24919061420a565b61215d565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b7f00000000000000000000000075aa5df34335262bf82431dae02c04659e4f4e2281565b600d60009054906101000a900460ff1681565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611048573d6000803e3d6000fd5b50565b611053612155565b73ffffffffffffffffffffffffffffffffffffffff166110716116b6565b73ffffffffffffffffffffffffffffffffffffffff16146110c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110be90613f10565b60405180910390fd5b81601381905550806011819055506110e8818361213f90919063ffffffff16565b601481905550600a6014541115611134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112b90613f7c565b60405180910390fd5b5050565b611140612155565b73ffffffffffffffffffffffffffffffffffffffff1661115e6116b6565b73ffffffffffffffffffffffffffffffffffffffff16146111b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ab90613f10565b60405180910390fd5b60005b8151811015611245576000600660008484815181106111d9576111d8614260565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061123d9061428f565b9150506111b7565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611299612155565b73ffffffffffffffffffffffffffffffffffffffff166112b76116b6565b73ffffffffffffffffffffffffffffffffffffffff161461130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130490613f10565b60405180910390fd5b6113176000613034565b565b6000611323612155565b73ffffffffffffffffffffffffffffffffffffffff166113416116b6565b73ffffffffffffffffffffffffffffffffffffffff1614611397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138e90613f10565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506001905090565b6113c1612155565b73ffffffffffffffffffffffffffffffffffffffff166113df6116b6565b73ffffffffffffffffffffffffffffffffffffffff1614611435576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142c90613f10565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611498612155565b73ffffffffffffffffffffffffffffffffffffffff166114b66116b6565b73ffffffffffffffffffffffffffffffffffffffff161461150c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150390613f10565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611558612155565b73ffffffffffffffffffffffffffffffffffffffff166115766116b6565b73ffffffffffffffffffffffffffffffffffffffff16146115cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c390613f10565b60405180910390fd5b6001600d60016101000a81548160ff0219169083151502179055506115fa814261213f90919063ffffffff16565b60088190555050565b61160b612155565b73ffffffffffffffffffffffffffffffffffffffff166116296116b6565b73ffffffffffffffffffffffffffffffffffffffff161461167f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167690613f10565b60405180910390fd5b6001600d60016101000a81548160ff0219169083151502179055506116ae60014261213f90919063ffffffff16565b600881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546116ef90613fcb565b80601f016020809104026020016040519081016040528092919081815260200182805461171b90613fcb565b80156117685780601f1061173d57610100808354040283529160200191611768565b820191906000526020600020905b81548152906001019060200180831161174b57829003601f168201915b5050505050905090565b61177a612155565b73ffffffffffffffffffffffffffffffffffffffff166117986116b6565b73ffffffffffffffffffffffffffffffffffffffff16146117ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e590613f10565b60405180910390fd5b7f00000000000000000000000075aa5df34335262bf82431dae02c04659e4f4e2273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561187d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118749061434a565b60405180910390fd5b61188782826130fa565b5050565b6000806001600061189a612155565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194e906143dc565b60405180910390fd5b61196b611962612155565b8585840361215d565b600191505092915050565b600061198a611983612155565b8484612328565b6001905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b6119cf612155565b73ffffffffffffffffffffffffffffffffffffffff166119ed6116b6565b73ffffffffffffffffffffffffffffffffffffffff1614611a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3a90613f10565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611aa6612155565b73ffffffffffffffffffffffffffffffffffffffff16611ac46116b6565b73ffffffffffffffffffffffffffffffffffffffff1614611b1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1190613f10565b60405180910390fd5b670de0b6b3a76400006103e86005611b30610c46565b611b3a919061402c565b611b4491906140b5565b611b4e91906140b5565b811015611b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b879061446e565b60405180910390fd5b670de0b6b3a764000081611ba4919061402c565b600c8190555050565b60145481565b600f60009054906101000a900460ff1681565b600a5481565b6000611bd6612155565b73ffffffffffffffffffffffffffffffffffffffff16611bf46116b6565b73ffffffffffffffffffffffffffffffffffffffff1614611c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4190613f10565b60405180910390fd5b620186a06001611c58610c46565b611c62919061402c565b611c6c91906140b5565b821015611cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca590614500565b60405180910390fd5b6103e86005611cbb610c46565b611cc5919061402c565b611ccf91906140b5565b821115611d11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0890614592565b60405180910390fd5b81600b8190555060019050919050565b611d29612155565b73ffffffffffffffffffffffffffffffffffffffff16611d476116b6565b73ffffffffffffffffffffffffffffffffffffffff1614611d9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9490613f10565b60405180910390fd5b60005b8151811015611f10577f00000000000000000000000075aa5df34335262bf82431dae02c04659e4f4e2273ffffffffffffffffffffffffffffffffffffffff16828281518110611df357611df2614260565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614158015611e8557507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16828281518110611e6457611e63614260565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b15611efd57600160066000848481518110611ea357611ea2614260565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8080611f089061428f565b915050611da0565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b6000611fab612155565b73ffffffffffffffffffffffffffffffffffffffff16611fc96116b6565b73ffffffffffffffffffffffffffffffffffffffff161461201f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201690613f10565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055506001905090565b612049612155565b73ffffffffffffffffffffffffffffffffffffffff166120676116b6565b73ffffffffffffffffffffffffffffffffffffffff16146120bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b490613f10565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561212d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212490614624565b60405180910390fd5b61213681613034565b50565b600c5481565b6000818361214d919061420a565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156121cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c4906146b6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561223d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223490614748565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161231b9190613b8b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238f906147da565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ff9061486c565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612495576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248c90614924565b60405180910390fd5b60008114156124af576124aa83836000613155565b61302f565b600854421015612512576001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600d60009054906101000a900460ff1615612bd55761252f6116b6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561259d575061256d6116b6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125d65750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612610575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126295750600760009054906101000a900460ff16155b15612bd457600d60019054906101000a900460ff1661272357601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126e35750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612722576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271990614990565b60405180910390fd5b5b600f60009054906101000a900460ff16156128eb576127406116b6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156127c757507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561281f57507f00000000000000000000000075aa5df34335262bf82431dae02c04659e4f4e2273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156128ea5743600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106128a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289c90614a48565b60405180910390fd5b43600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561298e5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a3557600a548111156129d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cf90614ada565b60405180910390fd5b600c546129e483611249565b826129ef919061420a565b1115612a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2790614b46565b60405180910390fd5b612bd3565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ad85750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b2757600a54811115612b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1990614bd8565b60405180910390fd5b612bd2565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612bd157600c54612b8483611249565b82612b8f919061420a565b1115612bd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc790614b46565b60405180910390fd5b5b5b5b5b5b6000612be030611249565b90506000600b548210159050808015612c065750600760009054906101000a900460ff16155b8015612c5c5750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612cb25750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d085750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d4c576001600760006101000a81548160ff021916908315150217905550612d306133d6565b6000600760006101000a81548160ff0219169083151502179055505b6000600760009054906101000a900460ff16159050601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e025750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e0c57600090505b6000811561301f57601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e6f57506000601254115b15612f0957612e9c6064612e8e6012548861355290919063ffffffff16565b61356890919063ffffffff16565b905060125460105482612eaf919061402c565b612eb991906140b5565b60156000828254612eca919061420a565b9250508190555060125460115482612ee2919061402c565b612eec91906140b5565b60166000828254612efd919061420a565b92505081905550612ffb565b601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f6457506000601454115b15612ffa57612f916064612f836014548861355290919063ffffffff16565b61356890919063ffffffff16565b905060145460135482612fa4919061402c565b612fae91906140b5565b60156000828254612fbf919061420a565b9250508190555060145460115482612fd7919061402c565b612fe191906140b5565b60166000828254612ff2919061420a565b925050819055505b5b60008111156130105761300f873083613155565b5b808561301c9190614bf8565b94505b61302a878787613155565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156131c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131bc906147da565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613235576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161322c9061486c565b60405180910390fd5b61324083838361357e565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156132c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132bd90614c9e565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613359919061420a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133bd9190613b8b565b60405180910390a36133d0848484613583565b50505050565b60006133e130611249565b905060006015546016546133f5919061420a565b905060008214806134065750600081145b15613412575050613550565b6014600b54613421919061402c565b82111561343a576014600b54613437919061402c565b91505b60006002826016548561344d919061402c565b61345791906140b5565b61346191906140b5565b90506000613478828561358890919063ffffffff16565b905060004790506134888261359e565b600061349d824761358890919063ffffffff16565b905060006134c8866134ba6015548561355290919063ffffffff16565b61356890919063ffffffff16565b9050600081836134d89190614bf8565b9050600060158190555060006016819055506000861180156134fa5750600081115b156135475761350986826137db565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858260165460405161353e93929190614cbe565b60405180910390a15b50505050505050505b565b60008183613560919061402c565b905092915050565b6000818361357691906140b5565b905092915050565b505050565b505050565b600081836135969190614bf8565b905092915050565b6000600267ffffffffffffffff8111156135bb576135ba613c8c565b5b6040519080825280602002602001820160405280156135e95781602001602082028036833780820191505090505b509050308160008151811061360157613600614260565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136ca9190614d0a565b816001815181106136de576136dd614260565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613743307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461215d565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016137a5959493929190614e30565b600060405180830381600087803b1580156137bf57600080fd5b505af11580156137d3573d6000803e3d6000fd5b505050505050565b613806307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461215d565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806138506116b6565b426040518863ffffffff1660e01b815260040161387296959493929190614e8a565b60606040518083038185885af1158015613890573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906138b59190614f00565b5050505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6138e3816138d0565b81146138ee57600080fd5b50565b600081359050613900816138da565b92915050565b6000806040838503121561391d5761391c6138c6565b5b600061392b858286016138f1565b925050602061393c858286016138f1565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613980578082015181840152602081019050613965565b8381111561398f576000848401525b50505050565b6000601f19601f8301169050919050565b60006139b182613946565b6139bb8185613951565b93506139cb818560208601613962565b6139d481613995565b840191505092915050565b600060208201905081810360008301526139f981846139a6565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a2c82613a01565b9050919050565b613a3c81613a21565b8114613a4757600080fd5b50565b600081359050613a5981613a33565b92915050565b60008060408385031215613a7657613a756138c6565b5b6000613a8485828601613a4a565b9250506020613a95858286016138f1565b9150509250929050565b60008115159050919050565b613ab481613a9f565b82525050565b6000602082019050613acf6000830184613aab565b92915050565b600060208284031215613aeb57613aea6138c6565b5b6000613af984828501613a4a565b91505092915050565b6000819050919050565b6000613b27613b22613b1d84613a01565b613b02565b613a01565b9050919050565b6000613b3982613b0c565b9050919050565b6000613b4b82613b2e565b9050919050565b613b5b81613b40565b82525050565b6000602082019050613b766000830184613b52565b92915050565b613b85816138d0565b82525050565b6000602082019050613ba06000830184613b7c565b92915050565b600060208284031215613bbc57613bbb6138c6565b5b6000613bca848285016138f1565b91505092915050565b600080600060608486031215613bec57613beb6138c6565b5b6000613bfa86828701613a4a565b9350506020613c0b86828701613a4a565b9250506040613c1c868287016138f1565b9150509250925092565b600060ff82169050919050565b613c3c81613c26565b82525050565b6000602082019050613c576000830184613c33565b92915050565b613c6681613a21565b82525050565b6000602082019050613c816000830184613c5d565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613cc482613995565b810181811067ffffffffffffffff82111715613ce357613ce2613c8c565b5b80604052505050565b6000613cf66138bc565b9050613d028282613cbb565b919050565b600067ffffffffffffffff821115613d2257613d21613c8c565b5b602082029050602081019050919050565b600080fd5b6000613d4b613d4684613d07565b613cec565b90508083825260208201905060208402830185811115613d6e57613d6d613d33565b5b835b81811015613d975780613d838882613a4a565b845260208401935050602081019050613d70565b5050509392505050565b600082601f830112613db657613db5613c87565b5b8135613dc6848260208601613d38565b91505092915050565b600060208284031215613de557613de46138c6565b5b600082013567ffffffffffffffff811115613e0357613e026138cb565b5b613e0f84828501613da1565b91505092915050565b613e2181613a9f565b8114613e2c57600080fd5b50565b600081359050613e3e81613e18565b92915050565b60008060408385031215613e5b57613e5a6138c6565b5b6000613e6985828601613a4a565b9250506020613e7a85828601613e2f565b9150509250929050565b60008060408385031215613e9b57613e9a6138c6565b5b6000613ea985828601613a4a565b9250506020613eba85828601613a4a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613efa602083613951565b9150613f0582613ec4565b602082019050919050565b60006020820190508181036000830152613f2981613eed565b9050919050565b7f46656573206d757374206265206c6f776572207468616e203130250000000000600082015250565b6000613f66601b83613951565b9150613f7182613f30565b602082019050919050565b60006020820190508181036000830152613f9581613f59565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613fe357607f821691505b60208210811415613ff757613ff6613f9c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614037826138d0565b9150614042836138d0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561407b5761407a613ffd565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006140c0826138d0565b91506140cb836138d0565b9250826140db576140da614086565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614142602f83613951565b915061414d826140e6565b604082019050919050565b6000602082019050818103600083015261417181614135565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006141d4602883613951565b91506141df82614178565b604082019050919050565b60006020820190508181036000830152614203816141c7565b9050919050565b6000614215826138d0565b9150614220836138d0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561425557614254613ffd565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061429a826138d0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156142cd576142cc613ffd565b5b600182019050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614334603983613951565b915061433f826142d8565b604082019050919050565b6000602082019050818103600083015261436381614327565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006143c6602583613951565b91506143d18261436a565b604082019050919050565b600060208201905081810360008301526143f5816143b9565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614458602483613951565b9150614463826143fc565b604082019050919050565b600060208201905081810360008301526144878161444b565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006144ea603583613951565b91506144f58261448e565b604082019050919050565b60006020820190508181036000830152614519816144dd565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061457c603483613951565b915061458782614520565b604082019050919050565b600060208201905081810360008301526145ab8161456f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061460e602683613951565b9150614619826145b2565b604082019050919050565b6000602082019050818103600083015261463d81614601565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006146a0602483613951565b91506146ab82614644565b604082019050919050565b600060208201905081810360008301526146cf81614693565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614732602283613951565b915061473d826146d6565b604082019050919050565b6000602082019050818103600083015261476181614725565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006147c4602583613951565b91506147cf82614768565b604082019050919050565b600060208201905081810360008301526147f3816147b7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614856602383613951565b9150614861826147fa565b604082019050919050565b6000602082019050818103600083015261488581614849565b9050919050565b7f596f7572206164647265737320686173206265656e206d61726b65642061732060008201527f6120626f742f736e697065722c20796f752061726520756e61626c6520746f2060208201527f7472616e73666572206f7220737761702e000000000000000000000000000000604082015250565b600061490e605183613951565b91506149198261488c565b606082019050919050565b6000602082019050818103600083015261493d81614901565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061497a601683613951565b915061498582614944565b602082019050919050565b600060208201905081810360008301526149a98161496d565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614a32604983613951565b9150614a3d826149b0565b606082019050919050565b60006020820190508181036000830152614a6181614a25565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614ac4603583613951565b9150614acf82614a68565b604082019050919050565b60006020820190508181036000830152614af381614ab7565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614b30601383613951565b9150614b3b82614afa565b602082019050919050565b60006020820190508181036000830152614b5f81614b23565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614bc2603683613951565b9150614bcd82614b66565b604082019050919050565b60006020820190508181036000830152614bf181614bb5565b9050919050565b6000614c03826138d0565b9150614c0e836138d0565b925082821015614c2157614c20613ffd565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614c88602683613951565b9150614c9382614c2c565b604082019050919050565b60006020820190508181036000830152614cb781614c7b565b9050919050565b6000606082019050614cd36000830186613b7c565b614ce06020830185613b7c565b614ced6040830184613b7c565b949350505050565b600081519050614d0481613a33565b92915050565b600060208284031215614d2057614d1f6138c6565b5b6000614d2e84828501614cf5565b91505092915050565b6000819050919050565b6000614d5c614d57614d5284614d37565b613b02565b6138d0565b9050919050565b614d6c81614d41565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614da781613a21565b82525050565b6000614db98383614d9e565b60208301905092915050565b6000602082019050919050565b6000614ddd82614d72565b614de78185614d7d565b9350614df283614d8e565b8060005b83811015614e23578151614e0a8882614dad565b9750614e1583614dc5565b925050600181019050614df6565b5085935050505092915050565b600060a082019050614e456000830188613b7c565b614e526020830187614d63565b8181036040830152614e648186614dd2565b9050614e736060830185613c5d565b614e806080830184613b7c565b9695505050505050565b600060c082019050614e9f6000830189613c5d565b614eac6020830188613b7c565b614eb96040830187614d63565b614ec66060830186614d63565b614ed36080830185613c5d565b614ee060a0830184613b7c565b979650505050505050565b600081519050614efa816138da565b92915050565b600080600060608486031215614f1957614f186138c6565b5b6000614f2786828701614eeb565b9350506020614f3886828701614eeb565b9250506040614f4986828701614eeb565b915050925092509256fea2646970667358221220c2ab1b90778251244bb15133b942c97b43932606fa7f8be948a240fa7509cfbc64736f6c634300080b0033

Deployed Bytecode Sourcemap

11746:13523:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16626:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3050:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3964:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12934:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11824:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12597:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3371:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16007:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4141:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3270:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4722:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11929:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11882;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12202:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18073:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25127:102;;;;;;;;;;;;;:::i;:::-;;16918:280;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18489:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3487:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10529:103;;;;;;;;;;;;;:::i;:::-;;15217:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16470:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17959:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17660:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15032:130;;;;;;;;;;;;;:::i;:::-;;10306:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3158:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17344:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4945:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3622:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13156:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12242:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17204:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16247:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12672:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12466:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12079:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15613:382;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18210:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3805:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12121:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15403:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10640:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12161:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16626:284;10452:12;:10;:12::i;:::-;10441:23;;:7;:5;:7::i;:::-;:23;;;10433:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16734:7:::1;16719:12;:22;;;;16768:12;16752:13;:28;;;;16807:25;16819:12;16807:7;:11;;:25;;;;:::i;:::-;16791:13;:41;;;;16868:2;16851:13;;:19;;16843:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;16626:284:::0;;:::o;3050:100::-;3104:13;3137:5;3130:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3050:100;:::o;3964:169::-;4047:4;4064:39;4073:12;:10;:12::i;:::-;4087:7;4096:6;4064:8;:39::i;:::-;4121:4;4114:11;;3964:169;;;;:::o;12934:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;11824:51::-;;;:::o;12597:28::-;;;;:::o;3371:108::-;3432:7;3459:12;;3452:19;;3371:108;:::o;16007:232::-;10452:12;:10;:12::i;:::-;10441:23;;:7;:5;:7::i;:::-;:23;;;10433:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16128:4:::1;16120;16116:1;16100:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;16099:33;;;;:::i;:::-;16089:6;:43;;16081:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;16227:4;16218:6;:13;;;;:::i;:::-;16195:20;:36;;;;16007:232:::0;:::o;4141:573::-;4281:4;4298:24;4325:11;:19;4337:6;4325:19;;;;;;;;;;;;;;;:33;4345:12;:10;:12::i;:::-;4325:33;;;;;;;;;;;;;;;;4298:60;;4393:17;4373:16;:37;4369:265;;4455:6;4435:16;:26;;4427:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4550:57;4559:6;4567:12;:10;:12::i;:::-;4600:6;4581:16;:25;4550:8;:57::i;:::-;4369:265;4646:36;4656:6;4664:9;4675:6;4646:9;:36::i;:::-;4702:4;4695:11;;;4141:573;;;;;:::o;3270:93::-;3328:5;3353:2;3346:9;;3270:93;:::o;4722:215::-;4810:4;4827:80;4836:12;:10;:12::i;:::-;4850:7;4896:10;4859:11;:25;4871:12;:10;:12::i;:::-;4859:25;;;;;;;;;;;;;;;:34;4885:7;4859:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4827:8;:80::i;:::-;4925:4;4918:11;;4722:215;;;;:::o;11929:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;11882:::-;;;:::o;12202:33::-;;;;;;;;;;;;;:::o;18073:125::-;18138:4;18162:19;:28;18182:7;18162:28;;;;;;;;;;;;;;;;;;;;;;;;;18155:35;;18073:125;;;:::o;25127:102::-;25177:11;;;;;;;;;;;25169:29;;:52;25199:21;25169:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25127:102::o;16918:280::-;10452:12;:10;:12::i;:::-;10441:23;;:7;:5;:7::i;:::-;:23;;;10433:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17024:7:::1;17010:11;:21;;;;17058:12;17042:13;:28;;;;17096:25;17108:12;17096:7;:11;;:25;;;;:::i;:::-;17081:12;:40;;;;17156:2;17140:12;;:18;;17132:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;16918:280:::0;;:::o;18489:168::-;10452:12;:10;:12::i;:::-;10441:23;;:7;:5;:7::i;:::-;:23;;;10433:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18567:6:::1;18562:88;18583:4;:11;18579:1;:15;18562:88;;;18633:5;18616;:14;18622:4;18627:1;18622:7;;;;;;;;:::i;:::-;;;;;;;;18616:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;18596:3;;;;;:::i;:::-;;;;18562:88;;;;18489:168:::0;:::o;3487:127::-;3561:7;3588:9;:18;3598:7;3588:18;;;;;;;;;;;;;;;;3581:25;;3487:127;;;:::o;10529:103::-;10452:12;:10;:12::i;:::-;10441:23;;:7;:5;:7::i;:::-;:23;;;10433:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10594:30:::1;10621:1;10594:18;:30::i;:::-;10529:103::o:0;15217:121::-;15269:4;10452:12;:10;:12::i;:::-;10441:23;;:7;:5;:7::i;:::-;:23;;;10433:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15303:5:::1;15286:14;;:22;;;;;;;;;;;;;;;;;;15326:4;15319:11;;15217:121:::0;:::o;16470:144::-;10452:12;:10;:12::i;:::-;10441:23;;:7;:5;:7::i;:::-;:23;;;10433:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16602:4:::1;16560:31;:39;16592:6;16560:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;16470:144:::0;;:::o;17959:106::-;10452:12;:10;:12::i;:::-;10441:23;;:7;:5;:7::i;:::-;:23;;;10433:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18048:9:::1;18034:11;;:23;;;;;;;;;;;;;;;;;;17959:106:::0;:::o;17660:149::-;10452:12;:10;:12::i;:::-;10441:23;;:7;:5;:7::i;:::-;:23;;;10433:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17745:4:::1;17729:13;;:20;;;;;;;;;;;;;;;;;;17774:27;17794:6;17774:15;:19;;:27;;;;:::i;:::-;17760:11;:41;;;;17660:149:::0;:::o;15032:130::-;10452:12;:10;:12::i;:::-;10441:23;;:7;:5;:7::i;:::-;:23;;;10433:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15103:4:::1;15087:13;;:20;;;;;;;;;;;;;;;;;;15132:22;15152:1;15132:15;:19;;:22;;;;:::i;:::-;15118:11;:36;;;;15032:130::o:0;10306:87::-;10352:7;10379:6;;;;;;;;;;;10372:13;;10306:87;:::o;3158:104::-;3214:13;3247:7;3240:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3158:104;:::o;17344:244::-;10452:12;:10;:12::i;:::-;10441:23;;:7;:5;:7::i;:::-;:23;;;10433:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17451:13:::1;17443:21;;:4;:21;;;;17435:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;17539:41;17568:4;17574:5;17539:28;:41::i;:::-;17344:244:::0;;:::o;4945:413::-;5038:4;5055:24;5082:11;:25;5094:12;:10;:12::i;:::-;5082:25;;;;;;;;;;;;;;;:34;5108:7;5082:34;;;;;;;;;;;;;;;;5055:61;;5155:15;5135:16;:35;;5127:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;5248:67;5257:12;:10;:12::i;:::-;5271:7;5299:15;5280:16;:34;5248:8;:67::i;:::-;5346:4;5339:11;;;4945:413;;;;:::o;3622:175::-;3708:4;3725:42;3735:12;:10;:12::i;:::-;3749:9;3760:6;3725:9;:42::i;:::-;3785:4;3778:11;;3622:175;;;;:::o;13156:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;12242:33::-;;;;;;;;;;;;;:::o;17204:132::-;10452:12;:10;:12::i;:::-;10441:23;;:7;:5;:7::i;:::-;:23;;;10433:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17320:8:::1;17289:19;:28;17309:7;17289:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;17204:132:::0;;:::o;16247:211::-;10452:12;:10;:12::i;:::-;10441:23;;:7;:5;:7::i;:::-;:23;;;10433:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16369:4:::1;16363;16359:1;16343:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;16342:31;;;;:::i;:::-;16332:6;:41;;16324:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;16446:4;16437:6;:13;;;;:::i;:::-;16425:9;:25;;;;16247:211:::0;:::o;12672:27::-;;;;:::o;12466:39::-;;;;;;;;;;;;;:::o;12079:35::-;;;;:::o;15613:382::-;15694:4;10452:12;:10;:12::i;:::-;10441:23;;:7;:5;:7::i;:::-;:23;;;10433:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15751:6:::1;15747:1;15731:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;15718:9;:39;;15710:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;15866:4;15862:1;15846:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;15833:9;:37;;15825:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;15958:9;15937:18;:30;;;;15984:4;15977:11;;15613:382:::0;;;:::o;18210:267::-;10452:12;:10;:12::i;:::-;10441:23;;:7;:5;:7::i;:::-;:23;;;10433:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18285:6:::1;18280:190;18301:4;:11;18297:1;:15;18280:190;;;18349:13;18338:24;;:4;18343:1;18338:7;;;;;;;;:::i;:::-;;;;;;;;:24;;;;:63;;;;;18385:15;18366:35;;:4;18371:1;18366:7;;;;;;;;:::i;:::-;;;;;;;;:35;;;;18338:63;18334:125;;;18439:4;18422:5;:14;18428:4;18433:1;18428:7;;;;;;;;:::i;:::-;;;;;;;;18422:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;18334:125;18314:3;;;;;:::i;:::-;;;;18280:190;;;;18210:267:::0;:::o;3805:151::-;3894:7;3921:11;:18;3933:5;3921:18;;;;;;;;;;;;;;;:27;3940:7;3921:27;;;;;;;;;;;;;;;;3914:34;;3805:151;;;;:::o;12121:33::-;;;;:::o;15403:135::-;15463:4;10452:12;:10;:12::i;:::-;10441:23;;:7;:5;:7::i;:::-;:23;;;10433:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15503:5:::1;15480:20;;:28;;;;;;;;;;;;;;;;;;15526:4;15519:11;;15403:135:::0;:::o;10640:201::-;10452:12;:10;:12::i;:::-;10441:23;;:7;:5;:7::i;:::-;:23;;;10433:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10749:1:::1;10729:22;;:8;:22;;;;10721:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10805:28;10824:8;10805:18;:28::i;:::-;10640:201:::0;:::o;12161:24::-;;;;:::o;8903:98::-;8961:7;8992:1;8988;:5;;;;:::i;:::-;8981:12;;8903:98;;;;:::o;144:::-;197:7;224:10;217:17;;144:98;:::o;7113:380::-;7266:1;7249:19;;:5;:19;;;;7241:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7347:1;7328:21;;:7;:21;;;;7320:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7431:6;7401:11;:18;7413:5;7401:18;;;;;;;;;;;;;;;:27;7420:7;7401:27;;;;;;;;;;;;;;;:36;;;;7469:7;7453:32;;7462:5;7453:32;;;7478:6;7453:32;;;;;;:::i;:::-;;;;;;;;7113:380;;;:::o;18665:4072::-;18813:1;18797:18;;:4;:18;;;;18789:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18890:1;18876:16;;:2;:16;;;;18868:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18952:5;:11;18958:4;18952:11;;;;;;;;;;;;;;;;;;;;;;;;;18951:12;18943:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;19085:1;19075:6;:11;19071:93;;;19103:28;19119:4;19125:2;19129:1;19103:15;:28::i;:::-;19146:7;;19071:93;19206:11;;19188:15;:29;19184:51;;;19231:4;19219:5;:9;19225:2;19219:9;;;;;;;;;;;;;;;;:16;;;;;;;;;;;;;;;;;;19184:51;19260:14;;;;;;;;;;;19256:1834;;;19321:7;:5;:7::i;:::-;19313:15;;:4;:15;;;;:49;;;;;19355:7;:5;:7::i;:::-;19349:13;;:2;:13;;;;19313:49;:86;;;;;19397:1;19383:16;;:2;:16;;;;19313:86;:128;;;;;19434:6;19420:21;;:2;:21;;;;19313:128;:159;;;;;19463:9;;;;;;;;;;;19462:10;19313:159;19291:1788;;;19512:13;;;;;;;;;;;19507:150;;19558:19;:25;19578:4;19558:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;19587:19;:23;19607:2;19587:23;;;;;;;;;;;;;;;;;;;;;;;;;19558:52;19550:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;19507:150;19815:20;;;;;;;;;;;19811:423;;;19869:7;:5;:7::i;:::-;19863:13;;:2;:13;;;;:47;;;;;19894:15;19880:30;;:2;:30;;;;19863:47;:79;;;;;19928:13;19914:28;;:2;:28;;;;19863:79;19859:356;;;20020:12;19978:28;:39;20007:9;19978:39;;;;;;;;;;;;;;;;:54;19970:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;20179:12;20137:28;:39;20166:9;20137:39;;;;;;;;;;;;;;;:54;;;;19859:356;19811:423;20302:25;:31;20328:4;20302:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;20338:31;:35;20370:2;20338:35;;;;;;;;;;;;;;;;;;;;;;;;;20337:36;20302:71;20298:766;;;20416:20;;20406:6;:30;;20398:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;20551:9;;20534:13;20544:2;20534:9;:13::i;:::-;20525:6;:22;;;;:::i;:::-;:35;;20517:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20298:766;;;20677:25;:29;20703:2;20677:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;20711:31;:37;20743:4;20711:37;;;;;;;;;;;;;;;;;;;;;;;;;20710:38;20677:71;20673:391;;;20791:20;;20781:6;:30;;20773:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;20673:391;;;20918:31;:35;20950:2;20918:35;;;;;;;;;;;;;;;;;;;;;;;;;20913:151;;21011:9;;20994:13;21004:2;20994:9;:13::i;:::-;20985:6;:22;;;;:::i;:::-;:35;;20977:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20913:151;20673:391;20298:766;19291:1788;19256:1834;21104:28;21135:24;21153:4;21135:9;:24::i;:::-;21104:55;;21170:12;21209:18;;21185:20;:42;;21170:57;;21256:7;:34;;;;;21281:9;;;;;;;;;;;21280:10;21256:34;:83;;;;;21308:25;:31;21334:4;21308:31;;;;;;;;;;;;;;;;;;;;;;;;;21307:32;21256:83;:126;;;;;21357:19;:25;21377:4;21357:25;;;;;;;;;;;;;;;;;;;;;;;;;21356:26;21256:126;:167;;;;;21400:19;:23;21420:2;21400:23;;;;;;;;;;;;;;;;;;;;;;;;;21399:24;21256:167;21238:297;;;21462:4;21450:9;;:16;;;;;;;;;;;;;;;;;;21481:10;:8;:10::i;:::-;21518:5;21506:9;;:17;;;;;;;;;;;;;;;;;;21238:297;21547:12;21563:9;;;;;;;;;;;21562:10;21547:25;;21674:19;:25;21694:4;21674:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21703:19;:23;21723:2;21703:23;;;;;;;;;;;;;;;;;;;;;;;;;21674:52;21670:73;;;21738:5;21728:15;;21670:73;21774:12;21879:7;21875:809;;;21931:25;:29;21957:2;21931:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;21980:1;21964:13;;:17;21931:50;21927:602;;;22009:34;22039:3;22009:25;22020:13;;22009:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;22002:41;;22102:13;;22087:12;;22080:4;:19;;;;:::i;:::-;:35;;;;:::i;:::-;22062:14;;:53;;;;;;;:::i;:::-;;;;;;;;22180:13;;22164;;22157:4;:20;;;;:::i;:::-;:36;;;;:::i;:::-;22134:19;;:59;;;;;;;:::i;:::-;;;;;;;;21927:602;;;22254:25;:31;22280:4;22254:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;22304:1;22289:12;;:16;22254:51;22250:279;;;22333:33;22362:3;22333:24;22344:12;;22333:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;22326:40;;22424:12;;22410:11;;22403:4;:18;;;;:::i;:::-;:33;;;;:::i;:::-;22385:14;;:51;;;;;;;:::i;:::-;;;;;;;;22501:12;;22485:13;;22478:4;:20;;;;:::i;:::-;:35;;;;:::i;:::-;22455:19;;:58;;;;;;;:::i;:::-;;;;;;;;22250:279;21927:602;22556:1;22549:4;:8;22545:91;;;22578:42;22594:4;22608;22615;22578:15;:42::i;:::-;22545:91;22668:4;22658:14;;;;;:::i;:::-;;;21875:809;22696:33;22712:4;22718:2;22722:6;22696:15;:33::i;:::-;18778:3959;;;;18665:4072;;;;:::o;10849:191::-;10923:16;10942:6;;;;;;;;;;;10923:25;;10968:8;10959:6;;:17;;;;;;;;;;;;;;;;;;11023:8;10992:40;;11013:8;10992:40;;;;;;;;;;;;10912:128;10849:191;:::o;17817:130::-;17934:5;17900:25;:31;17926:4;17900:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;17817:130;;:::o;5366:733::-;5524:1;5506:20;;:6;:20;;;;5498:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5608:1;5587:23;;:9;:23;;;;5579:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5663:47;5684:6;5692:9;5703:6;5663:20;:47::i;:::-;5723:21;5747:9;:17;5757:6;5747:17;;;;;;;;;;;;;;;;5723:41;;5800:6;5783:13;:23;;5775:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5921:6;5905:13;:22;5885:9;:17;5895:6;5885:17;;;;;;;;;;;;;;;:42;;;;5973:6;5949:9;:20;5959:9;5949:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;6014:9;5997:35;;6006:6;5997:35;;;6025:6;5997:35;;;;;;:::i;:::-;;;;;;;;6045:46;6065:6;6073:9;6084:6;6045:19;:46::i;:::-;5487:612;5366:733;;;:::o;23869:1250::-;23908:23;23934:24;23952:4;23934:9;:24::i;:::-;23908:50;;23969:25;24019:14;;23997:19;;:36;;;;:::i;:::-;23969:64;;24077:1;24058:15;:20;:46;;;;24103:1;24082:17;:22;24058:46;24054:59;;;24106:7;;;;24054:59;24166:2;24145:18;;:23;;;;:::i;:::-;24127:15;:41;24123:88;;;24209:2;24188:18;;:23;;;;:::i;:::-;24170:41;;24123:88;24281:23;24367:1;24347:17;24325:19;;24307:15;:37;;;;:::i;:::-;:57;;;;:::i;:::-;:61;;;;:::i;:::-;24281:87;;24379:26;24408:36;24428:15;24408;:19;;:36;;;;:::i;:::-;24379:65;;24465:25;24493:21;24465:49;;24527:37;24545:18;24527:17;:37::i;:::-;24586:18;24607:44;24633:17;24607:21;:25;;:44;;;;:::i;:::-;24586:65;;24662:18;24683:53;24718:17;24683:30;24698:14;;24683:10;:14;;:30;;;;:::i;:::-;:34;;:53;;;;:::i;:::-;24662:74;;24747:23;24786:10;24773;:23;;;;:::i;:::-;24747:49;;24834:1;24817:14;:18;;;;24868:1;24846:19;:23;;;;24920:1;24902:15;:19;:42;;;;;24943:1;24925:15;:19;24902:42;24898:214;;;24961:47;24975:15;24992;24961:13;:47::i;:::-;25028:72;25043:18;25063:15;25080:19;;25028:72;;;;;;;;:::i;:::-;;;;;;;;24898:214;23897:1222;;;;;;;;23869:1250;:::o;9115:98::-;9173:7;9204:1;9200;:5;;;;:::i;:::-;9193:12;;9115:98;;;;:::o;9221:::-;9279:7;9310:1;9306;:5;;;;:::i;:::-;9299:12;;9221:98;;;;:::o;7501:125::-;;;;:::o;7634:124::-;;;;:::o;9009:98::-;9067:7;9098:1;9094;:5;;;;:::i;:::-;9087:12;;9009:98;;;;:::o;22745:590::-;22872:21;22910:1;22896:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22872:40;;22941:4;22923;22928:1;22923:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22967:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22957:4;22962:1;22957:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;23002:62;23019:4;23034:15;23052:11;23002:8;:62::i;:::-;23103:15;:66;;;23184:11;23210:1;23254:4;23281;23301:15;23103:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22801:534;22745:590;:::o;23347:514::-;23496:62;23513:4;23528:15;23546:11;23496:8;:62::i;:::-;23601:15;:31;;;23640:9;23673:4;23693:11;23719:1;23762;23805:7;:5;:7::i;:::-;23827:15;23601:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23347:514;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:307::-;1518:1;1528:113;1542:6;1539:1;1536:13;1528:113;;;1627:1;1622:3;1618:11;1612:18;1608:1;1603:3;1599:11;1592:39;1564:2;1561:1;1557:10;1552:15;;1528:113;;;1659:6;1656:1;1653:13;1650:101;;;1739:1;1730:6;1725:3;1721:16;1714:27;1650:101;1499:258;1450:307;;;:::o;1763:102::-;1804:6;1855:2;1851:7;1846:2;1839:5;1835:14;1831:28;1821:38;;1763:102;;;:::o;1871:364::-;1959:3;1987:39;2020:5;1987:39;:::i;:::-;2042:71;2106:6;2101:3;2042:71;:::i;:::-;2035:78;;2122:52;2167:6;2162:3;2155:4;2148:5;2144:16;2122:52;:::i;:::-;2199:29;2221:6;2199:29;:::i;:::-;2194:3;2190:39;2183:46;;1963:272;1871:364;;;;:::o;2241:313::-;2354:4;2392:2;2381:9;2377:18;2369:26;;2441:9;2435:4;2431:20;2427:1;2416:9;2412:17;2405:47;2469:78;2542:4;2533:6;2469:78;:::i;:::-;2461:86;;2241:313;;;;:::o;2560:126::-;2597:7;2637:42;2630:5;2626:54;2615:65;;2560:126;;;:::o;2692:96::-;2729:7;2758:24;2776:5;2758:24;:::i;:::-;2747:35;;2692:96;;;:::o;2794:122::-;2867:24;2885:5;2867:24;:::i;:::-;2860:5;2857:35;2847:63;;2906:1;2903;2896:12;2847:63;2794:122;:::o;2922:139::-;2968:5;3006:6;2993:20;2984:29;;3022:33;3049:5;3022:33;:::i;:::-;2922:139;;;;:::o;3067:474::-;3135:6;3143;3192:2;3180:9;3171:7;3167:23;3163:32;3160:119;;;3198:79;;:::i;:::-;3160:119;3318:1;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3289:117;3445:2;3471:53;3516:7;3507:6;3496:9;3492:22;3471:53;:::i;:::-;3461:63;;3416:118;3067:474;;;;;:::o;3547:90::-;3581:7;3624:5;3617:13;3610:21;3599:32;;3547:90;;;:::o;3643:109::-;3724:21;3739:5;3724:21;:::i;:::-;3719:3;3712:34;3643:109;;:::o;3758:210::-;3845:4;3883:2;3872:9;3868:18;3860:26;;3896:65;3958:1;3947:9;3943:17;3934:6;3896:65;:::i;:::-;3758:210;;;;:::o;3974:329::-;4033:6;4082:2;4070:9;4061:7;4057:23;4053:32;4050:119;;;4088:79;;:::i;:::-;4050:119;4208:1;4233:53;4278:7;4269:6;4258:9;4254:22;4233:53;:::i;:::-;4223:63;;4179:117;3974:329;;;;:::o;4309:60::-;4337:3;4358:5;4351:12;;4309:60;;;:::o;4375:142::-;4425:9;4458:53;4476:34;4485:24;4503:5;4485:24;:::i;:::-;4476:34;:::i;:::-;4458:53;:::i;:::-;4445:66;;4375:142;;;:::o;4523:126::-;4573:9;4606:37;4637:5;4606:37;:::i;:::-;4593:50;;4523:126;;;:::o;4655:153::-;4732:9;4765:37;4796:5;4765:37;:::i;:::-;4752:50;;4655:153;;;:::o;4814:185::-;4928:64;4986:5;4928:64;:::i;:::-;4923:3;4916:77;4814:185;;:::o;5005:276::-;5125:4;5163:2;5152:9;5148:18;5140:26;;5176:98;5271:1;5260:9;5256:17;5247:6;5176:98;:::i;:::-;5005:276;;;;:::o;5287:118::-;5374:24;5392:5;5374:24;:::i;:::-;5369:3;5362:37;5287:118;;:::o;5411:222::-;5504:4;5542:2;5531:9;5527:18;5519:26;;5555:71;5623:1;5612:9;5608:17;5599:6;5555:71;:::i;:::-;5411:222;;;;:::o;5639:329::-;5698:6;5747:2;5735:9;5726:7;5722:23;5718:32;5715:119;;;5753:79;;:::i;:::-;5715:119;5873:1;5898:53;5943:7;5934:6;5923:9;5919:22;5898:53;:::i;:::-;5888:63;;5844:117;5639:329;;;;:::o;5974:619::-;6051:6;6059;6067;6116:2;6104:9;6095:7;6091:23;6087:32;6084:119;;;6122:79;;:::i;:::-;6084:119;6242:1;6267:53;6312:7;6303:6;6292:9;6288:22;6267:53;:::i;:::-;6257:63;;6213:117;6369:2;6395:53;6440:7;6431:6;6420:9;6416:22;6395:53;:::i;:::-;6385:63;;6340:118;6497:2;6523:53;6568:7;6559:6;6548:9;6544:22;6523:53;:::i;:::-;6513:63;;6468:118;5974:619;;;;;:::o;6599:86::-;6634:7;6674:4;6667:5;6663:16;6652:27;;6599:86;;;:::o;6691:112::-;6774:22;6790:5;6774:22;:::i;:::-;6769:3;6762:35;6691:112;;:::o;6809:214::-;6898:4;6936:2;6925:9;6921:18;6913:26;;6949:67;7013:1;7002:9;6998:17;6989:6;6949:67;:::i;:::-;6809:214;;;;:::o;7029:118::-;7116:24;7134:5;7116:24;:::i;:::-;7111:3;7104:37;7029:118;;:::o;7153:222::-;7246:4;7284:2;7273:9;7269:18;7261:26;;7297:71;7365:1;7354:9;7350:17;7341:6;7297:71;:::i;:::-;7153:222;;;;:::o;7381:117::-;7490:1;7487;7480:12;7504:180;7552:77;7549:1;7542:88;7649:4;7646:1;7639:15;7673:4;7670:1;7663:15;7690:281;7773:27;7795:4;7773:27;:::i;:::-;7765:6;7761:40;7903:6;7891:10;7888:22;7867:18;7855:10;7852:34;7849:62;7846:88;;;7914:18;;:::i;:::-;7846:88;7954:10;7950:2;7943:22;7733:238;7690:281;;:::o;7977:129::-;8011:6;8038:20;;:::i;:::-;8028:30;;8067:33;8095:4;8087:6;8067:33;:::i;:::-;7977:129;;;:::o;8112:311::-;8189:4;8279:18;8271:6;8268:30;8265:56;;;8301:18;;:::i;:::-;8265:56;8351:4;8343:6;8339:17;8331:25;;8411:4;8405;8401:15;8393:23;;8112:311;;;:::o;8429:117::-;8538:1;8535;8528:12;8569:710;8665:5;8690:81;8706:64;8763:6;8706:64;:::i;:::-;8690:81;:::i;:::-;8681:90;;8791:5;8820:6;8813:5;8806:21;8854:4;8847:5;8843:16;8836:23;;8907:4;8899:6;8895:17;8887:6;8883:30;8936:3;8928:6;8925:15;8922:122;;;8955:79;;:::i;:::-;8922:122;9070:6;9053:220;9087:6;9082:3;9079:15;9053:220;;;9162:3;9191:37;9224:3;9212:10;9191:37;:::i;:::-;9186:3;9179:50;9258:4;9253:3;9249:14;9242:21;;9129:144;9113:4;9108:3;9104:14;9097:21;;9053:220;;;9057:21;8671:608;;8569:710;;;;;:::o;9302:370::-;9373:5;9422:3;9415:4;9407:6;9403:17;9399:27;9389:122;;9430:79;;:::i;:::-;9389:122;9547:6;9534:20;9572:94;9662:3;9654:6;9647:4;9639:6;9635:17;9572:94;:::i;:::-;9563:103;;9379:293;9302:370;;;;:::o;9678:539::-;9762:6;9811:2;9799:9;9790:7;9786:23;9782:32;9779:119;;;9817:79;;:::i;:::-;9779:119;9965:1;9954:9;9950:17;9937:31;9995:18;9987:6;9984:30;9981:117;;;10017:79;;:::i;:::-;9981:117;10122:78;10192:7;10183:6;10172:9;10168:22;10122:78;:::i;:::-;10112:88;;9908:302;9678:539;;;;:::o;10223:116::-;10293:21;10308:5;10293:21;:::i;:::-;10286:5;10283:32;10273:60;;10329:1;10326;10319:12;10273:60;10223:116;:::o;10345:133::-;10388:5;10426:6;10413:20;10404:29;;10442:30;10466:5;10442:30;:::i;:::-;10345:133;;;;:::o;10484:468::-;10549:6;10557;10606:2;10594:9;10585:7;10581:23;10577:32;10574:119;;;10612:79;;:::i;:::-;10574:119;10732:1;10757:53;10802:7;10793:6;10782:9;10778:22;10757:53;:::i;:::-;10747:63;;10703:117;10859:2;10885:50;10927:7;10918:6;10907:9;10903:22;10885:50;:::i;:::-;10875:60;;10830:115;10484:468;;;;;:::o;10958:474::-;11026:6;11034;11083:2;11071:9;11062:7;11058:23;11054:32;11051:119;;;11089:79;;:::i;:::-;11051:119;11209:1;11234:53;11279:7;11270:6;11259:9;11255:22;11234:53;:::i;:::-;11224:63;;11180:117;11336:2;11362:53;11407:7;11398:6;11387:9;11383:22;11362:53;:::i;:::-;11352:63;;11307:118;10958:474;;;;;:::o;11438:182::-;11578:34;11574:1;11566:6;11562:14;11555:58;11438:182;:::o;11626:366::-;11768:3;11789:67;11853:2;11848:3;11789:67;:::i;:::-;11782:74;;11865:93;11954:3;11865:93;:::i;:::-;11983:2;11978:3;11974:12;11967:19;;11626:366;;;:::o;11998:419::-;12164:4;12202:2;12191:9;12187:18;12179:26;;12251:9;12245:4;12241:20;12237:1;12226:9;12222:17;12215:47;12279:131;12405:4;12279:131;:::i;:::-;12271:139;;11998:419;;;:::o;12423:177::-;12563:29;12559:1;12551:6;12547:14;12540:53;12423:177;:::o;12606:366::-;12748:3;12769:67;12833:2;12828:3;12769:67;:::i;:::-;12762:74;;12845:93;12934:3;12845:93;:::i;:::-;12963:2;12958:3;12954:12;12947:19;;12606:366;;;:::o;12978:419::-;13144:4;13182:2;13171:9;13167:18;13159:26;;13231:9;13225:4;13221:20;13217:1;13206:9;13202:17;13195:47;13259:131;13385:4;13259:131;:::i;:::-;13251:139;;12978:419;;;:::o;13403:180::-;13451:77;13448:1;13441:88;13548:4;13545:1;13538:15;13572:4;13569:1;13562:15;13589:320;13633:6;13670:1;13664:4;13660:12;13650:22;;13717:1;13711:4;13707:12;13738:18;13728:81;;13794:4;13786:6;13782:17;13772:27;;13728:81;13856:2;13848:6;13845:14;13825:18;13822:38;13819:84;;;13875:18;;:::i;:::-;13819:84;13640:269;13589:320;;;:::o;13915:180::-;13963:77;13960:1;13953:88;14060:4;14057:1;14050:15;14084:4;14081:1;14074:15;14101:348;14141:7;14164:20;14182:1;14164:20;:::i;:::-;14159:25;;14198:20;14216:1;14198:20;:::i;:::-;14193:25;;14386:1;14318:66;14314:74;14311:1;14308:81;14303:1;14296:9;14289:17;14285:105;14282:131;;;14393:18;;:::i;:::-;14282:131;14441:1;14438;14434:9;14423:20;;14101:348;;;;:::o;14455:180::-;14503:77;14500:1;14493:88;14600:4;14597:1;14590:15;14624:4;14621:1;14614:15;14641:185;14681:1;14698:20;14716:1;14698:20;:::i;:::-;14693:25;;14732:20;14750:1;14732:20;:::i;:::-;14727:25;;14771:1;14761:35;;14776:18;;:::i;:::-;14761:35;14818:1;14815;14811:9;14806:14;;14641:185;;;;:::o;14832:234::-;14972:34;14968:1;14960:6;14956:14;14949:58;15041:17;15036:2;15028:6;15024:15;15017:42;14832:234;:::o;15072:366::-;15214:3;15235:67;15299:2;15294:3;15235:67;:::i;:::-;15228:74;;15311:93;15400:3;15311:93;:::i;:::-;15429:2;15424:3;15420:12;15413:19;;15072:366;;;:::o;15444:419::-;15610:4;15648:2;15637:9;15633:18;15625:26;;15697:9;15691:4;15687:20;15683:1;15672:9;15668:17;15661:47;15725:131;15851:4;15725:131;:::i;:::-;15717:139;;15444:419;;;:::o;15869:227::-;16009:34;16005:1;15997:6;15993:14;15986:58;16078:10;16073:2;16065:6;16061:15;16054:35;15869:227;:::o;16102:366::-;16244:3;16265:67;16329:2;16324:3;16265:67;:::i;:::-;16258:74;;16341:93;16430:3;16341:93;:::i;:::-;16459:2;16454:3;16450:12;16443:19;;16102:366;;;:::o;16474:419::-;16640:4;16678:2;16667:9;16663:18;16655:26;;16727:9;16721:4;16717:20;16713:1;16702:9;16698:17;16691:47;16755:131;16881:4;16755:131;:::i;:::-;16747:139;;16474:419;;;:::o;16899:305::-;16939:3;16958:20;16976:1;16958:20;:::i;:::-;16953:25;;16992:20;17010:1;16992:20;:::i;:::-;16987:25;;17146:1;17078:66;17074:74;17071:1;17068:81;17065:107;;;17152:18;;:::i;:::-;17065:107;17196:1;17193;17189:9;17182:16;;16899:305;;;;:::o;17210:180::-;17258:77;17255:1;17248:88;17355:4;17352:1;17345:15;17379:4;17376:1;17369:15;17396:233;17435:3;17458:24;17476:5;17458:24;:::i;:::-;17449:33;;17504:66;17497:5;17494:77;17491:103;;;17574:18;;:::i;:::-;17491:103;17621:1;17614:5;17610:13;17603:20;;17396:233;;;:::o;17635:244::-;17775:34;17771:1;17763:6;17759:14;17752:58;17844:27;17839:2;17831:6;17827:15;17820:52;17635:244;:::o;17885:366::-;18027:3;18048:67;18112:2;18107:3;18048:67;:::i;:::-;18041:74;;18124:93;18213:3;18124:93;:::i;:::-;18242:2;18237:3;18233:12;18226:19;;17885:366;;;:::o;18257:419::-;18423:4;18461:2;18450:9;18446:18;18438:26;;18510:9;18504:4;18500:20;18496:1;18485:9;18481:17;18474:47;18538:131;18664:4;18538:131;:::i;:::-;18530:139;;18257:419;;;:::o;18682:224::-;18822:34;18818:1;18810:6;18806:14;18799:58;18891:7;18886:2;18878:6;18874:15;18867:32;18682:224;:::o;18912:366::-;19054:3;19075:67;19139:2;19134:3;19075:67;:::i;:::-;19068:74;;19151:93;19240:3;19151:93;:::i;:::-;19269:2;19264:3;19260:12;19253:19;;18912:366;;;:::o;19284:419::-;19450:4;19488:2;19477:9;19473:18;19465:26;;19537:9;19531:4;19527:20;19523:1;19512:9;19508:17;19501:47;19565:131;19691:4;19565:131;:::i;:::-;19557:139;;19284:419;;;:::o;19709:223::-;19849:34;19845:1;19837:6;19833:14;19826:58;19918:6;19913:2;19905:6;19901:15;19894:31;19709:223;:::o;19938:366::-;20080:3;20101:67;20165:2;20160:3;20101:67;:::i;:::-;20094:74;;20177:93;20266:3;20177:93;:::i;:::-;20295:2;20290:3;20286:12;20279:19;;19938:366;;;:::o;20310:419::-;20476:4;20514:2;20503:9;20499:18;20491:26;;20563:9;20557:4;20553:20;20549:1;20538:9;20534:17;20527:47;20591:131;20717:4;20591:131;:::i;:::-;20583:139;;20310:419;;;:::o;20735:240::-;20875:34;20871:1;20863:6;20859:14;20852:58;20944:23;20939:2;20931:6;20927:15;20920:48;20735:240;:::o;20981:366::-;21123:3;21144:67;21208:2;21203:3;21144:67;:::i;:::-;21137:74;;21220:93;21309:3;21220:93;:::i;:::-;21338:2;21333:3;21329:12;21322:19;;20981:366;;;:::o;21353:419::-;21519:4;21557:2;21546:9;21542:18;21534:26;;21606:9;21600:4;21596:20;21592:1;21581:9;21577:17;21570:47;21634:131;21760:4;21634:131;:::i;:::-;21626:139;;21353:419;;;:::o;21778:239::-;21918:34;21914:1;21906:6;21902:14;21895:58;21987:22;21982:2;21974:6;21970:15;21963:47;21778:239;:::o;22023:366::-;22165:3;22186:67;22250:2;22245:3;22186:67;:::i;:::-;22179:74;;22262:93;22351:3;22262:93;:::i;:::-;22380:2;22375:3;22371:12;22364:19;;22023:366;;;:::o;22395:419::-;22561:4;22599:2;22588:9;22584:18;22576:26;;22648:9;22642:4;22638:20;22634:1;22623:9;22619:17;22612:47;22676:131;22802:4;22676:131;:::i;:::-;22668:139;;22395:419;;;:::o;22820:225::-;22960:34;22956:1;22948:6;22944:14;22937:58;23029:8;23024:2;23016:6;23012:15;23005:33;22820:225;:::o;23051:366::-;23193:3;23214:67;23278:2;23273:3;23214:67;:::i;:::-;23207:74;;23290:93;23379:3;23290:93;:::i;:::-;23408:2;23403:3;23399:12;23392:19;;23051:366;;;:::o;23423:419::-;23589:4;23627:2;23616:9;23612:18;23604:26;;23676:9;23670:4;23666:20;23662:1;23651:9;23647:17;23640:47;23704:131;23830:4;23704:131;:::i;:::-;23696:139;;23423:419;;;:::o;23848:223::-;23988:34;23984:1;23976:6;23972:14;23965:58;24057:6;24052:2;24044:6;24040:15;24033:31;23848:223;:::o;24077:366::-;24219:3;24240:67;24304:2;24299:3;24240:67;:::i;:::-;24233:74;;24316:93;24405:3;24316:93;:::i;:::-;24434:2;24429:3;24425:12;24418:19;;24077:366;;;:::o;24449:419::-;24615:4;24653:2;24642:9;24638:18;24630:26;;24702:9;24696:4;24692:20;24688:1;24677:9;24673:17;24666:47;24730:131;24856:4;24730:131;:::i;:::-;24722:139;;24449:419;;;:::o;24874:221::-;25014:34;25010:1;25002:6;24998:14;24991:58;25083:4;25078:2;25070:6;25066:15;25059:29;24874:221;:::o;25101:366::-;25243:3;25264:67;25328:2;25323:3;25264:67;:::i;:::-;25257:74;;25340:93;25429:3;25340:93;:::i;:::-;25458:2;25453:3;25449:12;25442:19;;25101:366;;;:::o;25473:419::-;25639:4;25677:2;25666:9;25662:18;25654:26;;25726:9;25720:4;25716:20;25712:1;25701:9;25697:17;25690:47;25754:131;25880:4;25754:131;:::i;:::-;25746:139;;25473:419;;;:::o;25898:224::-;26038:34;26034:1;26026:6;26022:14;26015:58;26107:7;26102:2;26094:6;26090:15;26083:32;25898:224;:::o;26128:366::-;26270:3;26291:67;26355:2;26350:3;26291:67;:::i;:::-;26284:74;;26367:93;26456:3;26367:93;:::i;:::-;26485:2;26480:3;26476:12;26469:19;;26128:366;;;:::o;26500:419::-;26666:4;26704:2;26693:9;26689:18;26681:26;;26753:9;26747:4;26743:20;26739:1;26728:9;26724:17;26717:47;26781:131;26907:4;26781:131;:::i;:::-;26773:139;;26500:419;;;:::o;26925:222::-;27065:34;27061:1;27053:6;27049:14;27042:58;27134:5;27129:2;27121:6;27117:15;27110:30;26925:222;:::o;27153:366::-;27295:3;27316:67;27380:2;27375:3;27316:67;:::i;:::-;27309:74;;27392:93;27481:3;27392:93;:::i;:::-;27510:2;27505:3;27501:12;27494:19;;27153:366;;;:::o;27525:419::-;27691:4;27729:2;27718:9;27714:18;27706:26;;27778:9;27772:4;27768:20;27764:1;27753:9;27749:17;27742:47;27806:131;27932:4;27806:131;:::i;:::-;27798:139;;27525:419;;;:::o;27950:305::-;28090:34;28086:1;28078:6;28074:14;28067:58;28159:34;28154:2;28146:6;28142:15;28135:59;28228:19;28223:2;28215:6;28211:15;28204:44;27950:305;:::o;28261:366::-;28403:3;28424:67;28488:2;28483:3;28424:67;:::i;:::-;28417:74;;28500:93;28589:3;28500:93;:::i;:::-;28618:2;28613:3;28609:12;28602:19;;28261:366;;;:::o;28633:419::-;28799:4;28837:2;28826:9;28822:18;28814:26;;28886:9;28880:4;28876:20;28872:1;28861:9;28857:17;28850:47;28914:131;29040:4;28914:131;:::i;:::-;28906:139;;28633:419;;;:::o;29058:172::-;29198:24;29194:1;29186:6;29182:14;29175:48;29058:172;:::o;29236:366::-;29378:3;29399:67;29463:2;29458:3;29399:67;:::i;:::-;29392:74;;29475:93;29564:3;29475:93;:::i;:::-;29593:2;29588:3;29584:12;29577:19;;29236:366;;;:::o;29608:419::-;29774:4;29812:2;29801:9;29797:18;29789:26;;29861:9;29855:4;29851:20;29847:1;29836:9;29832:17;29825:47;29889:131;30015:4;29889:131;:::i;:::-;29881:139;;29608:419;;;:::o;30033:297::-;30173:34;30169:1;30161:6;30157:14;30150:58;30242:34;30237:2;30229:6;30225:15;30218:59;30311:11;30306:2;30298:6;30294:15;30287:36;30033:297;:::o;30336:366::-;30478:3;30499:67;30563:2;30558:3;30499:67;:::i;:::-;30492:74;;30575:93;30664:3;30575:93;:::i;:::-;30693:2;30688:3;30684:12;30677:19;;30336:366;;;:::o;30708:419::-;30874:4;30912:2;30901:9;30897:18;30889:26;;30961:9;30955:4;30951:20;30947:1;30936:9;30932:17;30925:47;30989:131;31115:4;30989:131;:::i;:::-;30981:139;;30708:419;;;:::o;31133:240::-;31273:34;31269:1;31261:6;31257:14;31250:58;31342:23;31337:2;31329:6;31325:15;31318:48;31133:240;:::o;31379:366::-;31521:3;31542:67;31606:2;31601:3;31542:67;:::i;:::-;31535:74;;31618:93;31707:3;31618:93;:::i;:::-;31736:2;31731:3;31727:12;31720:19;;31379:366;;;:::o;31751:419::-;31917:4;31955:2;31944:9;31940:18;31932:26;;32004:9;31998:4;31994:20;31990:1;31979:9;31975:17;31968:47;32032:131;32158:4;32032:131;:::i;:::-;32024:139;;31751:419;;;:::o;32176:169::-;32316:21;32312:1;32304:6;32300:14;32293:45;32176:169;:::o;32351:366::-;32493:3;32514:67;32578:2;32573:3;32514:67;:::i;:::-;32507:74;;32590:93;32679:3;32590:93;:::i;:::-;32708:2;32703:3;32699:12;32692:19;;32351:366;;;:::o;32723:419::-;32889:4;32927:2;32916:9;32912:18;32904:26;;32976:9;32970:4;32966:20;32962:1;32951:9;32947:17;32940:47;33004:131;33130:4;33004:131;:::i;:::-;32996:139;;32723:419;;;:::o;33148:241::-;33288:34;33284:1;33276:6;33272:14;33265:58;33357:24;33352:2;33344:6;33340:15;33333:49;33148:241;:::o;33395:366::-;33537:3;33558:67;33622:2;33617:3;33558:67;:::i;:::-;33551:74;;33634:93;33723:3;33634:93;:::i;:::-;33752:2;33747:3;33743:12;33736:19;;33395:366;;;:::o;33767:419::-;33933:4;33971:2;33960:9;33956:18;33948:26;;34020:9;34014:4;34010:20;34006:1;33995:9;33991:17;33984:47;34048:131;34174:4;34048:131;:::i;:::-;34040:139;;33767:419;;;:::o;34192:191::-;34232:4;34252:20;34270:1;34252:20;:::i;:::-;34247:25;;34286:20;34304:1;34286:20;:::i;:::-;34281:25;;34325:1;34322;34319:8;34316:34;;;34330:18;;:::i;:::-;34316:34;34375:1;34372;34368:9;34360:17;;34192:191;;;;:::o;34389:225::-;34529:34;34525:1;34517:6;34513:14;34506:58;34598:8;34593:2;34585:6;34581:15;34574:33;34389:225;:::o;34620:366::-;34762:3;34783:67;34847:2;34842:3;34783:67;:::i;:::-;34776:74;;34859:93;34948:3;34859:93;:::i;:::-;34977:2;34972:3;34968:12;34961:19;;34620:366;;;:::o;34992:419::-;35158:4;35196:2;35185:9;35181:18;35173:26;;35245:9;35239:4;35235:20;35231:1;35220:9;35216:17;35209:47;35273:131;35399:4;35273:131;:::i;:::-;35265:139;;34992:419;;;:::o;35417:442::-;35566:4;35604:2;35593:9;35589:18;35581:26;;35617:71;35685:1;35674:9;35670:17;35661:6;35617:71;:::i;:::-;35698:72;35766:2;35755:9;35751:18;35742:6;35698:72;:::i;:::-;35780;35848:2;35837:9;35833:18;35824:6;35780:72;:::i;:::-;35417:442;;;;;;:::o;35865:143::-;35922:5;35953:6;35947:13;35938:22;;35969:33;35996:5;35969:33;:::i;:::-;35865:143;;;;:::o;36014:351::-;36084:6;36133:2;36121:9;36112:7;36108:23;36104:32;36101:119;;;36139:79;;:::i;:::-;36101:119;36259:1;36284:64;36340:7;36331:6;36320:9;36316:22;36284:64;:::i;:::-;36274:74;;36230:128;36014:351;;;;:::o;36371:85::-;36416:7;36445:5;36434:16;;36371:85;;;:::o;36462:158::-;36520:9;36553:61;36571:42;36580:32;36606:5;36580:32;:::i;:::-;36571:42;:::i;:::-;36553:61;:::i;:::-;36540:74;;36462:158;;;:::o;36626:147::-;36721:45;36760:5;36721:45;:::i;:::-;36716:3;36709:58;36626:147;;:::o;36779:114::-;36846:6;36880:5;36874:12;36864:22;;36779:114;;;:::o;36899:184::-;36998:11;37032:6;37027:3;37020:19;37072:4;37067:3;37063:14;37048:29;;36899:184;;;;:::o;37089:132::-;37156:4;37179:3;37171:11;;37209:4;37204:3;37200:14;37192:22;;37089:132;;;:::o;37227:108::-;37304:24;37322:5;37304:24;:::i;:::-;37299:3;37292:37;37227:108;;:::o;37341:179::-;37410:10;37431:46;37473:3;37465:6;37431:46;:::i;:::-;37509:4;37504:3;37500:14;37486:28;;37341:179;;;;:::o;37526:113::-;37596:4;37628;37623:3;37619:14;37611:22;;37526:113;;;:::o;37675:732::-;37794:3;37823:54;37871:5;37823:54;:::i;:::-;37893:86;37972:6;37967:3;37893:86;:::i;:::-;37886:93;;38003:56;38053:5;38003:56;:::i;:::-;38082:7;38113:1;38098:284;38123:6;38120:1;38117:13;38098:284;;;38199:6;38193:13;38226:63;38285:3;38270:13;38226:63;:::i;:::-;38219:70;;38312:60;38365:6;38312:60;:::i;:::-;38302:70;;38158:224;38145:1;38142;38138:9;38133:14;;38098:284;;;38102:14;38398:3;38391:10;;37799:608;;;37675:732;;;;:::o;38413:831::-;38676:4;38714:3;38703:9;38699:19;38691:27;;38728:71;38796:1;38785:9;38781:17;38772:6;38728:71;:::i;:::-;38809:80;38885:2;38874:9;38870:18;38861:6;38809:80;:::i;:::-;38936:9;38930:4;38926:20;38921:2;38910:9;38906:18;38899:48;38964:108;39067:4;39058:6;38964:108;:::i;:::-;38956:116;;39082:72;39150:2;39139:9;39135:18;39126:6;39082:72;:::i;:::-;39164:73;39232:3;39221:9;39217:19;39208:6;39164:73;:::i;:::-;38413:831;;;;;;;;:::o;39250:807::-;39499:4;39537:3;39526:9;39522:19;39514:27;;39551:71;39619:1;39608:9;39604:17;39595:6;39551:71;:::i;:::-;39632:72;39700:2;39689:9;39685:18;39676:6;39632:72;:::i;:::-;39714:80;39790:2;39779:9;39775:18;39766:6;39714:80;:::i;:::-;39804;39880:2;39869:9;39865:18;39856:6;39804:80;:::i;:::-;39894:73;39962:3;39951:9;39947:19;39938:6;39894:73;:::i;:::-;39977;40045:3;40034:9;40030:19;40021:6;39977:73;:::i;:::-;39250:807;;;;;;;;;:::o;40063:143::-;40120:5;40151:6;40145:13;40136:22;;40167:33;40194:5;40167:33;:::i;:::-;40063:143;;;;:::o;40212:663::-;40300:6;40308;40316;40365:2;40353:9;40344:7;40340:23;40336:32;40333:119;;;40371:79;;:::i;:::-;40333:119;40491:1;40516:64;40572:7;40563:6;40552:9;40548:22;40516:64;:::i;:::-;40506:74;;40462:128;40629:2;40655:64;40711:7;40702:6;40691:9;40687:22;40655:64;:::i;:::-;40645:74;;40600:129;40768:2;40794:64;40850:7;40841:6;40830:9;40826:22;40794:64;:::i;:::-;40784:74;;40739:129;40212:663;;;;;:::o

Swarm Source

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