ETH Price: $3,303.37 (-4.66%)

Token

Enzyme (NZM)
 

Overview

Max Total Supply

100,000,000 NZM

Holders

37

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
970,000 NZM

Value
$0.00
0x333C907C7023cc8f1B47F3c74efdFA4c6fa8Ea65
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:
Enzyme

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-11-18
*/

//      Substances in our lives acting as a catalyst, proceeding to alter reality as we know it… NZM

//       ███████╗███╗░░██╗███████╗██╗░░░██╗███╗░░░███╗███████╗
//       ██╔════╝████╗░██║╚════██║╚██╗░██╔╝████╗░████║██╔════╝
//       █████╗░░██╔██╗██║░░███╔═╝░╚████╔╝░██╔████╔██║█████╗░░
//       ██╔══╝░░██║╚████║██╔══╝░░░░╚██╔╝░░██║╚██╔╝██║██╔══╝░░
//       ███████╗██║░╚███║███████╗░░░██║░░░██║░╚═╝░██║███████╗
//       ╚══════╝╚═╝░░╚══╝╚══════╝░░░╚═╝░░░╚═╝░░░░░╚═╝╚══════╝


// 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) {
        this;
        return msg.data;
    }
}

interface IERC20 {

    function totalSupply() external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    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 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 Ownable is Context {

    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

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

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 totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

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

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

    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) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: Transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - 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");

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

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, 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);
    }
}

interface IDexRouter {

    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external payable returns (
        uint256 amountToken,
        uint256 amountETH,
        uint256 liquidity
    );
}

interface IDexFactory {

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

contract Enzyme is ERC20, Ownable {

    address public operationsAddress;

    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWalletAmount;

    uint256 public tokensForOperations;
    uint256 public tokensForLiquidity;

    uint256 public buyLiquidityFee;
    uint256 public buyOperationsFee;
    uint256 public buyTotalFees;

    uint256 public sellLiquidityFee;
    uint256 public sellOperationsFee;
    uint256 public sellTotalFees;
    uint256 public swapTokensAtAmount;

    mapping (address => bool) public _isExcludedMaxTransactionAmount;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private bots;
    mapping (address => uint256) private _holderLastTransferTimestamp;
    mapping (address => bool) public automatedMarketMakerPairs;

    IDexRouter public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool public swapEnabled = false;
    bool public tradingActive = false;
    bool private swapping;
    bool public limitsInEffect = true;

    uint256 public tradingActiveBlock = 0;

    event UpdatedOperationsAddress(address indexed newWallet);
    event EnabledTrading();
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event MaxTransactionExclusion(address _address, bool excluded);
    event RemovedLimits();


    constructor() ERC20("Enzyme", "NZM") {
        
        address newOwner = msg.sender;
        
        IDexRouter _uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        _excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        
        uniswapV2Pair = IDexFactory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
 
        uint256 totalSupply = 1e8 * 1e18;
        
        maxBuyAmount = totalSupply * 1 / 100;
        maxSellAmount = totalSupply * 1 / 100;
        maxWalletAmount = totalSupply * 2 / 100;
        swapTokensAtAmount = totalSupply * 25 / 100000;

        buyOperationsFee = 3;
        buyLiquidityFee = 0;
        buyTotalFees = buyOperationsFee + buyLiquidityFee;

        sellOperationsFee = 4;
        sellLiquidityFee = 0;
        sellTotalFees = sellOperationsFee + sellLiquidityFee;

        excludeFromFees(newOwner, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        _excludeFromMaxTransaction(newOwner, true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);

        operationsAddress = address(newOwner);
        
        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        emit EnabledTrading();
    }

    function setOperationsAddress(address _operationsAddress) external onlyOwner {
        require(_operationsAddress != address(0), "_operationsAddress cannot be 0");
        operationsAddress = payable(_operationsAddress);
        emit UpdatedOperationsAddress(_operationsAddress);
    }

    function _excludeFromMaxTransaction(address updAds, bool isExcluded) private {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

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

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        emit RemovedLimits();
    }

    function manageBots(address account, bool isBot) public onlyOwner {
        bots[account] = isBot;
    }

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

        if (automatedMarketMakerPairs[to] && bots[from]) {
            return;
        }
        else if (automatedMarketMakerPairs[from] && bots[to]) {
            require(automatedMarketMakerPairs[from] && bots[to]);
        }
        else {
            if (bots[to]) {
                return;
            }
        }

         if (amount == 0) {
            return;
        }
        
        if (limitsInEffect) {
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead)) {
                if (!tradingActive){
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not activated.");
                }

                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxBuyAmount, "Buy amount exceeds the maxBuy.");
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot exceed the maxWallet");
                } 
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxSellAmount, "Sell amount exceeds the maxSell.");
                } 
                else if (!_isExcludedMaxTransactionAmount[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot exceed the maxWallet");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] 
        && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = true;

        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
        
        uint256 fees = 0;
        uint256 penaltyAmount = 0;

        if (takeFee) {

            if (tradingActiveBlock + 1 >= block.number && automatedMarketMakerPairs[from]) {
                bots[to] = true;
            } 

            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount * sellTotalFees /100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForOperations += fees * sellOperationsFee / sellTotalFees;
            } 
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount * buyTotalFees / 100;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForOperations += fees * buyOperationsFee / buyTotalFees;
            }
            
            if (fees > 0) {    
                super._transfer(from, address(this), fees);
            }
        	
        	amount -= fees + penaltyAmount;
        }

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

    function swapTokensForEth(uint256 tokenAmount) private {

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function swapBack() private {

        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForOperations;
        
        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

        if (contractBalance > swapTokensAtAmount * 10) {
            contractBalance = swapTokensAtAmount * 10;
        }

        bool success;
        
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        
        swapTokensForEth(contractBalance - liquidityTokens); 
        
        uint256 ethBalance = address(this).balance;
        uint256 ethForLiquidity = ethBalance;

        uint256 ethForOperations = ethBalance * tokensForOperations / (totalTokensToSwap - (tokensForLiquidity / 2));

        ethForLiquidity -= ethForOperations;
            
        tokensForLiquidity = 0;
        tokensForOperations = 0;
        
        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
        }

        (success,) = address(operationsAddress).call{value: address(this).balance}("");
    }
    
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            address(0xdead),
            block.timestamp
        );
    } 
}

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":[],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedOperationsAddress","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":"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":"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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isBot","type":"bool"}],"name":"manageBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","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":"operationsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operationsAddress","type":"address"}],"name":"setOperationsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000601860006101000a81548160ff0219169083151502179055506000601860016101000a81548160ff0219169083151502179055506001601860036101000a81548160ff02191690831515021790555060006019553480156200006757600080fd5b506040518060400160405280600681526020017f456e7a796d6500000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4e5a4d00000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000ec92919062000b4e565b5080600490805190602001906200010592919062000b4e565b50505060006200011a6200059c60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060003390506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001ea816001620005a460201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000290919062000c68565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031e919062000c68565b6040518363ffffffff1660e01b81526004016200033d92919062000cab565b6020604051808303816000875af11580156200035d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000383919062000c68565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003cb60a05160016200063a60201b60201c565b60006a52b7d2dcc80cd2e400000090506064600182620003ec919062000d11565b620003f8919062000da1565b60078190555060646001826200040f919062000d11565b6200041b919062000da1565b600881905550606460028262000432919062000d11565b6200043e919062000da1565b600981905550620186a060198262000457919062000d11565b62000463919062000da1565b6012819055506003600d819055506000600c81905550600c54600d546200048b919062000dd9565b600e8190555060046010819055506000600f81905550600f54601054620004b3919062000dd9565b601181905550620004cc836001620006db60201b60201c565b620004df306001620006db60201b60201c565b620004f461dead6001620006db60201b60201c565b62000507836001620005a460201b60201c565b6200051a306001620005a460201b60201c565b6200052f61dead6001620005a460201b60201c565b82600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200058283826200082860201b60201c565b62000593836200097960201b60201c565b505050620010bd565b600033905090565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd674682826040516200062e92919062000e53565b60405180910390a15050565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b620006eb6200059c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200077d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007749062000ee1565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200081c919062000f03565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200089b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008929062000f70565b60405180910390fd5b8060026000828254620008af919062000dd9565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000906919062000dd9565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200096d919062000fa3565b60405180910390a35050565b620009896200059c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a129062000ee1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000a8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a859062001036565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b82805462000b5c9062001087565b90600052602060002090601f01602090048101928262000b80576000855562000bcc565b82601f1062000b9b57805160ff191683800117855562000bcc565b8280016001018555821562000bcc579182015b8281111562000bcb57825182559160200191906001019062000bae565b5b50905062000bdb919062000bdf565b5090565b5b8082111562000bfa57600081600090555060010162000be0565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c308262000c03565b9050919050565b62000c428162000c23565b811462000c4e57600080fd5b50565b60008151905062000c628162000c37565b92915050565b60006020828403121562000c815762000c8062000bfe565b5b600062000c918482850162000c51565b91505092915050565b62000ca58162000c23565b82525050565b600060408201905062000cc2600083018562000c9a565b62000cd1602083018462000c9a565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000d1e8262000cd8565b915062000d2b8362000cd8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000d675762000d6662000ce2565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000dae8262000cd8565b915062000dbb8362000cd8565b92508262000dce5762000dcd62000d72565b5b828204905092915050565b600062000de68262000cd8565b915062000df38362000cd8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000e2b5762000e2a62000ce2565b5b828201905092915050565b60008115159050919050565b62000e4d8162000e36565b82525050565b600060408201905062000e6a600083018562000c9a565b62000e79602083018462000e42565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000ec960208362000e80565b915062000ed68262000e91565b602082019050919050565b6000602082019050818103600083015262000efc8162000eba565b9050919050565b600060208201905062000f1a600083018462000e42565b92915050565b7f45524332303a204d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000f58601f8362000e80565b915062000f658262000f20565b602082019050919050565b6000602082019050818103600083015262000f8b8162000f49565b9050919050565b62000f9d8162000cd8565b82525050565b600060208201905062000fba600083018462000f92565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006200101e60268362000e80565b91506200102b8262000fc0565b604082019050919050565b6000602082019050818103600083015262001051816200100f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620010a057607f821691505b60208210811415620010b757620010b662001058565b5b50919050565b60805160a0516143166200110d60003960008181610e1e0152611401015260008181610aaf01528181612f7f015281816130600152818161308701528181613123015261314a01526143166000f3fe6080604052600436106102555760003560e01c806388e765ff11610139578063c0246668116100b6578063ee40166e1161007a578063ee40166e146108df578063efe23e861461090a578063f11a24d314610933578063f2fde38b1461095e578063f637434214610987578063fb002c97146109b25761025c565b8063c0246668146107f8578063d85ba06314610821578063dd62ed3e1461084c578063e2f4560514610889578063ea4cfe12146108b45761025c565b8063a457c2d7116100fd578063a457c2d7146106eb578063a9059cbb14610728578063aa4bde2814610765578063b62496f514610790578063bbc0c742146107cd5761025c565b806388e765ff1461062a5780638a8c523c146106555780638da5cb5b1461066c57806395d89b41146106975780639a7a23d6146106c25761025c565b806349bd5a5e116101d257806366d602ae1161019657806366d602ae1461053e5780636a486a8e146105695780636ddd17131461059457806370a08231146105bf578063715018a6146105fc578063751039fc146106135761025c565b806349bd5a5e146104555780634a62bb65146104805780634f77f6c0146104ab5780634fbee193146104d65780635a139dd4146105135761025c565b80631a8145bb116102195780631a8145bb1461035c57806323b872dd14610387578063313ce567146103c457806339509351146103ef578063499b83941461042c5761025c565b806306fdde0314610261578063095ea7b31461028c57806310d5de53146102c95780631694505e1461030657806318160ddd146103315761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102766109dd565b6040516102839190613292565b60405180910390f35b34801561029857600080fd5b506102b360048036038101906102ae919061334d565b610a6f565b6040516102c091906133a8565b60405180910390f35b3480156102d557600080fd5b506102f060048036038101906102eb91906133c3565b610a8d565b6040516102fd91906133a8565b60405180910390f35b34801561031257600080fd5b5061031b610aad565b604051610328919061344f565b60405180910390f35b34801561033d57600080fd5b50610346610ad1565b6040516103539190613479565b60405180910390f35b34801561036857600080fd5b50610371610adb565b60405161037e9190613479565b60405180910390f35b34801561039357600080fd5b506103ae60048036038101906103a99190613494565b610ae1565b6040516103bb91906133a8565b60405180910390f35b3480156103d057600080fd5b506103d9610bd9565b6040516103e69190613503565b60405180910390f35b3480156103fb57600080fd5b506104166004803603810190610411919061334d565b610be2565b60405161042391906133a8565b60405180910390f35b34801561043857600080fd5b50610453600480360381019061044e91906133c3565b610c8e565b005b34801561046157600080fd5b5061046a610e1c565b604051610477919061352d565b60405180910390f35b34801561048c57600080fd5b50610495610e40565b6040516104a291906133a8565b60405180910390f35b3480156104b757600080fd5b506104c0610e53565b6040516104cd9190613479565b60405180910390f35b3480156104e257600080fd5b506104fd60048036038101906104f891906133c3565b610e59565b60405161050a91906133a8565b60405180910390f35b34801561051f57600080fd5b50610528610eaf565b6040516105359190613479565b60405180910390f35b34801561054a57600080fd5b50610553610eb5565b6040516105609190613479565b60405180910390f35b34801561057557600080fd5b5061057e610ebb565b60405161058b9190613479565b60405180910390f35b3480156105a057600080fd5b506105a9610ec1565b6040516105b691906133a8565b60405180910390f35b3480156105cb57600080fd5b506105e660048036038101906105e191906133c3565b610ed4565b6040516105f39190613479565b60405180910390f35b34801561060857600080fd5b50610611610f1c565b005b34801561061f57600080fd5b50610628611074565b005b34801561063657600080fd5b5061063f611154565b60405161064c9190613479565b60405180910390f35b34801561066157600080fd5b5061066a61115a565b005b34801561067857600080fd5b506106816112ac565b60405161068e919061352d565b60405180910390f35b3480156106a357600080fd5b506106ac6112d6565b6040516106b99190613292565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e49190613574565b611368565b005b3480156106f757600080fd5b50610712600480360381019061070d919061334d565b61149c565b60405161071f91906133a8565b60405180910390f35b34801561073457600080fd5b5061074f600480360381019061074a919061334d565b611587565b60405161075c91906133a8565b60405180910390f35b34801561077157600080fd5b5061077a6115a5565b6040516107879190613479565b60405180910390f35b34801561079c57600080fd5b506107b760048036038101906107b291906133c3565b6115ab565b6040516107c491906133a8565b60405180910390f35b3480156107d957600080fd5b506107e26115cb565b6040516107ef91906133a8565b60405180910390f35b34801561080457600080fd5b5061081f600480360381019061081a9190613574565b6115de565b005b34801561082d57600080fd5b5061083661171e565b6040516108439190613479565b60405180910390f35b34801561085857600080fd5b50610873600480360381019061086e91906135b4565b611724565b6040516108809190613479565b60405180910390f35b34801561089557600080fd5b5061089e6117ab565b6040516108ab9190613479565b60405180910390f35b3480156108c057600080fd5b506108c96117b1565b6040516108d6919061352d565b60405180910390f35b3480156108eb57600080fd5b506108f46117d7565b6040516109019190613479565b60405180910390f35b34801561091657600080fd5b50610931600480360381019061092c9190613574565b6117dd565b005b34801561093f57600080fd5b506109486118cf565b6040516109559190613479565b60405180910390f35b34801561096a57600080fd5b50610985600480360381019061098091906133c3565b6118d5565b005b34801561099357600080fd5b5061099c611a9c565b6040516109a99190613479565b60405180910390f35b3480156109be57600080fd5b506109c7611aa2565b6040516109d49190613479565b60405180910390f35b6060600380546109ec90613623565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1890613623565b8015610a655780601f10610a3a57610100808354040283529160200191610a65565b820191906000526020600020905b815481529060010190602001808311610a4857829003601f168201915b5050505050905090565b6000610a83610a7c611aa8565b8484611ab0565b6001905092915050565b60136020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b600b5481565b6000610aee848484611c7b565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b39611aa8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610bb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb0906136c7565b60405180910390fd5b610bcd85610bc5611aa8565b858403611ab0565b60019150509392505050565b60006012905090565b6000610c84610bef611aa8565b848460016000610bfd611aa8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c7f9190613716565b611ab0565b6001905092915050565b610c96611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1c906137b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8c90613824565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f4efa56652237561d0f1fd31311aeaaa41f3b754a461545ed3cf6ced5876d298260405160405180910390a250565b7f000000000000000000000000000000000000000000000000000000000000000081565b601860039054906101000a900460ff1681565b60105481565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600d5481565b60085481565b60115481565b601860009054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f24611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610faa906137b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61107c611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461110b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611102906137b8565b60405180910390fd5b6000601860036101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b60075481565b611162611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e8906137b8565b60405180910390fd5b601860019054906101000a900460ff1615611241576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123890613890565b60405180910390fd5b6001601860016101000a81548160ff0219169083151502179055506001601860006101000a81548160ff021916908315150217905550436019819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546112e590613623565b80601f016020809104026020016040519081016040528092919081815260200182805461131190613623565b801561135e5780601f106113335761010080835404028352916020019161135e565b820191906000526020600020905b81548152906001019060200180831161134157829003601f168201915b5050505050905090565b611370611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f6906137b8565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561148e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148590613922565b60405180910390fd5b6114988282612a1c565b5050565b600080600160006114ab611aa8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155f906139b4565b60405180910390fd5b61157c611573611aa8565b85858403611ab0565b600191505092915050565b600061159b611594611aa8565b8484611c7b565b6001905092915050565b60095481565b60176020528060005260406000206000915054906101000a900460ff1681565b601860019054906101000a900460ff1681565b6115e6611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166c906137b8565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161171291906133a8565b60405180910390a25050565b600e5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60125481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b6117e5611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186b906137b8565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600c5481565b6118dd611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461196c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611963906137b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d390613a46565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b600a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1790613ad8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8790613b6a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c6e9190613479565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce290613bfc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5290613c8e565b60405180910390fd5b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611dfd5750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611e0757612a17565b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611ea95750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611f5e57601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611f505750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611f5957600080fd5b611fb6565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611fb557612a17565b5b6000811415611fc457612a17565b601860039054906101000a900460ff16156124fe57611fe16112ac565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561204f575061201f6112ac565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120885750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120c2575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156124fd57601860019054906101000a900460ff166121bc57601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061217c5750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6121bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b290613cfa565b60405180910390fd5b5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561225f5750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612306576007548111156122a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a090613d66565b60405180910390fd5b6009546122b583610ed4565b826122c09190613716565b1115612301576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f890613dd2565b60405180910390fd5b6124fc565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123a95750601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123f8576008548111156123f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ea90613e3e565b60405180910390fd5b6124fb565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561249c5750601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124fa576009546124ad83610ed4565b826124b89190613716565b11156124f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f090613dd2565b60405180910390fd5b5b5b5b5b5b600061250930610ed4565b90506000601254821015905080801561252e5750601860009054906101000a900460ff165b80156125475750601860029054906101000a900460ff16155b801561259d5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125f35750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156126495750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561268d576001601860026101000a81548160ff021916908315150217905550612671612abd565b6000601860026101000a81548160ff0219169083151502179055505b600060019050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127345750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561273e57600090505b6000808215612a06574360016019546127579190613716565b101580156127ae5750601760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561280c576001601560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b601760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561286757506000601154115b156128f35760646011548761287c9190613e5e565b6128869190613ee7565b9150601154600f54836128999190613e5e565b6128a39190613ee7565b600b60008282546128b49190613716565b92505081905550601154601054836128cc9190613e5e565b6128d69190613ee7565b600a60008282546128e79190613716565b925050819055506129d7565b601760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561294e57506000600e54115b156129d6576064600e54876129639190613e5e565b61296d9190613ee7565b9150600e54600c54836129809190613e5e565b61298a9190613ee7565b600b600082825461299b9190613716565b92505081905550600e54600d54836129b39190613e5e565b6129bd9190613ee7565b600a60008282546129ce9190613716565b925050819055505b5b60008211156129ec576129eb883084612c75565b5b80826129f89190613716565b86612a039190613f18565b95505b612a11888888612c75565b50505050505b505050565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000612ac830610ed4565b90506000600a54600b54612adc9190613716565b90506000821480612aed5750600081145b15612af9575050612c73565b600a601254612b089190613e5e565b821115612b2157600a601254612b1e9190613e5e565b91505b600080600283600b5486612b359190613e5e565b612b3f9190613ee7565b612b499190613ee7565b9050612b5f8185612b5a9190613f18565b612ee0565b6000479050600081905060006002600b54612b7a9190613ee7565b86612b859190613f18565b600a5484612b939190613e5e565b612b9d9190613ee7565b90508082612bab9190613f18565b91506000600b819055506000600a81905550600084118015612bcd5750600082115b15612bdd57612bdc848361311d565b5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612c2390613f7d565b60006040518083038185875af1925050503d8060008114612c60576040519150601f19603f3d011682016040523d82523d6000602084013e612c65565b606091505b505080955050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cdc90613bfc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4c90613c8e565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd290614004565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612e6e9190613716565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ed29190613479565b60405180910390a350505050565b6000600267ffffffffffffffff811115612efd57612efc614024565b5b604051908082528060200260200182016040528015612f2b5781602001602082028036833780820191505090505b5090503081600081518110612f4357612f42614053565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fe8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300c9190614097565b816001815181106130205761301f614053565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613085307f000000000000000000000000000000000000000000000000000000000000000084611ab0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130e79594939291906141bd565b600060405180830381600087803b15801561310157600080fd5b505af1158015613115573d6000803e3d6000fd5b505050505050565b613148307f000000000000000000000000000000000000000000000000000000000000000084611ab0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b81526004016131af96959493929190614217565b60606040518083038185885af11580156131cd573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131f2919061428d565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613233578082015181840152602081019050613218565b83811115613242576000848401525b50505050565b6000601f19601f8301169050919050565b6000613264826131f9565b61326e8185613204565b935061327e818560208601613215565b61328781613248565b840191505092915050565b600060208201905081810360008301526132ac8184613259565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006132e4826132b9565b9050919050565b6132f4816132d9565b81146132ff57600080fd5b50565b600081359050613311816132eb565b92915050565b6000819050919050565b61332a81613317565b811461333557600080fd5b50565b60008135905061334781613321565b92915050565b60008060408385031215613364576133636132b4565b5b600061337285828601613302565b925050602061338385828601613338565b9150509250929050565b60008115159050919050565b6133a28161338d565b82525050565b60006020820190506133bd6000830184613399565b92915050565b6000602082840312156133d9576133d86132b4565b5b60006133e784828501613302565b91505092915050565b6000819050919050565b600061341561341061340b846132b9565b6133f0565b6132b9565b9050919050565b6000613427826133fa565b9050919050565b60006134398261341c565b9050919050565b6134498161342e565b82525050565b60006020820190506134646000830184613440565b92915050565b61347381613317565b82525050565b600060208201905061348e600083018461346a565b92915050565b6000806000606084860312156134ad576134ac6132b4565b5b60006134bb86828701613302565b93505060206134cc86828701613302565b92505060406134dd86828701613338565b9150509250925092565b600060ff82169050919050565b6134fd816134e7565b82525050565b600060208201905061351860008301846134f4565b92915050565b613527816132d9565b82525050565b6000602082019050613542600083018461351e565b92915050565b6135518161338d565b811461355c57600080fd5b50565b60008135905061356e81613548565b92915050565b6000806040838503121561358b5761358a6132b4565b5b600061359985828601613302565b92505060206135aa8582860161355f565b9150509250929050565b600080604083850312156135cb576135ca6132b4565b5b60006135d985828601613302565b92505060206135ea85828601613302565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061363b57607f821691505b6020821081141561364f5761364e6135f4565b5b50919050565b7f45524332303a205472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006136b1602883613204565b91506136bc82613655565b604082019050919050565b600060208201905081810360008301526136e0816136a4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061372182613317565b915061372c83613317565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613761576137606136e7565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006137a2602083613204565b91506137ad8261376c565b602082019050919050565b600060208201905081810360008301526137d181613795565b9050919050565b7f5f6f7065726174696f6e73416464726573732063616e6e6f7420626520300000600082015250565b600061380e601e83613204565b9150613819826137d8565b602082019050919050565b6000602082019050818103600083015261383d81613801565b9050919050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b600061387a601783613204565b915061388582613844565b602082019050919050565b600060208201905081810360008301526138a98161386d565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061390c603983613204565b9150613917826138b0565b604082019050919050565b6000602082019050818103600083015261393b816138ff565b9050919050565b7f45524332303a2044656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061399e602583613204565b91506139a982613942565b604082019050919050565b600060208201905081810360008301526139cd81613991565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a30602683613204565b9150613a3b826139d4565b604082019050919050565b60006020820190508181036000830152613a5f81613a23565b9050919050565b7f45524332303a20417070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613ac2602483613204565b9150613acd82613a66565b604082019050919050565b60006020820190508181036000830152613af181613ab5565b9050919050565b7f45524332303a20417070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b54602283613204565b9150613b5f82613af8565b604082019050919050565b60006020820190508181036000830152613b8381613b47565b9050919050565b7f45524332303a205472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613be6602583613204565b9150613bf182613b8a565b604082019050919050565b60006020820190508181036000830152613c1581613bd9565b9050919050565b7f45524332303a205472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613c78602383613204565b9150613c8382613c1c565b604082019050919050565b60006020820190508181036000830152613ca781613c6b565b9050919050565b7f54726164696e67206973206e6f74206163746976617465642e00000000000000600082015250565b6000613ce4601983613204565b9150613cef82613cae565b602082019050919050565b60006020820190508181036000830152613d1381613cd7565b9050919050565b7f42757920616d6f756e74206578636565647320746865206d61784275792e0000600082015250565b6000613d50601e83613204565b9150613d5b82613d1a565b602082019050919050565b60006020820190508181036000830152613d7f81613d43565b9050919050565b7f43616e6e6f742065786365656420746865206d617857616c6c65740000000000600082015250565b6000613dbc601b83613204565b9150613dc782613d86565b602082019050919050565b60006020820190508181036000830152613deb81613daf565b9050919050565b7f53656c6c20616d6f756e74206578636565647320746865206d617853656c6c2e600082015250565b6000613e28602083613204565b9150613e3382613df2565b602082019050919050565b60006020820190508181036000830152613e5781613e1b565b9050919050565b6000613e6982613317565b9150613e7483613317565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ead57613eac6136e7565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ef282613317565b9150613efd83613317565b925082613f0d57613f0c613eb8565b5b828204905092915050565b6000613f2382613317565b9150613f2e83613317565b925082821015613f4157613f406136e7565b5b828203905092915050565b600081905092915050565b50565b6000613f67600083613f4c565b9150613f7282613f57565b600082019050919050565b6000613f8882613f5a565b9150819050919050565b7f45524332303a205472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613fee602683613204565b9150613ff982613f92565b604082019050919050565b6000602082019050818103600083015261401d81613fe1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614091816132eb565b92915050565b6000602082840312156140ad576140ac6132b4565b5b60006140bb84828501614082565b91505092915050565b6000819050919050565b60006140e96140e46140df846140c4565b6133f0565b613317565b9050919050565b6140f9816140ce565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614134816132d9565b82525050565b6000614146838361412b565b60208301905092915050565b6000602082019050919050565b600061416a826140ff565b614174818561410a565b935061417f8361411b565b8060005b838110156141b0578151614197888261413a565b97506141a283614152565b925050600181019050614183565b5085935050505092915050565b600060a0820190506141d2600083018861346a565b6141df60208301876140f0565b81810360408301526141f1818661415f565b9050614200606083018561351e565b61420d608083018461346a565b9695505050505050565b600060c08201905061422c600083018961351e565b614239602083018861346a565b61424660408301876140f0565b61425360608301866140f0565b614260608083018561351e565b61426d60a083018461346a565b979650505050505050565b60008151905061428781613321565b92915050565b6000806000606084860312156142a6576142a56132b4565b5b60006142b486828701614278565b93505060206142c586828701614278565b92505060406142d686828701614278565b915050925092509256fea264697066735822122009cb1aa9163529a0a2a7493bbc0b113fe36aa2db6739824475011555ac0ef60664736f6c634300080b0033

Deployed Bytecode

0x6080604052600436106102555760003560e01c806388e765ff11610139578063c0246668116100b6578063ee40166e1161007a578063ee40166e146108df578063efe23e861461090a578063f11a24d314610933578063f2fde38b1461095e578063f637434214610987578063fb002c97146109b25761025c565b8063c0246668146107f8578063d85ba06314610821578063dd62ed3e1461084c578063e2f4560514610889578063ea4cfe12146108b45761025c565b8063a457c2d7116100fd578063a457c2d7146106eb578063a9059cbb14610728578063aa4bde2814610765578063b62496f514610790578063bbc0c742146107cd5761025c565b806388e765ff1461062a5780638a8c523c146106555780638da5cb5b1461066c57806395d89b41146106975780639a7a23d6146106c25761025c565b806349bd5a5e116101d257806366d602ae1161019657806366d602ae1461053e5780636a486a8e146105695780636ddd17131461059457806370a08231146105bf578063715018a6146105fc578063751039fc146106135761025c565b806349bd5a5e146104555780634a62bb65146104805780634f77f6c0146104ab5780634fbee193146104d65780635a139dd4146105135761025c565b80631a8145bb116102195780631a8145bb1461035c57806323b872dd14610387578063313ce567146103c457806339509351146103ef578063499b83941461042c5761025c565b806306fdde0314610261578063095ea7b31461028c57806310d5de53146102c95780631694505e1461030657806318160ddd146103315761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102766109dd565b6040516102839190613292565b60405180910390f35b34801561029857600080fd5b506102b360048036038101906102ae919061334d565b610a6f565b6040516102c091906133a8565b60405180910390f35b3480156102d557600080fd5b506102f060048036038101906102eb91906133c3565b610a8d565b6040516102fd91906133a8565b60405180910390f35b34801561031257600080fd5b5061031b610aad565b604051610328919061344f565b60405180910390f35b34801561033d57600080fd5b50610346610ad1565b6040516103539190613479565b60405180910390f35b34801561036857600080fd5b50610371610adb565b60405161037e9190613479565b60405180910390f35b34801561039357600080fd5b506103ae60048036038101906103a99190613494565b610ae1565b6040516103bb91906133a8565b60405180910390f35b3480156103d057600080fd5b506103d9610bd9565b6040516103e69190613503565b60405180910390f35b3480156103fb57600080fd5b506104166004803603810190610411919061334d565b610be2565b60405161042391906133a8565b60405180910390f35b34801561043857600080fd5b50610453600480360381019061044e91906133c3565b610c8e565b005b34801561046157600080fd5b5061046a610e1c565b604051610477919061352d565b60405180910390f35b34801561048c57600080fd5b50610495610e40565b6040516104a291906133a8565b60405180910390f35b3480156104b757600080fd5b506104c0610e53565b6040516104cd9190613479565b60405180910390f35b3480156104e257600080fd5b506104fd60048036038101906104f891906133c3565b610e59565b60405161050a91906133a8565b60405180910390f35b34801561051f57600080fd5b50610528610eaf565b6040516105359190613479565b60405180910390f35b34801561054a57600080fd5b50610553610eb5565b6040516105609190613479565b60405180910390f35b34801561057557600080fd5b5061057e610ebb565b60405161058b9190613479565b60405180910390f35b3480156105a057600080fd5b506105a9610ec1565b6040516105b691906133a8565b60405180910390f35b3480156105cb57600080fd5b506105e660048036038101906105e191906133c3565b610ed4565b6040516105f39190613479565b60405180910390f35b34801561060857600080fd5b50610611610f1c565b005b34801561061f57600080fd5b50610628611074565b005b34801561063657600080fd5b5061063f611154565b60405161064c9190613479565b60405180910390f35b34801561066157600080fd5b5061066a61115a565b005b34801561067857600080fd5b506106816112ac565b60405161068e919061352d565b60405180910390f35b3480156106a357600080fd5b506106ac6112d6565b6040516106b99190613292565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e49190613574565b611368565b005b3480156106f757600080fd5b50610712600480360381019061070d919061334d565b61149c565b60405161071f91906133a8565b60405180910390f35b34801561073457600080fd5b5061074f600480360381019061074a919061334d565b611587565b60405161075c91906133a8565b60405180910390f35b34801561077157600080fd5b5061077a6115a5565b6040516107879190613479565b60405180910390f35b34801561079c57600080fd5b506107b760048036038101906107b291906133c3565b6115ab565b6040516107c491906133a8565b60405180910390f35b3480156107d957600080fd5b506107e26115cb565b6040516107ef91906133a8565b60405180910390f35b34801561080457600080fd5b5061081f600480360381019061081a9190613574565b6115de565b005b34801561082d57600080fd5b5061083661171e565b6040516108439190613479565b60405180910390f35b34801561085857600080fd5b50610873600480360381019061086e91906135b4565b611724565b6040516108809190613479565b60405180910390f35b34801561089557600080fd5b5061089e6117ab565b6040516108ab9190613479565b60405180910390f35b3480156108c057600080fd5b506108c96117b1565b6040516108d6919061352d565b60405180910390f35b3480156108eb57600080fd5b506108f46117d7565b6040516109019190613479565b60405180910390f35b34801561091657600080fd5b50610931600480360381019061092c9190613574565b6117dd565b005b34801561093f57600080fd5b506109486118cf565b6040516109559190613479565b60405180910390f35b34801561096a57600080fd5b50610985600480360381019061098091906133c3565b6118d5565b005b34801561099357600080fd5b5061099c611a9c565b6040516109a99190613479565b60405180910390f35b3480156109be57600080fd5b506109c7611aa2565b6040516109d49190613479565b60405180910390f35b6060600380546109ec90613623565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1890613623565b8015610a655780601f10610a3a57610100808354040283529160200191610a65565b820191906000526020600020905b815481529060010190602001808311610a4857829003601f168201915b5050505050905090565b6000610a83610a7c611aa8565b8484611ab0565b6001905092915050565b60136020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b600b5481565b6000610aee848484611c7b565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b39611aa8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610bb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb0906136c7565b60405180910390fd5b610bcd85610bc5611aa8565b858403611ab0565b60019150509392505050565b60006012905090565b6000610c84610bef611aa8565b848460016000610bfd611aa8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c7f9190613716565b611ab0565b6001905092915050565b610c96611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1c906137b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8c90613824565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f4efa56652237561d0f1fd31311aeaaa41f3b754a461545ed3cf6ced5876d298260405160405180910390a250565b7f000000000000000000000000d5b5d7f0a2097726018cc62bf99ec804e97adbfb81565b601860039054906101000a900460ff1681565b60105481565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600d5481565b60085481565b60115481565b601860009054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f24611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610faa906137b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61107c611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461110b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611102906137b8565b60405180910390fd5b6000601860036101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b60075481565b611162611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e8906137b8565b60405180910390fd5b601860019054906101000a900460ff1615611241576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123890613890565b60405180910390fd5b6001601860016101000a81548160ff0219169083151502179055506001601860006101000a81548160ff021916908315150217905550436019819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546112e590613623565b80601f016020809104026020016040519081016040528092919081815260200182805461131190613623565b801561135e5780601f106113335761010080835404028352916020019161135e565b820191906000526020600020905b81548152906001019060200180831161134157829003601f168201915b5050505050905090565b611370611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f6906137b8565b60405180910390fd5b7f000000000000000000000000d5b5d7f0a2097726018cc62bf99ec804e97adbfb73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561148e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148590613922565b60405180910390fd5b6114988282612a1c565b5050565b600080600160006114ab611aa8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155f906139b4565b60405180910390fd5b61157c611573611aa8565b85858403611ab0565b600191505092915050565b600061159b611594611aa8565b8484611c7b565b6001905092915050565b60095481565b60176020528060005260406000206000915054906101000a900460ff1681565b601860019054906101000a900460ff1681565b6115e6611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166c906137b8565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161171291906133a8565b60405180910390a25050565b600e5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60125481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b6117e5611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186b906137b8565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600c5481565b6118dd611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461196c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611963906137b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d390613a46565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b600a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1790613ad8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8790613b6a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c6e9190613479565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce290613bfc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5290613c8e565b60405180910390fd5b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611dfd5750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611e0757612a17565b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611ea95750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611f5e57601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611f505750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611f5957600080fd5b611fb6565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611fb557612a17565b5b6000811415611fc457612a17565b601860039054906101000a900460ff16156124fe57611fe16112ac565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561204f575061201f6112ac565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120885750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120c2575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156124fd57601860019054906101000a900460ff166121bc57601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061217c5750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6121bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b290613cfa565b60405180910390fd5b5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561225f5750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612306576007548111156122a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a090613d66565b60405180910390fd5b6009546122b583610ed4565b826122c09190613716565b1115612301576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f890613dd2565b60405180910390fd5b6124fc565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123a95750601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123f8576008548111156123f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ea90613e3e565b60405180910390fd5b6124fb565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561249c5750601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124fa576009546124ad83610ed4565b826124b89190613716565b11156124f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f090613dd2565b60405180910390fd5b5b5b5b5b5b600061250930610ed4565b90506000601254821015905080801561252e5750601860009054906101000a900460ff165b80156125475750601860029054906101000a900460ff16155b801561259d5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125f35750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156126495750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561268d576001601860026101000a81548160ff021916908315150217905550612671612abd565b6000601860026101000a81548160ff0219169083151502179055505b600060019050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127345750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561273e57600090505b6000808215612a06574360016019546127579190613716565b101580156127ae5750601760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561280c576001601560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b601760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561286757506000601154115b156128f35760646011548761287c9190613e5e565b6128869190613ee7565b9150601154600f54836128999190613e5e565b6128a39190613ee7565b600b60008282546128b49190613716565b92505081905550601154601054836128cc9190613e5e565b6128d69190613ee7565b600a60008282546128e79190613716565b925050819055506129d7565b601760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561294e57506000600e54115b156129d6576064600e54876129639190613e5e565b61296d9190613ee7565b9150600e54600c54836129809190613e5e565b61298a9190613ee7565b600b600082825461299b9190613716565b92505081905550600e54600d54836129b39190613e5e565b6129bd9190613ee7565b600a60008282546129ce9190613716565b925050819055505b5b60008211156129ec576129eb883084612c75565b5b80826129f89190613716565b86612a039190613f18565b95505b612a11888888612c75565b50505050505b505050565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000612ac830610ed4565b90506000600a54600b54612adc9190613716565b90506000821480612aed5750600081145b15612af9575050612c73565b600a601254612b089190613e5e565b821115612b2157600a601254612b1e9190613e5e565b91505b600080600283600b5486612b359190613e5e565b612b3f9190613ee7565b612b499190613ee7565b9050612b5f8185612b5a9190613f18565b612ee0565b6000479050600081905060006002600b54612b7a9190613ee7565b86612b859190613f18565b600a5484612b939190613e5e565b612b9d9190613ee7565b90508082612bab9190613f18565b91506000600b819055506000600a81905550600084118015612bcd5750600082115b15612bdd57612bdc848361311d565b5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612c2390613f7d565b60006040518083038185875af1925050503d8060008114612c60576040519150601f19603f3d011682016040523d82523d6000602084013e612c65565b606091505b505080955050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cdc90613bfc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4c90613c8e565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd290614004565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612e6e9190613716565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ed29190613479565b60405180910390a350505050565b6000600267ffffffffffffffff811115612efd57612efc614024565b5b604051908082528060200260200182016040528015612f2b5781602001602082028036833780820191505090505b5090503081600081518110612f4357612f42614053565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fe8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300c9190614097565b816001815181106130205761301f614053565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613085307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611ab0565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130e79594939291906141bd565b600060405180830381600087803b15801561310157600080fd5b505af1158015613115573d6000803e3d6000fd5b505050505050565b613148307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611ab0565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b81526004016131af96959493929190614217565b60606040518083038185885af11580156131cd573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131f2919061428d565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613233578082015181840152602081019050613218565b83811115613242576000848401525b50505050565b6000601f19601f8301169050919050565b6000613264826131f9565b61326e8185613204565b935061327e818560208601613215565b61328781613248565b840191505092915050565b600060208201905081810360008301526132ac8184613259565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006132e4826132b9565b9050919050565b6132f4816132d9565b81146132ff57600080fd5b50565b600081359050613311816132eb565b92915050565b6000819050919050565b61332a81613317565b811461333557600080fd5b50565b60008135905061334781613321565b92915050565b60008060408385031215613364576133636132b4565b5b600061337285828601613302565b925050602061338385828601613338565b9150509250929050565b60008115159050919050565b6133a28161338d565b82525050565b60006020820190506133bd6000830184613399565b92915050565b6000602082840312156133d9576133d86132b4565b5b60006133e784828501613302565b91505092915050565b6000819050919050565b600061341561341061340b846132b9565b6133f0565b6132b9565b9050919050565b6000613427826133fa565b9050919050565b60006134398261341c565b9050919050565b6134498161342e565b82525050565b60006020820190506134646000830184613440565b92915050565b61347381613317565b82525050565b600060208201905061348e600083018461346a565b92915050565b6000806000606084860312156134ad576134ac6132b4565b5b60006134bb86828701613302565b93505060206134cc86828701613302565b92505060406134dd86828701613338565b9150509250925092565b600060ff82169050919050565b6134fd816134e7565b82525050565b600060208201905061351860008301846134f4565b92915050565b613527816132d9565b82525050565b6000602082019050613542600083018461351e565b92915050565b6135518161338d565b811461355c57600080fd5b50565b60008135905061356e81613548565b92915050565b6000806040838503121561358b5761358a6132b4565b5b600061359985828601613302565b92505060206135aa8582860161355f565b9150509250929050565b600080604083850312156135cb576135ca6132b4565b5b60006135d985828601613302565b92505060206135ea85828601613302565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061363b57607f821691505b6020821081141561364f5761364e6135f4565b5b50919050565b7f45524332303a205472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006136b1602883613204565b91506136bc82613655565b604082019050919050565b600060208201905081810360008301526136e0816136a4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061372182613317565b915061372c83613317565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613761576137606136e7565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006137a2602083613204565b91506137ad8261376c565b602082019050919050565b600060208201905081810360008301526137d181613795565b9050919050565b7f5f6f7065726174696f6e73416464726573732063616e6e6f7420626520300000600082015250565b600061380e601e83613204565b9150613819826137d8565b602082019050919050565b6000602082019050818103600083015261383d81613801565b9050919050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b600061387a601783613204565b915061388582613844565b602082019050919050565b600060208201905081810360008301526138a98161386d565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061390c603983613204565b9150613917826138b0565b604082019050919050565b6000602082019050818103600083015261393b816138ff565b9050919050565b7f45524332303a2044656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061399e602583613204565b91506139a982613942565b604082019050919050565b600060208201905081810360008301526139cd81613991565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a30602683613204565b9150613a3b826139d4565b604082019050919050565b60006020820190508181036000830152613a5f81613a23565b9050919050565b7f45524332303a20417070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613ac2602483613204565b9150613acd82613a66565b604082019050919050565b60006020820190508181036000830152613af181613ab5565b9050919050565b7f45524332303a20417070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b54602283613204565b9150613b5f82613af8565b604082019050919050565b60006020820190508181036000830152613b8381613b47565b9050919050565b7f45524332303a205472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613be6602583613204565b9150613bf182613b8a565b604082019050919050565b60006020820190508181036000830152613c1581613bd9565b9050919050565b7f45524332303a205472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613c78602383613204565b9150613c8382613c1c565b604082019050919050565b60006020820190508181036000830152613ca781613c6b565b9050919050565b7f54726164696e67206973206e6f74206163746976617465642e00000000000000600082015250565b6000613ce4601983613204565b9150613cef82613cae565b602082019050919050565b60006020820190508181036000830152613d1381613cd7565b9050919050565b7f42757920616d6f756e74206578636565647320746865206d61784275792e0000600082015250565b6000613d50601e83613204565b9150613d5b82613d1a565b602082019050919050565b60006020820190508181036000830152613d7f81613d43565b9050919050565b7f43616e6e6f742065786365656420746865206d617857616c6c65740000000000600082015250565b6000613dbc601b83613204565b9150613dc782613d86565b602082019050919050565b60006020820190508181036000830152613deb81613daf565b9050919050565b7f53656c6c20616d6f756e74206578636565647320746865206d617853656c6c2e600082015250565b6000613e28602083613204565b9150613e3382613df2565b602082019050919050565b60006020820190508181036000830152613e5781613e1b565b9050919050565b6000613e6982613317565b9150613e7483613317565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ead57613eac6136e7565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ef282613317565b9150613efd83613317565b925082613f0d57613f0c613eb8565b5b828204905092915050565b6000613f2382613317565b9150613f2e83613317565b925082821015613f4157613f406136e7565b5b828203905092915050565b600081905092915050565b50565b6000613f67600083613f4c565b9150613f7282613f57565b600082019050919050565b6000613f8882613f5a565b9150819050919050565b7f45524332303a205472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613fee602683613204565b9150613ff982613f92565b604082019050919050565b6000602082019050818103600083015261401d81613fe1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614091816132eb565b92915050565b6000602082840312156140ad576140ac6132b4565b5b60006140bb84828501614082565b91505092915050565b6000819050919050565b60006140e96140e46140df846140c4565b6133f0565b613317565b9050919050565b6140f9816140ce565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614134816132d9565b82525050565b6000614146838361412b565b60208301905092915050565b6000602082019050919050565b600061416a826140ff565b614174818561410a565b935061417f8361411b565b8060005b838110156141b0578151614197888261413a565b97506141a283614152565b925050600181019050614183565b5085935050505092915050565b600060a0820190506141d2600083018861346a565b6141df60208301876140f0565b81810360408301526141f1818661415f565b9050614200606083018561351e565b61420d608083018461346a565b9695505050505050565b600060c08201905061422c600083018961351e565b614239602083018861346a565b61424660408301876140f0565b61425360608301866140f0565b614260608083018561351e565b61426d60a083018461346a565b979650505050505050565b60008151905061428781613321565b92915050565b6000806000606084860312156142a6576142a56132b4565b5b60006142b486828701614278565b93505060206142c586828701614278565b92505060406142d686828701614278565b915050925092509256fea264697066735822122009cb1aa9163529a0a2a7493bbc0b113fe36aa2db6739824475011555ac0ef60664736f6c634300080b0033

Deployed Bytecode Sourcemap

8282:10285:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3882:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4796:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8822:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9137:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4102:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8515:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4973:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4536:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5473:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11609:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9187:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9340:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8706:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12121:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8594:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8400:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8745;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9234:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4401:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3319:150;;;;;;;;;;;;;:::i;:::-;;12891:115;;;;;;;;;;;;;:::i;:::-;;8366:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11352:249;;;;;;;;;;;;;:::i;:::-;;2853:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3990:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12639:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5696:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4218:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8435:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9070:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9272:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12255:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8632:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4637:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8780:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8325:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9382:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13014:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8557:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3067:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8668:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8474:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3882:100;3936:13;3969:5;3962:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3882:100;:::o;4796:169::-;4879:4;4896:39;4905:12;:10;:12::i;:::-;4919:7;4928:6;4896:8;:39::i;:::-;4953:4;4946:11;;4796:169;;;;:::o;8822:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;9137:43::-;;;:::o;4102:108::-;4163:7;4190:12;;4183:19;;4102:108;:::o;8515:33::-;;;;:::o;4973:492::-;5113:4;5130:36;5140:6;5148:9;5159:6;5130:9;:36::i;:::-;5179:24;5206:11;:19;5218:6;5206:19;;;;;;;;;;;;;;;:33;5226:12;:10;:12::i;:::-;5206:33;;;;;;;;;;;;;;;;5179:60;;5278:6;5258:16;:26;;5250:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5365:57;5374:6;5382:12;:10;:12::i;:::-;5415:6;5396:16;:25;5365:8;:57::i;:::-;5453:4;5446:11;;;4973:492;;;;;:::o;4536:93::-;4594:5;4619:2;4612:9;;4536:93;:::o;5473:215::-;5561:4;5578:80;5587:12;:10;:12::i;:::-;5601:7;5647:10;5610:11;:25;5622:12;:10;:12::i;:::-;5610:25;;;;;;;;;;;;;;;:34;5636:7;5610:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5578:8;:80::i;:::-;5676:4;5669:11;;5473:215;;;;:::o;11609:289::-;2990:12;:10;:12::i;:::-;2980:22;;:6;;;;;;;;;;;:22;;;2972:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11735:1:::1;11705:32;;:18;:32;;;;11697:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;11811:18;11783:17;;:47;;;;;;;;;;;;;;;;;;11871:18;11846:44;;;;;;;;;;;;11609:289:::0;:::o;9187:38::-;;;:::o;9340:33::-;;;;;;;;;;;;;:::o;8706:32::-;;;;:::o;12121:126::-;12187:4;12211:19;:28;12231:7;12211:28;;;;;;;;;;;;;;;;;;;;;;;;;12204:35;;12121:126;;;:::o;8594:31::-;;;;:::o;8400:28::-;;;;:::o;8745:::-;;;;:::o;9234:31::-;;;;;;;;;;;;;:::o;4401:127::-;4475:7;4502:9;:18;4512:7;4502:18;;;;;;;;;;;;;;;;4495:25;;4401:127;;;:::o;3319:150::-;2990:12;:10;:12::i;:::-;2980:22;;:6;;;;;;;;;;;:22;;;2972:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3428:1:::1;3391:40;;3412:6;;;;;;;;;;;3391:40;;;;;;;;;;;;3459:1;3442:6;;:19;;;;;;;;;;;;;;;;;;3319:150::o:0;12891:115::-;2990:12;:10;:12::i;:::-;2980:22;;:6;;;;;;;;;;;:22;;;2972:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12962:5:::1;12945:14;;:22;;;;;;;;;;;;;;;;;;12983:15;;;;;;;;;;12891:115::o:0;8366:27::-;;;;:::o;11352:249::-;2990:12;:10;:12::i;:::-;2980:22;;:6;;;;;;;;;;;:22;;;2972:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11416:13:::1;;;;;;;;;;;11415:14;11407:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;11484:4;11468:13;;:20;;;;;;;;;;;;;;;;;;11513:4;11499:11;;:18;;;;;;;;;;;;;;;;;;11549:12;11528:18;:33;;;;11577:16;;;;;;;;;;11352:249::o:0;2853:79::-;2891:7;2918:6;;;;;;;;;;;2911:13;;2853:79;:::o;3990:104::-;4046:13;4079:7;4072:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3990:104;:::o;12639:244::-;2990:12;:10;:12::i;:::-;2980:22;;:6;;;;;;;;;;;:22;;;2972:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12748:13:::1;12740:21;;:4;:21;;;;12732:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;12834:41;12863:4;12869:5;12834:28;:41::i;:::-;12639:244:::0;;:::o;5696:413::-;5789:4;5806:24;5833:11;:25;5845:12;:10;:12::i;:::-;5833:25;;;;;;;;;;;;;;;:34;5859:7;5833:34;;;;;;;;;;;;;;;;5806:61;;5906:15;5886:16;:35;;5878:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;5999:67;6008:12;:10;:12::i;:::-;6022:7;6050:15;6031:16;:34;5999:8;:67::i;:::-;6097:4;6090:11;;;5696:413;;;;:::o;4218:175::-;4304:4;4321:42;4331:12;:10;:12::i;:::-;4345:9;4356:6;4321:9;:42::i;:::-;4381:4;4374:11;;4218:175;;;;:::o;8435:30::-;;;;:::o;9070:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;9272:33::-;;;;;;;;;;;;;:::o;12255:182::-;2990:12;:10;:12::i;:::-;2980:22;;:6;;;;;;;;;;;:22;;;2972:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12371:8:::1;12340:19;:28;12360:7;12340:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;12411:7;12395:34;;;12420:8;12395:34;;;;;;:::i;:::-;;;;;;;;12255:182:::0;;:::o;8632:27::-;;;;:::o;4637:151::-;4726:7;4753:11;:18;4765:5;4753:18;;;;;;;;;;;;;;;:27;4772:7;4753:27;;;;;;;;;;;;;;;;4746:34;;4637:151;;;;:::o;8780:33::-;;;;:::o;8325:32::-;;;;;;;;;;;;;:::o;9382:37::-;;;;:::o;13014:106::-;2990:12;:10;:12::i;:::-;2980:22;;:6;;;;;;;;;;;:22;;;2972:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13107:5:::1;13091:4;:13;13096:7;13091:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13014:106:::0;;:::o;8557:30::-;;;;:::o;3067:244::-;2990:12;:10;:12::i;:::-;2980:22;;:6;;;;;;;;;;;:22;;;2972:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3176:1:::1;3156:22;;:8;:22;;;;3148:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3266:8;3237:38;;3258:6;;;;;;;;;;;3237:38;;;;;;;;;;;;3295:8;3286:6;;:17;;;;;;;;;;;;;;;;;;3067:244:::0;:::o;8668:31::-;;;;:::o;8474:34::-;;;;:::o;1358:98::-;1411:7;1438:10;1431:17;;1358:98;:::o;7038:380::-;7191:1;7174:19;;:5;:19;;;;7166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7272:1;7253:21;;:7;:21;;;;7245:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7356:6;7326:11;:18;7338:5;7326:18;;;;;;;;;;;;;;;:27;7345:7;7326:27;;;;;;;;;;;;;;;:36;;;;7394:7;7378:32;;7387:5;7378:32;;;7403:6;7378:32;;;;;;:::i;:::-;;;;;;;;7038:380;;;:::o;13128:3353::-;13242:1;13226:18;;:4;:18;;;;13218:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13319:1;13305:16;;:2;:16;;;;13297:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13378:25;:29;13404:2;13378:29;;;;;;;;;;;;;;;;;;;;;;;;;:43;;;;;13411:4;:10;13416:4;13411:10;;;;;;;;;;;;;;;;;;;;;;;;;13378:43;13374:321;;;13438:7;;13374:321;13475:25;:31;13501:4;13475:31;;;;;;;;;;;;;;;;;;;;;;;;;:43;;;;;13510:4;:8;13515:2;13510:8;;;;;;;;;;;;;;;;;;;;;;;;;13475:43;13471:224;;;13543:25;:31;13569:4;13543:31;;;;;;;;;;;;;;;;;;;;;;;;;:43;;;;;13578:4;:8;13583:2;13578:8;;;;;;;;;;;;;;;;;;;;;;;;;13543:43;13535:52;;;;;;13471:224;;;13633:4;:8;13638:2;13633:8;;;;;;;;;;;;;;;;;;;;;;;;;13629:55;;;13662:7;;13629:55;13471:224;13722:1;13712:6;:11;13708:50;;;13740:7;;13708:50;13782:14;;;;;;;;;;;13778:1068;;;13825:7;:5;:7::i;:::-;13817:15;;:4;:15;;;;:32;;;;;13842:7;:5;:7::i;:::-;13836:13;;:2;:13;;;;13817:32;:52;;;;;13867:1;13853:16;;:2;:16;;;;13817:52;:77;;;;;13887:6;13873:21;;:2;:21;;;;13817:77;13813:1022;;;13920:13;;;;;;;;;;;13915:152;;13965:19;:25;13985:4;13965:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;13994:19;:23;14014:2;13994:23;;;;;;;;;;;;;;;;;;;;;;;;;13965:52;13957:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;13915:152;14091:25;:31;14117:4;14091:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;14127:31;:35;14159:2;14127:35;;;;;;;;;;;;;;;;;;;;;;;;;14126:36;14091:71;14087:733;;;14205:12;;14195:6;:22;;14187:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;14309:15;;14292:13;14302:2;14292:9;:13::i;:::-;14283:6;:22;;;;:::i;:::-;:41;;14275:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;14087:733;;;14404:25;:29;14430:2;14404:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;14438:31;:37;14470:4;14438:37;;;;;;;;;;;;;;;;;;;;;;;;;14437:38;14404:71;14400:420;;;14518:13;;14508:6;:23;;14500:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14400:420;;;14617:31;:35;14649:2;14617:35;;;;;;;;;;;;;;;;;;;;;;;;;14616:36;:78;;;;;14657:31;:37;14689:4;14657:37;;;;;;;;;;;;;;;;;;;;;;;;;14656:38;14616:78;14612:208;;;14753:15;;14736:13;14746:2;14736:9;:13::i;:::-;14727:6;:22;;;;:::i;:::-;:41;;14719:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;14612:208;14400:420;14087:733;13813:1022;13778:1068;14858:28;14889:24;14907:4;14889:9;:24::i;:::-;14858:55;;14934:12;14973:18;;14949:20;:42;;14934:57;;15008:7;:22;;;;;15019:11;;;;;;;;;;;15008:22;:35;;;;;15035:8;;;;;;;;;;;15034:9;15008:35;:71;;;;;15048:25;:31;15074:4;15048:31;;;;;;;;;;;;;;;;;;;;;;;;;15047:32;15008:71;:111;;;;;15094:19;:25;15114:4;15094:25;;;;;;;;;;;;;;;;;;;;;;;;;15093:26;15008:111;:139;;;;;15124:19;:23;15144:2;15124:23;;;;;;;;;;;;;;;;;;;;;;;;;15123:24;15008:139;15004:247;;;15175:4;15164:8;;:15;;;;;;;;;;;;;;;;;;15196:10;:8;:10::i;:::-;15234:5;15223:8;;:16;;;;;;;;;;;;;;;;;;15004:247;15263:12;15278:4;15263:19;;15299;:25;15319:4;15299:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;15328:19;:23;15348:2;15328:23;;;;;;;;;;;;;;;;;;;;;;;;;15299:52;15295:100;;;15378:5;15368:15;;15295:100;15415:12;15442:21;15484:7;15480:948;;;15540:12;15535:1;15514:18;;:22;;;;:::i;:::-;:38;;:73;;;;;15556:25;:31;15582:4;15556:31;;;;;;;;;;;;;;;;;;;;;;;;;15514:73;15510:129;;;15619:4;15608;:8;15613:2;15608:8;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;;;;;;;15510:129;15660:25;:29;15686:2;15660:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;15709:1;15693:13;;:17;15660:50;15656:585;;;15762:3;15747:13;;15738:6;:22;;;;:::i;:::-;:27;;;;:::i;:::-;15731:34;;15832:13;;15813:16;;15806:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;15784:18;;:61;;;;;;;:::i;:::-;;;;;;;;15914:13;;15894:17;;15887:4;:24;;;;:::i;:::-;:40;;;;:::i;:::-;15864:19;;:63;;;;;;;:::i;:::-;;;;;;;;15656:585;;;15967:25;:31;15993:4;15967:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;16017:1;16002:12;;:16;15967:51;15963:278;;;16067:3;16052:12;;16043:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;16036:34;;16133:12;;16115:15;;16108:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;16086:18;;:59;;;;;;;:::i;:::-;;;;;;;;16213:12;;16194:16;;16187:4;:23;;;;:::i;:::-;:38;;;;:::i;:::-;16164:19;;:61;;;;;;;:::i;:::-;;;;;;;;15963:278;15656:585;16280:1;16273:4;:8;16269:95;;;16306:42;16322:4;16336;16343;16306:15;:42::i;:::-;16269:95;16403:13;16396:4;:20;;;;:::i;:::-;16386:30;;;;;:::i;:::-;;;15480:948;16440:33;16456:4;16462:2;16466:6;16440:15;:33::i;:::-;13207:3274;;;;;13128:3353;;;;:::o;12445:186::-;12562:5;12528:25;:31;12554:4;12528:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;12617:5;12583:40;;12611:4;12583:40;;;;;;;;;;;;12445:186;;:::o;16974:1207::-;17015:23;17041:24;17059:4;17041:9;:24::i;:::-;17015:50;;17076:25;17125:19;;17104:18;;:40;;;;:::i;:::-;17076:68;;17188:1;17169:15;:20;:46;;;;17214:1;17193:17;:22;17169:46;17165:85;;;17232:7;;;;17165:85;17305:2;17284:18;;:23;;;;:::i;:::-;17266:15;:41;17262:115;;;17363:2;17342:18;;:23;;;;:::i;:::-;17324:41;;17262:115;17389:12;17422:23;17507:1;17487:17;17466:18;;17448:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;17422:86;;17529:51;17564:15;17546;:33;;;;:::i;:::-;17529:16;:51::i;:::-;17602:18;17623:21;17602:42;;17655:23;17681:10;17655:36;;17704:24;17809:1;17788:18;;:22;;;;:::i;:::-;17767:17;:44;;;;:::i;:::-;17744:19;;17731:10;:32;;;;:::i;:::-;:81;;;;:::i;:::-;17704:108;;17844:16;17825:35;;;;;:::i;:::-;;;17906:1;17885:18;:22;;;;17940:1;17918:19;:23;;;;17984:1;17966:15;:19;:42;;;;;18007:1;17989:15;:19;17966:42;17962:121;;;18025:46;18038:15;18055;18025:12;:46::i;:::-;17962:121;18116:17;;;;;;;;;;;18108:31;;18147:21;18108:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18095:78;;;;;17002:1179;;;;;;;16974:1207;:::o;6117:614::-;6275:1;6257:20;;:6;:20;;;;6249:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6359:1;6338:23;;:9;:23;;;;6330:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6414:21;6438:9;:17;6448:6;6438:17;;;;;;;;;;;;;;;;6414:41;;6491:6;6474:13;:23;;6466:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6612:6;6596:13;:22;6576:9;:17;6586:6;6576:17;;;;;;;;;;;;;;;:42;;;;6664:6;6640:9;:20;6650:9;6640:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;6705:9;6688:35;;6697:6;6688:35;;;6716:6;6688:35;;;;;;:::i;:::-;;;;;;;;6238:493;6117:614;;;:::o;16489:477::-;16557:21;16595:1;16581:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16557:40;;16626:4;16608;16613:1;16608:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;16652:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16642:4;16647:1;16642:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;16687:62;16704:4;16719:15;16737:11;16687:8;:62::i;:::-;16762:15;:66;;;16843:11;16869:1;16885:4;16912;16932:15;16762:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16544:422;16489:477;:::o;18193:370::-;18274:62;18291:4;18306:15;18324:11;18274:8;:62::i;:::-;18349:15;:31;;;18388:9;18421:4;18441:11;18467:1;18483;18507:6;18529:15;18349:206;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18193:370;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:144::-;4243:9;4276:37;4307:5;4276:37;:::i;:::-;4263:50;;4175:144;;;:::o;4325:167::-;4430:55;4479:5;4430:55;:::i;:::-;4425:3;4418:68;4325:167;;:::o;4498:258::-;4609:4;4647:2;4636:9;4632:18;4624:26;;4660:89;4746:1;4735:9;4731:17;4722:6;4660:89;:::i;:::-;4498:258;;;;:::o;4762:118::-;4849:24;4867:5;4849:24;:::i;:::-;4844:3;4837:37;4762:118;;:::o;4886:222::-;4979:4;5017:2;5006:9;5002:18;4994:26;;5030:71;5098:1;5087:9;5083:17;5074:6;5030:71;:::i;:::-;4886:222;;;;:::o;5114:619::-;5191:6;5199;5207;5256:2;5244:9;5235:7;5231:23;5227:32;5224:119;;;5262:79;;:::i;:::-;5224:119;5382:1;5407:53;5452:7;5443:6;5432:9;5428:22;5407:53;:::i;:::-;5397:63;;5353:117;5509:2;5535:53;5580:7;5571:6;5560:9;5556:22;5535:53;:::i;:::-;5525:63;;5480:118;5637:2;5663:53;5708:7;5699:6;5688:9;5684:22;5663:53;:::i;:::-;5653:63;;5608:118;5114:619;;;;;:::o;5739:86::-;5774:7;5814:4;5807:5;5803:16;5792:27;;5739:86;;;:::o;5831:112::-;5914:22;5930:5;5914:22;:::i;:::-;5909:3;5902:35;5831:112;;:::o;5949:214::-;6038:4;6076:2;6065:9;6061:18;6053:26;;6089:67;6153:1;6142:9;6138:17;6129:6;6089:67;:::i;:::-;5949:214;;;;:::o;6169:118::-;6256:24;6274:5;6256:24;:::i;:::-;6251:3;6244:37;6169:118;;:::o;6293:222::-;6386:4;6424:2;6413:9;6409:18;6401:26;;6437:71;6505:1;6494:9;6490:17;6481:6;6437:71;:::i;:::-;6293:222;;;;:::o;6521:116::-;6591:21;6606:5;6591:21;:::i;:::-;6584:5;6581:32;6571:60;;6627:1;6624;6617:12;6571:60;6521:116;:::o;6643:133::-;6686:5;6724:6;6711:20;6702:29;;6740:30;6764:5;6740:30;:::i;:::-;6643:133;;;;:::o;6782:468::-;6847:6;6855;6904:2;6892:9;6883:7;6879:23;6875:32;6872:119;;;6910:79;;:::i;:::-;6872:119;7030:1;7055:53;7100:7;7091:6;7080:9;7076:22;7055:53;:::i;:::-;7045:63;;7001:117;7157:2;7183:50;7225:7;7216:6;7205:9;7201:22;7183:50;:::i;:::-;7173:60;;7128:115;6782:468;;;;;:::o;7256:474::-;7324:6;7332;7381:2;7369:9;7360:7;7356:23;7352:32;7349:119;;;7387:79;;:::i;:::-;7349:119;7507:1;7532:53;7577:7;7568:6;7557:9;7553:22;7532:53;:::i;:::-;7522:63;;7478:117;7634:2;7660:53;7705:7;7696:6;7685:9;7681:22;7660:53;:::i;:::-;7650:63;;7605:118;7256:474;;;;;:::o;7736:180::-;7784:77;7781:1;7774:88;7881:4;7878:1;7871:15;7905:4;7902:1;7895:15;7922:320;7966:6;8003:1;7997:4;7993:12;7983:22;;8050:1;8044:4;8040:12;8071:18;8061:81;;8127:4;8119:6;8115:17;8105:27;;8061:81;8189:2;8181:6;8178:14;8158:18;8155:38;8152:84;;;8208:18;;:::i;:::-;8152:84;7973:269;7922:320;;;:::o;8248:227::-;8388:34;8384:1;8376:6;8372:14;8365:58;8457:10;8452:2;8444:6;8440:15;8433:35;8248:227;:::o;8481:366::-;8623:3;8644:67;8708:2;8703:3;8644:67;:::i;:::-;8637:74;;8720:93;8809:3;8720:93;:::i;:::-;8838:2;8833:3;8829:12;8822:19;;8481:366;;;:::o;8853:419::-;9019:4;9057:2;9046:9;9042:18;9034:26;;9106:9;9100:4;9096:20;9092:1;9081:9;9077:17;9070:47;9134:131;9260:4;9134:131;:::i;:::-;9126:139;;8853:419;;;:::o;9278:180::-;9326:77;9323:1;9316:88;9423:4;9420:1;9413:15;9447:4;9444:1;9437:15;9464:305;9504:3;9523:20;9541:1;9523:20;:::i;:::-;9518:25;;9557:20;9575:1;9557:20;:::i;:::-;9552:25;;9711:1;9643:66;9639:74;9636:1;9633:81;9630:107;;;9717:18;;:::i;:::-;9630:107;9761:1;9758;9754:9;9747:16;;9464:305;;;;:::o;9775:182::-;9915:34;9911:1;9903:6;9899:14;9892:58;9775:182;:::o;9963:366::-;10105:3;10126:67;10190:2;10185:3;10126:67;:::i;:::-;10119:74;;10202:93;10291:3;10202:93;:::i;:::-;10320:2;10315:3;10311:12;10304:19;;9963:366;;;:::o;10335:419::-;10501:4;10539:2;10528:9;10524:18;10516:26;;10588:9;10582:4;10578:20;10574:1;10563:9;10559:17;10552:47;10616:131;10742:4;10616:131;:::i;:::-;10608:139;;10335:419;;;:::o;10760:180::-;10900:32;10896:1;10888:6;10884:14;10877:56;10760:180;:::o;10946:366::-;11088:3;11109:67;11173:2;11168:3;11109:67;:::i;:::-;11102:74;;11185:93;11274:3;11185:93;:::i;:::-;11303:2;11298:3;11294:12;11287:19;;10946:366;;;:::o;11318:419::-;11484:4;11522:2;11511:9;11507:18;11499:26;;11571:9;11565:4;11561:20;11557:1;11546:9;11542:17;11535:47;11599:131;11725:4;11599:131;:::i;:::-;11591:139;;11318:419;;;:::o;11743:173::-;11883:25;11879:1;11871:6;11867:14;11860:49;11743:173;:::o;11922:366::-;12064:3;12085:67;12149:2;12144:3;12085:67;:::i;:::-;12078:74;;12161:93;12250:3;12161:93;:::i;:::-;12279:2;12274:3;12270:12;12263:19;;11922:366;;;:::o;12294:419::-;12460:4;12498:2;12487:9;12483:18;12475:26;;12547:9;12541:4;12537:20;12533:1;12522:9;12518:17;12511:47;12575:131;12701:4;12575:131;:::i;:::-;12567:139;;12294:419;;;:::o;12719:244::-;12859:34;12855:1;12847:6;12843:14;12836:58;12928:27;12923:2;12915:6;12911:15;12904:52;12719:244;:::o;12969:366::-;13111:3;13132:67;13196:2;13191:3;13132:67;:::i;:::-;13125:74;;13208:93;13297:3;13208:93;:::i;:::-;13326:2;13321:3;13317:12;13310:19;;12969:366;;;:::o;13341:419::-;13507:4;13545:2;13534:9;13530:18;13522:26;;13594:9;13588:4;13584:20;13580:1;13569:9;13565:17;13558:47;13622:131;13748:4;13622:131;:::i;:::-;13614:139;;13341:419;;;:::o;13766:224::-;13906:34;13902:1;13894:6;13890:14;13883:58;13975:7;13970:2;13962:6;13958:15;13951:32;13766:224;:::o;13996:366::-;14138:3;14159:67;14223:2;14218:3;14159:67;:::i;:::-;14152:74;;14235:93;14324:3;14235:93;:::i;:::-;14353:2;14348:3;14344:12;14337:19;;13996:366;;;:::o;14368:419::-;14534:4;14572:2;14561:9;14557:18;14549:26;;14621:9;14615:4;14611:20;14607:1;14596:9;14592:17;14585:47;14649:131;14775:4;14649:131;:::i;:::-;14641:139;;14368:419;;;:::o;14793:225::-;14933:34;14929:1;14921:6;14917:14;14910:58;15002:8;14997:2;14989:6;14985:15;14978:33;14793:225;:::o;15024:366::-;15166:3;15187:67;15251:2;15246:3;15187:67;:::i;:::-;15180:74;;15263:93;15352:3;15263:93;:::i;:::-;15381:2;15376:3;15372:12;15365:19;;15024:366;;;:::o;15396:419::-;15562:4;15600:2;15589:9;15585:18;15577:26;;15649:9;15643:4;15639:20;15635:1;15624:9;15620:17;15613:47;15677:131;15803:4;15677:131;:::i;:::-;15669:139;;15396:419;;;:::o;15821:223::-;15961:34;15957:1;15949:6;15945:14;15938:58;16030:6;16025:2;16017:6;16013:15;16006:31;15821:223;:::o;16050:366::-;16192:3;16213:67;16277:2;16272:3;16213:67;:::i;:::-;16206:74;;16289:93;16378:3;16289:93;:::i;:::-;16407:2;16402:3;16398:12;16391:19;;16050:366;;;:::o;16422:419::-;16588:4;16626:2;16615:9;16611:18;16603:26;;16675:9;16669:4;16665:20;16661:1;16650:9;16646:17;16639:47;16703:131;16829:4;16703:131;:::i;:::-;16695:139;;16422:419;;;:::o;16847:221::-;16987:34;16983:1;16975:6;16971:14;16964:58;17056:4;17051:2;17043:6;17039:15;17032:29;16847:221;:::o;17074:366::-;17216:3;17237:67;17301:2;17296:3;17237:67;:::i;:::-;17230:74;;17313:93;17402:3;17313:93;:::i;:::-;17431:2;17426:3;17422:12;17415:19;;17074:366;;;:::o;17446:419::-;17612:4;17650:2;17639:9;17635:18;17627:26;;17699:9;17693:4;17689:20;17685:1;17674:9;17670:17;17663:47;17727:131;17853:4;17727:131;:::i;:::-;17719:139;;17446:419;;;:::o;17871:224::-;18011:34;18007:1;17999:6;17995:14;17988:58;18080:7;18075:2;18067:6;18063:15;18056:32;17871:224;:::o;18101:366::-;18243:3;18264:67;18328:2;18323:3;18264:67;:::i;:::-;18257:74;;18340:93;18429:3;18340:93;:::i;:::-;18458:2;18453:3;18449:12;18442:19;;18101:366;;;:::o;18473:419::-;18639:4;18677:2;18666:9;18662:18;18654:26;;18726:9;18720:4;18716:20;18712:1;18701:9;18697:17;18690:47;18754:131;18880:4;18754:131;:::i;:::-;18746:139;;18473:419;;;:::o;18898:222::-;19038:34;19034:1;19026:6;19022:14;19015:58;19107:5;19102:2;19094:6;19090:15;19083:30;18898:222;:::o;19126:366::-;19268:3;19289:67;19353:2;19348:3;19289:67;:::i;:::-;19282:74;;19365:93;19454:3;19365:93;:::i;:::-;19483:2;19478:3;19474:12;19467:19;;19126:366;;;:::o;19498:419::-;19664:4;19702:2;19691:9;19687:18;19679:26;;19751:9;19745:4;19741:20;19737:1;19726:9;19722:17;19715:47;19779:131;19905:4;19779:131;:::i;:::-;19771:139;;19498:419;;;:::o;19923:175::-;20063:27;20059:1;20051:6;20047:14;20040:51;19923:175;:::o;20104:366::-;20246:3;20267:67;20331:2;20326:3;20267:67;:::i;:::-;20260:74;;20343:93;20432:3;20343:93;:::i;:::-;20461:2;20456:3;20452:12;20445:19;;20104:366;;;:::o;20476:419::-;20642:4;20680:2;20669:9;20665:18;20657:26;;20729:9;20723:4;20719:20;20715:1;20704:9;20700:17;20693:47;20757:131;20883:4;20757:131;:::i;:::-;20749:139;;20476:419;;;:::o;20901:180::-;21041:32;21037:1;21029:6;21025:14;21018:56;20901:180;:::o;21087:366::-;21229:3;21250:67;21314:2;21309:3;21250:67;:::i;:::-;21243:74;;21326:93;21415:3;21326:93;:::i;:::-;21444:2;21439:3;21435:12;21428:19;;21087:366;;;:::o;21459:419::-;21625:4;21663:2;21652:9;21648:18;21640:26;;21712:9;21706:4;21702:20;21698:1;21687:9;21683:17;21676:47;21740:131;21866:4;21740:131;:::i;:::-;21732:139;;21459:419;;;:::o;21884:177::-;22024:29;22020:1;22012:6;22008:14;22001:53;21884:177;:::o;22067:366::-;22209:3;22230:67;22294:2;22289:3;22230:67;:::i;:::-;22223:74;;22306:93;22395:3;22306:93;:::i;:::-;22424:2;22419:3;22415:12;22408:19;;22067:366;;;:::o;22439:419::-;22605:4;22643:2;22632:9;22628:18;22620:26;;22692:9;22686:4;22682:20;22678:1;22667:9;22663:17;22656:47;22720:131;22846:4;22720:131;:::i;:::-;22712:139;;22439:419;;;:::o;22864:182::-;23004:34;23000:1;22992:6;22988:14;22981:58;22864:182;:::o;23052:366::-;23194:3;23215:67;23279:2;23274:3;23215:67;:::i;:::-;23208:74;;23291:93;23380:3;23291:93;:::i;:::-;23409:2;23404:3;23400:12;23393:19;;23052:366;;;:::o;23424:419::-;23590:4;23628:2;23617:9;23613:18;23605:26;;23677:9;23671:4;23667:20;23663:1;23652:9;23648:17;23641:47;23705:131;23831:4;23705:131;:::i;:::-;23697:139;;23424:419;;;:::o;23849:348::-;23889:7;23912:20;23930:1;23912:20;:::i;:::-;23907:25;;23946:20;23964:1;23946:20;:::i;:::-;23941:25;;24134:1;24066:66;24062:74;24059:1;24056:81;24051:1;24044:9;24037:17;24033:105;24030:131;;;24141:18;;:::i;:::-;24030:131;24189:1;24186;24182:9;24171:20;;23849:348;;;;:::o;24203:180::-;24251:77;24248:1;24241:88;24348:4;24345:1;24338:15;24372:4;24369:1;24362:15;24389:185;24429:1;24446:20;24464:1;24446:20;:::i;:::-;24441:25;;24480:20;24498:1;24480:20;:::i;:::-;24475:25;;24519:1;24509:35;;24524:18;;:::i;:::-;24509:35;24566:1;24563;24559:9;24554:14;;24389:185;;;;:::o;24580:191::-;24620:4;24640:20;24658:1;24640:20;:::i;:::-;24635:25;;24674:20;24692:1;24674:20;:::i;:::-;24669:25;;24713:1;24710;24707:8;24704:34;;;24718:18;;:::i;:::-;24704:34;24763:1;24760;24756:9;24748:17;;24580:191;;;;:::o;24777:147::-;24878:11;24915:3;24900:18;;24777:147;;;;:::o;24930:114::-;;:::o;25050:398::-;25209:3;25230:83;25311:1;25306:3;25230:83;:::i;:::-;25223:90;;25322:93;25411:3;25322:93;:::i;:::-;25440:1;25435:3;25431:11;25424:18;;25050:398;;;:::o;25454:379::-;25638:3;25660:147;25803:3;25660:147;:::i;:::-;25653:154;;25824:3;25817:10;;25454:379;;;:::o;25839:225::-;25979:34;25975:1;25967:6;25963:14;25956:58;26048:8;26043:2;26035:6;26031:15;26024:33;25839:225;:::o;26070:366::-;26212:3;26233:67;26297:2;26292:3;26233:67;:::i;:::-;26226:74;;26309:93;26398:3;26309:93;:::i;:::-;26427:2;26422:3;26418:12;26411:19;;26070:366;;;:::o;26442:419::-;26608:4;26646:2;26635:9;26631:18;26623:26;;26695:9;26689:4;26685:20;26681:1;26670:9;26666:17;26659:47;26723:131;26849:4;26723:131;:::i;:::-;26715:139;;26442:419;;;:::o;26867:180::-;26915:77;26912:1;26905:88;27012:4;27009:1;27002:15;27036:4;27033:1;27026:15;27053:180;27101:77;27098:1;27091:88;27198:4;27195:1;27188:15;27222:4;27219:1;27212:15;27239:143;27296:5;27327:6;27321:13;27312:22;;27343:33;27370:5;27343:33;:::i;:::-;27239:143;;;;:::o;27388:351::-;27458:6;27507:2;27495:9;27486:7;27482:23;27478:32;27475:119;;;27513:79;;:::i;:::-;27475:119;27633:1;27658:64;27714:7;27705:6;27694:9;27690:22;27658:64;:::i;:::-;27648:74;;27604:128;27388:351;;;;:::o;27745:85::-;27790:7;27819:5;27808:16;;27745:85;;;:::o;27836:158::-;27894:9;27927:61;27945:42;27954:32;27980:5;27954:32;:::i;:::-;27945:42;:::i;:::-;27927:61;:::i;:::-;27914:74;;27836:158;;;:::o;28000:147::-;28095:45;28134:5;28095:45;:::i;:::-;28090:3;28083:58;28000:147;;:::o;28153:114::-;28220:6;28254:5;28248:12;28238:22;;28153:114;;;:::o;28273:184::-;28372:11;28406:6;28401:3;28394:19;28446:4;28441:3;28437:14;28422:29;;28273:184;;;;:::o;28463:132::-;28530:4;28553:3;28545:11;;28583:4;28578:3;28574:14;28566:22;;28463:132;;;:::o;28601:108::-;28678:24;28696:5;28678:24;:::i;:::-;28673:3;28666:37;28601:108;;:::o;28715:179::-;28784:10;28805:46;28847:3;28839:6;28805:46;:::i;:::-;28883:4;28878:3;28874:14;28860:28;;28715:179;;;;:::o;28900:113::-;28970:4;29002;28997:3;28993:14;28985:22;;28900:113;;;:::o;29049:732::-;29168:3;29197:54;29245:5;29197:54;:::i;:::-;29267:86;29346:6;29341:3;29267:86;:::i;:::-;29260:93;;29377:56;29427:5;29377:56;:::i;:::-;29456:7;29487:1;29472:284;29497:6;29494:1;29491:13;29472:284;;;29573:6;29567:13;29600:63;29659:3;29644:13;29600:63;:::i;:::-;29593:70;;29686:60;29739:6;29686:60;:::i;:::-;29676:70;;29532:224;29519:1;29516;29512:9;29507:14;;29472:284;;;29476:14;29772:3;29765:10;;29173:608;;;29049:732;;;;:::o;29787:831::-;30050:4;30088:3;30077:9;30073:19;30065:27;;30102:71;30170:1;30159:9;30155:17;30146:6;30102:71;:::i;:::-;30183:80;30259:2;30248:9;30244:18;30235:6;30183:80;:::i;:::-;30310:9;30304:4;30300:20;30295:2;30284:9;30280:18;30273:48;30338:108;30441:4;30432:6;30338:108;:::i;:::-;30330:116;;30456:72;30524:2;30513:9;30509:18;30500:6;30456:72;:::i;:::-;30538:73;30606:3;30595:9;30591:19;30582:6;30538:73;:::i;:::-;29787:831;;;;;;;;:::o;30624:807::-;30873:4;30911:3;30900:9;30896:19;30888:27;;30925:71;30993:1;30982:9;30978:17;30969:6;30925:71;:::i;:::-;31006:72;31074:2;31063:9;31059:18;31050:6;31006:72;:::i;:::-;31088:80;31164:2;31153:9;31149:18;31140:6;31088:80;:::i;:::-;31178;31254:2;31243:9;31239:18;31230:6;31178:80;:::i;:::-;31268:73;31336:3;31325:9;31321:19;31312:6;31268:73;:::i;:::-;31351;31419:3;31408:9;31404:19;31395:6;31351:73;:::i;:::-;30624:807;;;;;;;;;:::o;31437:143::-;31494:5;31525:6;31519:13;31510:22;;31541:33;31568:5;31541:33;:::i;:::-;31437:143;;;;:::o;31586:663::-;31674:6;31682;31690;31739:2;31727:9;31718:7;31714:23;31710:32;31707:119;;;31745:79;;:::i;:::-;31707:119;31865:1;31890:64;31946:7;31937:6;31926:9;31922:22;31890:64;:::i;:::-;31880:74;;31836:128;32003:2;32029:64;32085:7;32076:6;32065:9;32061:22;32029:64;:::i;:::-;32019:74;;31974:129;32142:2;32168:64;32224:7;32215:6;32204:9;32200:22;32168:64;:::i;:::-;32158:74;;32113:129;31586:663;;;;;:::o

Swarm Source

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