ETH Price: $3,390.57 (+1.27%)

Token

Automated ($AUTO)
 

Overview

Max Total Supply

1,000,000,000 $AUTO

Holders

49

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
5,463,198.704833298492301445 $AUTO

Value
$0.00
0xf3ed3dd4f0c156e83f84cffb531a082f6b368c25
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:
Automated

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-27
*/

// Automated ($AUTO) 
// 
// Auto Buybacks and Burn, Automated is completely self-sufficient as all taxes are assigned to directly Buy and Burn the Native Token
// Self-Sufficient - Community Oriented - Simple Tokenomics - A new type of ERC20 Contract - Automated
// The first rule of any technology used in a business is that automation applied to an efficient operation will magnify the efficiency.
// Tax: 8% Automated Tax allocated to Buyback and Burn 
// https://www.AutoERC.info/
// SPDX-License-Identifier: MIT
pragma solidity 0.8.12;

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

interface IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}

interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}


contract Automated is IERC20 {
    // Ownership moved to in-contract for customizability.
    address private _owner;
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;
    mapping (address => bool) private _liquidityHolders;
   
    uint256 constant private startingSupply = 1_000_000_000;

    string constant private _name = "Automated";
    string constant private _symbol = "$AUTO";
    uint8 constant private _decimals = 18;

    uint256 constant private _tTotal = startingSupply * 10**_decimals;

    struct Fees {
        uint16 buyFee;
        uint16 sellFee;
        uint16 transferFee;
    }

    struct Ratios {
        
        uint16 tokens;
        uint16 swap;
        uint16 burn;
        uint16 total;
    }

    Fees public _taxRates = Fees({
        buyFee: 800,
        sellFee: 800,
        transferFee: 0
        });

    Ratios public _ratios = Ratios({
        tokens: 0,
        swap: 0,
        burn: 10,
        total: 10
        });

    uint256 constant public maxBuyTaxes = 2000;
    uint256 constant public maxSellTaxes = 2000;
    uint256 constant public maxTransferTaxes = 2000;
    uint256 constant masterTaxDivisor = 10000;

    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;

    struct TaxWallets {
        address tokens;
        address payable swap;
    }

    TaxWallets public _taxWallets = TaxWallets({
        tokens: 0x1Fb62da445c8dF59228Ba825784C9d510F406dc2,
        swap: payable(0x1Fb62da445c8dF59228Ba825784C9d510F406dc2)
        });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public contractSwapTimer = 0 seconds;
    uint256 private lastSwap;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    
    uint256 public _amountTokensLastSold;
    uint256 public _percentLastSoldToBuyBackTimesTen = 10;
    uint256 private _buyBackAmount;
    

    uint256 private _maxTxAmount = _tTotal;
    uint256 private _maxWalletSize = _tTotal;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    bool public buyBackEnabled = false;
    

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);
    event SwapETHForTokens(uint256 amountIn, address[] path);
      
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier onlyOwner() {
        require(_owner == msg.sender, "Caller =/= owner.");
        _;
    }
    
    constructor () payable {
        _tOwned[msg.sender] = _tTotal;
        emit Transfer(address(0), msg.sender, _tTotal);

        // Set the owner.
        _owner = msg.sender;

        if (block.chainid == 56) {
            dexRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        } else if (block.chainid == 97) {
            dexRouter = IRouter02(0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3);
        } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3) {
            dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        } else if (block.chainid == 43114) {
            dexRouter = IRouter02(0x60aE616a2155Ee3d9A68541Ba4544862310933d4);
        } else if (block.chainid == 250) {
            dexRouter = IRouter02(0xF491e7B69E4244ad4002BC14e878a34207E38c29);
        } else {
            revert();
        }

        lpPair = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;

        _approve(_owner, address(dexRouter), type(uint256).max);
        _approve(address(this), address(dexRouter), type(uint256).max);

        _isExcludedFromFees[_owner] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _liquidityHolders[_owner] = true;
    }

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and renouncements.
    // This allows for removal of ownership privileges from the owner once renounced or transferred.
    function transferOwner(address newOwner) external onlyOwner {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        
        if(balanceOf(_owner) > 0) {
            _transfer(_owner, newOwner, balanceOf(_owner));
        }
        
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
        
    }

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

    function totalSupply() external pure override returns (uint256) { if (_tTotal == 0) { revert(); } return _tTotal; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return _owner; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

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

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

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

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



    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] -= amount;
        }

        return _transfer(sender, recipient, amount);
    }

    function setNewRouter(address newRouter) public onlyOwner {
        IRouter02 _newRouter = IRouter02(newRouter);
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (enabled == false) {
            lpPairs[pair] = false;
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown.!");
            }
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
        }
    }

    
    function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee) external onlyOwner {
        require(buyFee <= maxBuyTaxes
                && sellFee <= maxSellTaxes
                && transferFee <= maxTransferTaxes,
                "Cannot exceed maximums.");
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
    }
    
    function setRatios(uint16 tokens, uint16 swap, uint16 burn) external onlyOwner {
        
        _ratios.tokens = tokens;
        _ratios.swap = swap;
        _ratios.burn = burn;
        _ratios.total =  swap + burn;
    }

    
    function setExcludedFromLimits(address account, bool enabled) external onlyOwner {
        _isExcludedFromLimits[account] = enabled;
    }

    function isExcludedFromLimits(address account) public view returns (bool) {
        return _isExcludedFromLimits[account];
    }

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

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

    function getMaxTX() public view returns (uint256) {
        return _maxTxAmount / (10**_decimals);
    }

    function getMaxWallet() public view returns (uint256) {
        return _maxWalletSize / (10**_decimals);
    }


    function getAmountTokensLastSold() public view returns (uint256) {
        return _amountTokensLastSold;
    }

    function percentLastSoldToBuyBackTimesTen() public view returns (uint256) {
        return _percentLastSoldToBuyBackTimesTen;
    }

    
    function setBuyBackEnabled(bool _enabled) public onlyOwner {
        buyBackEnabled = _enabled;
        
    }

    function setPercentLastSoldToBuyBackTimesTen(uint256 percentLastSoldToBuyBackTimesTenNew) public onlyOwner {
        _percentLastSoldToBuyBackTimesTen = percentLastSoldToBuyBackTimesTenNew;
    }

     function _getSellBnBAmount(uint256 tokenAmount) private view returns(uint256) {
        address[] memory path = new address[](2);

        path[0] = address(this);
        path[1] = dexRouter.WETH();

        uint[] memory amounts = dexRouter.getAmountsOut(tokenAmount, path);

        return amounts[1];
        
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor, uint256 time) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
        contractSwapTimer = time;
    }

    function setWallets(address tokens, address payable swap) external onlyOwner {
        _taxWallets.tokens = tokens;
        _taxWallets.swap = payable(swap);
    }

    function setContractSwapEnabled(bool enabled) external onlyOwner {
        contractSwapEnabled = enabled;
        emit ContractSwapEnabledUpdated(enabled);
    }

    function _hasLimits(address from, address to) internal view returns (bool) {
        return from != _owner
            && to != _owner
            && tx.origin != _owner
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        bool buy = false;
        bool sell = false;
        bool other = false;
        if (lpPairs[from]) {
            buy = true;
        } else if (lpPairs[to]) {
            sell = true;
        } else {
            other = true;
        }
        if(_hasLimits(from, to)) {
            if(!tradingEnabled) {
                revert("Trading not yet enabled!");
            }
            if(buy || sell){
                if (!_isExcludedFromLimits[from] && !_isExcludedFromLimits[to]) {
                    require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
                }
            }
            if(to != address(dexRouter) && !sell) {
                if (!_isExcludedFromLimits[to]) {
                    require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize.");
                }
            }
        }

        bool takeFee = true;
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }

        if (sell) 
        {
            if (!inSwap
                && contractSwapEnabled
            ) {
                if (lastSwap + contractSwapTimer < block.timestamp) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance >= swapThreshold) {
                        if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                        contractSwap();
                        lastSwap = block.timestamp;
                    }
                }

            }
            
            uint256 balance = address(this).balance;
            if (buyBackEnabled && contractSwapEnabled) {
                        _amountTokensLastSold += _getSellBnBAmount(amount);
                        uint256 buyBackAmount = _amountTokensLastSold / (1000) * (_percentLastSoldToBuyBackTimesTen);
                        if(buyBackAmount < balance){
                            buyBackTokens(buyBackAmount);
			                _amountTokensLastSold;
                        }else{
			                _amountTokensLastSold = 0;
                        }
                    }
                

            
               
            
            
        }
        return _finalizeTransfer(from, to, amount, takeFee, buy, sell, other);
        
    }

    function contractSwap() internal lockTheSwap {
        uint256 amountToSwap = swapAmount;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        uint256 balanceBefore = address(this).balance;

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp

        );
        uint256 amountBNB = address(this).balance - (balanceBefore);
        uint256 amountBNBMarketing = amountBNB * (_ratios.swap) / (_ratios.total);
        
        (bool MarketingSuccess, /* bytes memory data */) = payable(_taxWallets.swap).call{value: amountBNBMarketing, gas: 30000}("");
        require(MarketingSuccess, "receiver rejected ETH transfer");

    }
    
  function buyBackTokens(uint256 amount) private lockTheSwap {
    	if (amount > 0) {
    	    swapETHForTokens(amount);
	    }
    }

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

      // make the swap
        dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
            0, // accept any amount of Tokens
            path,
            DEAD, // Burn address
            block.timestamp 
        );

        emit SwapETHForTokens(amount, path);
    }
    
    function _checkLiquidityAdd(address from, address to) internal {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            contractSwapEnabled = true;
            emit ContractSwapEnabledUpdated(true);
        }
    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        
        tradingEnabled = true;
        swapThreshold = (balanceOf(lpPair) * 5) / 10000;
        swapAmount = (balanceOf(lpPair) * 5) / 10000;
    }

    function sweepContingency() external onlyOwner {
        payable(_owner).transfer(address(this).balance);
    }


    function transferContractToken(address _token, address _to, uint256 _quant) public onlyOwner returns(bool _sent){
        _sent = IERC20(_token).transfer(_to, _quant);
    }

    function multiSendTokens(address[] memory accounts, uint256[] memory amounts) external {
        require(accounts.length == amounts.length, "Lengths do not match.");
        for (uint8 i = 0; i < accounts.length; i++) {
            require(balanceOf(msg.sender) >= amounts[i]);
            _finalizeTransfer(msg.sender, accounts[i], amounts[i]*10**_decimals, false, false, false, true);
        }
    }

    function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee, bool buy, bool sell, bool other) internal returns (bool) {
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to)) {
                revert("Only owner can transfer at this time.");
            }
        }

        

        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, buy, sell, amount) : amount;
        _tOwned[to] += amountReceived;

        emit Transfer(from, to, amountReceived);
        return true;
    }

    function takeTaxes(address from, bool buy, bool sell, uint256 amount) internal returns (uint256) {
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }

        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        uint256 tokenAmount = (feeAmount * _ratios.tokens) / (_ratios.total);
        if (tokenAmount > 0) {
            feeAmount -= tokenAmount;
            address destination = _taxWallets.tokens;
            _tOwned[destination] += tokenAmount;
            emit Transfer(from, destination, tokenAmount);
        }
        _tOwned[address(this)] += feeAmount;
        emit Transfer(from, address(this), feeAmount);

        return amount - (feeAmount + tokenAmount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_amountTokensLastSold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_percentLastSoldToBuyBackTimesTen","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"tokens","type":"uint16"},{"internalType":"uint16","name":"swap","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"},{"internalType":"uint16","name":"total","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address","name":"tokens","type":"address"},{"internalType":"address payable","name":"swap","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapTimer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAmountTokensLastSold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"percentLastSoldToBuyBackTimesTen","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setBuyBackEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentLastSoldToBuyBackTimesTenNew","type":"uint256"}],"name":"setPercentLastSoldToBuyBackTimesTen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"tokens","type":"uint16"},{"internalType":"uint16","name":"swap","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokens","type":"address"},{"internalType":"address payable","name":"swap","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_quant","type":"uint256"}],"name":"transferContractToken","outputs":[{"internalType":"bool","name":"_sent","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":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60006003819055610320608081905260a05260c08190526008805465ffffffffffff1916630320032017905560e0819052610100819052600a61012081905261014081905260098054660a000a000000006001600160401b03199091161790556101a0604052731fb62da445c8df59228ba825784c9d510f406dc2610160819052610180819052600c80546001600160a01b03199081168317909155600d80549091169091179055600e805461ff0019169055600f919091556014819055620000cb9060129062000743565b620000db90633b9aca006200075b565b601655620000ec6012600a62000743565b620000fc90633b9aca006200075b565b6017556018805462ffffff19169055620001196012600a62000743565b6200012990633b9aca006200075b565b33600081815260016020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200016c6012600a62000743565b6200017c90633b9aca006200075b565b60405190815260200160405180910390a3600080546001600160a01b031916331790556038461415620001d557600a80546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e179055620002cb565b46606114156200020b57600a80546001600160a01b031916739ac64cc6e4415144c455bd8e4837fea55603e5c3179055620002cb565b46600114806200021b5750466004145b80620002275750466003145b156200025957600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055620002cb565b4661a86a14156200029057600a80546001600160a01b0319167360ae616a2155ee3d9a68541ba4544862310933d4179055620002cb565b4660fa1415620002c657600a80546001600160a01b03191673f491e7b69e4244ad4002bc14e878a34207e38c29179055620002cb565b600080fd5b600a60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034591906200077d565b6001600160a01b031663c9c65396600a60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003cd91906200077d565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af11580156200041a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044091906200077d565b600b80546001600160a01b0319166001600160a01b039283169081179091556000908152600260205260408120805460ff1916600117905554600a546200048f9291821691166000196200052d565b600a54620004ab9030906001600160a01b03166000196200052d565b600080546001600160a01b0390811682526005602090815260408084208054600160ff19918216811790925530865282862080548216831790557f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba805482168317905585549094168552600790925290922080549091169091179055620007a8565b6001600160a01b0383166200057f5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620005cd5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640162000576565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006855781600019048211156200066957620006696200062e565b808516156200067757918102915b93841c939080029062000649565b509250929050565b6000826200069e575060016200073d565b81620006ad575060006200073d565b8160018114620006c65760028114620006d157620006f1565b60019150506200073d565b60ff841115620006e557620006e56200062e565b50506001821b6200073d565b5060208310610133831016604e8410600b841016171562000716575081810a6200073d565b62000722838362000644565b80600019048211156200073957620007396200062e565b0290505b92915050565b60006200075460ff8416836200068d565b9392505050565b60008160001904831182151516156200077857620007786200062e565b500290565b6000602082840312156200079057600080fd5b81516001600160a01b03811681146200075457600080fd5b61300780620007b86000396000f3fe6080604052600436106102e85760003560e01c8063590ffdce11610190578063b1b08f71116100dc578063dd62ed3e11610095578063ee5d9c2d1161006f578063ee5d9c2d1461093a578063f94aa1b41461094f578063fcbab4ab14610996578063fdb78c0e146109ac57600080fd5b8063dd62ed3e146108be578063e4fcfd1814610904578063eafb5a3c1461091a57600080fd5b8063b1b08f71146104cd578063b3d514fb146104cd578063b74f7eb5146107f6578063cab5ebea14610816578063cf84770614610836578063d3f6a1571461089e57600080fd5b806380c581d11161014957806395d89b411161012357806395d89b411461076857806398077fa114610796578063a9059cbb146107b6578063aa22b172146107d657600080fd5b806380c581d114610715578063893d20e8146107355780638a8c523c1461075357600080fd5b8063590ffdce146106525780635cce86cd146106725780636053a0e3146106ab5780636ebd0078146106cb57806370a08231146106e0578063715018a61461070057600080fd5b80632b28fc7a1161024f57806336fddb04116102085780634ada218b116101e25780634ada218b146105c05780634fb2e45d146105da5780634fbee193146105fa57806350a8e0161461063357600080fd5b806336fddb041461056b5780633bb8ef681461058b578063452ed4f1146105a057600080fd5b80632b28fc7a146104cd5780632e8fa821146104e35780632f83f7bf146104f9578063313ce5671461050f57806332cde6641461052b57806334cd82601461054b57600080fd5b80630fa604e4116102a15780630fa604e41461042c578063163140a61461044157806318160ddd1461045657806323b872dd1461046b5780632610eaca1461048b57806329370cc6146104ad57600080fd5b806303fd2a45146102f45780630445b66714610327578063069d955f1461034b57806306fdde03146103a15780630758d924146103dc578063095ea7b3146103fc57600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061030a61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561033357600080fd5b5061033d60115481565b60405190815260200161031e565b34801561035757600080fd5b5060085461037c9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161031e565b3480156103ad57600080fd5b50604080518082019091526009815268105d5d1bdb585d195960ba1b60208201525b60405161031e919061280f565b3480156103e857600080fd5b50600a5461030a906001600160a01b031681565b34801561040857600080fd5b5061041c610417366004612879565b6109cb565b604051901515815260200161031e565b34801561043857600080fd5b5061033d6109e2565b34801561044d57600080fd5b5060135461033d565b34801561046257600080fd5b5061033d610a02565b34801561047757600080fd5b5061041c6104863660046128a5565b610a41565b34801561049757600080fd5b506104ab6104a63660046129bc565b610ab9565b005b3480156104b957600080fd5b506104ab6104c8366004612a8c565b610bc1565b3480156104d957600080fd5b5061033d6107d081565b3480156104ef57600080fd5b5061033d60125481565b34801561050557600080fd5b5061033d60135481565b34801561051b57600080fd5b506040516012815260200161031e565b34801561053757600080fd5b506104ab610546366004612ac0565b610c07565b34801561055757600080fd5b506104ab610566366004612b03565b610cea565b34801561057757600080fd5b506104ab610586366004612b3e565b610d83565b34801561059757600080fd5b5060145461033d565b3480156105ac57600080fd5b50600b5461030a906001600160a01b031681565b3480156105cc57600080fd5b5060185461041c9060ff1681565b3480156105e657600080fd5b506104ab6105f5366004612b77565b610dd8565b34801561060657600080fd5b5061041c610615366004612b77565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561063f57600080fd5b5060185461041c90610100900460ff1681565b34801561065e57600080fd5b506104ab61066d366004612b3e565b610eff565b34801561067e57600080fd5b5061041c61068d366004612b77565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156106b757600080fd5b5060185461041c9062010000900460ff1681565b3480156106d757600080fd5b5061033d610f54565b3480156106ec57600080fd5b5061033d6106fb366004612b77565b610f6f565b34801561070c57600080fd5b506104ab610f8a565b34801561072157600080fd5b506104ab610730366004612b3e565b611009565b34801561074157600080fd5b506000546001600160a01b031661030a565b34801561075f57600080fd5b506104ab6110e0565b34801561077457600080fd5b50604080518082019091526005815264244155544f60d81b60208201526103cf565b3480156107a257600080fd5b5061041c6107b13660046128a5565b611225565b3480156107c257600080fd5b5061041c6107d1366004612879565b6112c3565b3480156107e257600080fd5b506104ab6107f1366004612ac0565b6112da565b34801561080257600080fd5b506104ab610811366004612b94565b611370565b34801561082257600080fd5b506104ab610831366004612a8c565b61139f565b34801561084257600080fd5b506009546108709061ffff808216916201000081048216916401000000008204811691600160301b90041684565b6040805161ffff9586168152938516602085015291841691830191909152909116606082015260800161031e565b3480156108aa57600080fd5b506104ab6108b9366004612bad565b61141d565b3480156108ca57600080fd5b5061033d6108d9366004612bad565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561091057600080fd5b5061033d600f5481565b34801561092657600080fd5b506104ab610935366004612b77565b611475565b34801561094657600080fd5b506104ab6117a9565b34801561095b57600080fd5b50600c54600d54610976916001600160a01b03908116911682565b604080516001600160a01b0393841681529290911660208301520161031e565b3480156109a257600080fd5b5061033d60145481565b3480156109b857600080fd5b50600e5461041c90610100900460ff1681565b60006109d8338484611810565b5060015b92915050565b60006109f06012600a612cd5565b6017546109fd9190612ce4565b905090565b6000610a106012600a612cd5565b610a1e90633b9aca00612d06565b610a2757600080fd5b610a336012600a612cd5565b6109fd90633b9aca00612d06565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610aa6576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610aa0908490612d25565b90915550505b610ab1848484611909565b949350505050565b8051825114610b075760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b60448201526064015b60405180910390fd5b60005b82518160ff161015610bbc57818160ff1681518110610b2b57610b2b612d3c565b6020026020010151610b3c33610f6f565b1015610b4757600080fd5b610ba933848360ff1681518110610b6057610b60612d3c565b60200260200101516012600a610b769190612cd5565b858560ff1681518110610b8b57610b8b612d3c565b6020026020010151610b9d9190612d06565b60008060006001611dbe565b5080610bb481612d52565b915050610b0a565b505050565b6000546001600160a01b03163314610beb5760405162461bcd60e51b8152600401610afe90612d72565b60188054911515620100000262ff000019909216919091179055565b6000546001600160a01b03163314610c315760405162461bcd60e51b8152600401610afe90612d72565b6107d08361ffff1611158015610c4d57506107d08261ffff1611155b8015610c5f57506107d08161ffff1611155b610cab5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610afe565b6008805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6000546001600160a01b03163314610d145760405162461bcd60e51b8152600401610afe90612d72565b8385610d226012600a612cd5565b610d3090633b9aca00612d06565b610d3a9190612d06565b610d449190612ce4565b6011558183610d556012600a612cd5565b610d6390633b9aca00612d06565b610d6d9190612d06565b610d779190612ce4565b601255600f5550505050565b6000546001600160a01b03163314610dad5760405162461bcd60e51b8152600401610afe90612d72565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610e025760405162461bcd60e51b8152600401610afe90612d72565b6001600160a01b038116610e285760405162461bcd60e51b8152600401610afe90612d9d565b6001600160a01b03811661dead1415610e535760405162461bcd60e51b8152600401610afe90612d9d565b60008054610e6c916001600160a01b0390911690610eff565b610e77816001610eff565b60008054610e8d906001600160a01b0316610f6f565b1115610eb457600054610eb2906001600160a01b031682610ead82610f6f565b611909565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b03163314610f295760405162461bcd60e51b8152600401610afe90612d72565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000610f626012600a612cd5565b6016546109fd9190612ce4565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b03163314610fb45760405162461bcd60e51b8152600401610afe90612d72565b60008054610fcd916001600160a01b0390911690610eff565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b031633146110335760405162461bcd60e51b8152600401610afe90612d72565b8061105a57506001600160a01b03166000908152600260205260409020805460ff19169055565b600354156110b4576203f480600354426110749190612d25565b116110b45760405162461bcd60e51b815260206004820152601060248201526f332044617920636f6f6c646f776e2e2160801b6044820152606401610afe565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555b5050565b6000546001600160a01b0316331461110a5760405162461bcd60e51b8152600401610afe90612d72565b60185460ff161561115d5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610afe565b601854610100900460ff166111b45760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610afe565b6018805460ff19166001179055600b54612710906111da906001600160a01b0316610f6f565b6111e5906005612d06565b6111ef9190612ce4565b601155600b546127109061120b906001600160a01b0316610f6f565b611216906005612d06565b6112209190612ce4565b601255565b600080546001600160a01b031633146112505760405162461bcd60e51b8152600401610afe90612d72565b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820184905285169063a9059cbb906044016020604051808303816000875af115801561129f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab19190612dfa565b60006112d0338484611909565b5060019392505050565b6000546001600160a01b031633146113045760405162461bcd60e51b8152600401610afe90612d72565b6009805461ffff8381166401000000000265ffff0000000019868316620100000263ffffffff199094169288169290921792909217161790556113478183612e17565b6009805461ffff92909216600160301b0267ffff00000000000019909216919091179055505050565b6000546001600160a01b0316331461139a5760405162461bcd60e51b8152600401610afe90612d72565b601455565b6000546001600160a01b031633146113c95760405162461bcd60e51b8152600401610afe90612d72565b600e80548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579061141290831515815260200190565b60405180910390a150565b6000546001600160a01b031633146114475760405162461bcd60e51b8152600401610afe90612d72565b600c80546001600160a01b039384166001600160a01b031991821617909155600d8054929093169116179055565b6000546001600160a01b0316331461149f5760405162461bcd60e51b8152600401610afe90612d72565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115089190612e3d565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611555573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115799190612e3d565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156115c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e89190612e3d565b90506001600160a01b03811661176157816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165a9190612e3d565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116cb9190612e3d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173c9190612e3d565b600b80546001600160a01b0319166001600160a01b039290921691909117905561177d565b600b80546001600160a01b0319166001600160a01b0383161790555b600a80546001600160a01b0319166001600160a01b038416908117909155610bbc903090600019611810565b6000546001600160a01b031633146117d35760405162461bcd60e51b8152600401610afe90612d72565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f1935050505015801561180d573d6000803e3d6000fd5b50565b6001600160a01b03831661185c5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610afe565b6001600160a01b0382166118a85760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610afe565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b03841661196f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610afe565b6001600160a01b0383166119d15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610afe565b60008211611a335760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610afe565b6001600160a01b0384166000908152600260205260408120548190819060ff1615611a615760019250611a8f565b6001600160a01b03861660009081526002602052604090205460ff1615611a8b5760019150611a8f565b5060015b611a998787611f29565b15611c615760185460ff16611af05760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610afe565b8280611af95750815b15611ba8576001600160a01b03871660009081526006602052604090205460ff16158015611b4057506001600160a01b03861660009081526006602052604090205460ff16155b15611ba857601654851115611ba85760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610afe565b600a546001600160a01b03878116911614801590611bc4575081155b15611c61576001600160a01b03861660009081526006602052604090205460ff16611c615760175485611bf688610f6f565b611c009190612e5a565b1115611c615760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610afe565b6001600160a01b03871660009081526005602052604090205460019060ff1680611ca357506001600160a01b03871660009081526005602052604090205460ff165b15611cac575060005b8215611da357600e5460ff16158015611ccc5750600e54610100900460ff165b15611d1b5742600f54601054611ce29190612e5a565b1015611d1b576000611cf330610f6f565b90506011548110611d19576012548110611d0c57506012545b611d14611ffe565b426010555b505b601854479062010000900460ff168015611d3c5750600e54610100900460ff165b15611da157611d4a8761224e565b60136000828254611d5b9190612e5a565b9250508190555060006014546103e8601354611d779190612ce4565b611d819190612d06565b905081811015611d9957611d94816123c6565b611d9f565b60006013555b505b505b611db288888884888888611dbe565b98975050505050505050565b601854600090610100900460ff16611e5257611dda88886123ef565b601854610100900460ff16158015611df75750611df78888611f29565b15611e525760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b6064820152608401610afe565b6001600160a01b03881660009081526001602052604081208054889290611e7a908490612d25565b909155506000905085611e8d5786611e99565b611e998986868a6124fb565b6001600160a01b038916600090815260016020526040812080549293508392909190611ec6908490612e5a565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f1291815260200190565b60405180910390a350600198975050505050505050565b600080546001600160a01b03848116911614801590611f5657506000546001600160a01b03838116911614155b8015611f6d57506000546001600160a01b03163214155b8015611f9257506001600160a01b03821660009081526007602052604090205460ff16155b8015611fb757506001600160a01b03831660009081526007602052604090205460ff16155b8015611fce57506001600160a01b03821661dead14155b8015611fe257506001600160a01b03821615155b8015611ff757506001600160a01b0383163014155b9392505050565b600e805460ff19166001179055601254604080516002808252606082018352600092602083019080368337019050509050308160008151811061204357612043612d3c565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561209c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c09190612e3d565b816001815181106120d3576120d3612d3c565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b81524792919091169063791ac9479061211d908690600090879030904290600401612eb6565b600060405180830381600087803b15801561213757600080fd5b505af115801561214b573d6000803e3d6000fd5b505050506000814761215d9190612d25565b60095490915060009061ffff600160301b820481169161218591620100009091041684612d06565b61218f9190612ce4565b600d546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d80600081146121e6576040519150601f19603f3d011682016040523d82523d6000602084013e6121eb565b606091505b505090508061223c5760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e7366657200006044820152606401610afe565b5050600e805460ff1916905550505050565b60408051600280825260608201835260009283929190602083019080368337019050509050308160008151811061228757612287612d3c565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156122e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123049190612e3d565b8160018151811061231757612317612d3c565b6001600160a01b039283166020918202929092010152600a5460405163d06ca61f60e01b8152600092919091169063d06ca61f9061235b9087908690600401612ef2565b600060405180830381865afa158015612378573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123a09190810190612f0b565b9050806001815181106123b5576123b5612d3c565b602002602001015192505050919050565b600e805460ff1916600117905580156123e2576123e28161268f565b50600e805460ff19169055565b601854610100900460ff16156124535760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610afe565b61245d8282611f29565b1580156124775750600b546001600160a01b038281169116145b156110dc576001600160a01b0382166000908152600760209081526040918290208054600160ff1990911681179091556018805461010061ff00199182168117909255600e8054909116909117905591519182527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325791015b60405180910390a15050565b6000808415612511575060085461ffff1661253b565b831561252a575060085462010000900461ffff1661253b565b50600854640100000000900461ffff165b600061271061254a8386612d06565b6125549190612ce4565b60095490915060009061ffff600160301b8204811691612575911684612d06565b61257f9190612ce4565b90508015612617576125918183612d25565b600c546001600160a01b0316600081815260016020526040812080549395509192849291906125c1908490612e5a565b92505081905550806001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161260d91815260200190565b60405180910390a3505b3060009081526001602052604081208054849290612636908490612e5a565b909155505060405182815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36126858183612e5a565b611db29086612d25565b6040805160028082526060820183526000926020830190803683375050600a54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156126f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271d9190612e3d565b8160008151811061273057612730612d3c565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061276457612764612d3c565b6001600160a01b039283166020918202929092010152600a5460405163b6f9de9560e01b815291169063b6f9de959084906127ac90600090869061dead904290600401612f9c565b6000604051808303818588803b1580156127c557600080fd5b505af11580156127d9573d6000803e3d6000fd5b50505050507f6fd378a9d8b7345c2e5b18229aaf1e39d32b177b501d0a0d26a0a858a23a962482826040516124ef929190612ef2565b600060208083528351808285015260005b8181101561283c57858101830151858201604001528201612820565b8181111561284e576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461180d57600080fd5b6000806040838503121561288c57600080fd5b823561289781612864565b946020939093013593505050565b6000806000606084860312156128ba57600080fd5b83356128c581612864565b925060208401356128d581612864565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612925576129256128e6565b604052919050565b600067ffffffffffffffff821115612947576129476128e6565b5060051b60200190565b600082601f83011261296257600080fd5b813560206129776129728361292d565b6128fc565b82815260059290921b8401810191818101908684111561299657600080fd5b8286015b848110156129b1578035835291830191830161299a565b509695505050505050565b600080604083850312156129cf57600080fd5b823567ffffffffffffffff808211156129e757600080fd5b818501915085601f8301126129fb57600080fd5b81356020612a0b6129728361292d565b82815260059290921b84018101918181019089841115612a2a57600080fd5b948201945b83861015612a51578535612a4281612864565b82529482019490820190612a2f565b96505086013592505080821115612a6757600080fd5b50612a7485828601612951565b9150509250929050565b801515811461180d57600080fd5b600060208284031215612a9e57600080fd5b8135611ff781612a7e565b803561ffff81168114612abb57600080fd5b919050565b600080600060608486031215612ad557600080fd5b612ade84612aa9565b9250612aec60208501612aa9565b9150612afa60408501612aa9565b90509250925092565b600080600080600060a08688031215612b1b57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215612b5157600080fd5b8235612b5c81612864565b91506020830135612b6c81612a7e565b809150509250929050565b600060208284031215612b8957600080fd5b8135611ff781612864565b600060208284031215612ba657600080fd5b5035919050565b60008060408385031215612bc057600080fd5b8235612bcb81612864565b91506020830135612b6c81612864565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612c2c578160001904821115612c1257612c12612bdb565b80851615612c1f57918102915b93841c9390800290612bf6565b509250929050565b600082612c43575060016109dc565b81612c50575060006109dc565b8160018114612c665760028114612c7057612c8c565b60019150506109dc565b60ff841115612c8157612c81612bdb565b50506001821b6109dc565b5060208310610133831016604e8410600b8410161715612caf575081810a6109dc565b612cb98383612bf1565b8060001904821115612ccd57612ccd612bdb565b029392505050565b6000611ff760ff841683612c34565b600082612d0157634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612d2057612d20612bdb565b500290565b600082821015612d3757612d37612bdb565b500390565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff811415612d6957612d69612bdb565b60010192915050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b600060208284031215612e0c57600080fd5b8151611ff781612a7e565b600061ffff808316818516808303821115612e3457612e34612bdb565b01949350505050565b600060208284031215612e4f57600080fd5b8151611ff781612864565b60008219821115612e6d57612e6d612bdb565b500190565b600081518084526020808501945080840160005b83811015612eab5781516001600160a01b031687529582019590820190600101612e86565b509495945050505050565b85815284602082015260a060408201526000612ed560a0830186612e72565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000610ab16040830184612e72565b60006020808385031215612f1e57600080fd5b825167ffffffffffffffff811115612f3557600080fd5b8301601f81018513612f4657600080fd5b8051612f546129728261292d565b81815260059190911b82018301908381019087831115612f7357600080fd5b928401925b82841015612f9157835182529284019290840190612f78565b979650505050505050565b848152608060208201526000612fb56080830186612e72565b6001600160a01b0394909416604083015250606001529291505056fea2646970667358221220682616b2c00356b5af36d52f55ab5a50f45d8e339e6c4a0965332c6fa2492d2864736f6c634300080c0033

Deployed Bytecode

0x6080604052600436106102e85760003560e01c8063590ffdce11610190578063b1b08f71116100dc578063dd62ed3e11610095578063ee5d9c2d1161006f578063ee5d9c2d1461093a578063f94aa1b41461094f578063fcbab4ab14610996578063fdb78c0e146109ac57600080fd5b8063dd62ed3e146108be578063e4fcfd1814610904578063eafb5a3c1461091a57600080fd5b8063b1b08f71146104cd578063b3d514fb146104cd578063b74f7eb5146107f6578063cab5ebea14610816578063cf84770614610836578063d3f6a1571461089e57600080fd5b806380c581d11161014957806395d89b411161012357806395d89b411461076857806398077fa114610796578063a9059cbb146107b6578063aa22b172146107d657600080fd5b806380c581d114610715578063893d20e8146107355780638a8c523c1461075357600080fd5b8063590ffdce146106525780635cce86cd146106725780636053a0e3146106ab5780636ebd0078146106cb57806370a08231146106e0578063715018a61461070057600080fd5b80632b28fc7a1161024f57806336fddb04116102085780634ada218b116101e25780634ada218b146105c05780634fb2e45d146105da5780634fbee193146105fa57806350a8e0161461063357600080fd5b806336fddb041461056b5780633bb8ef681461058b578063452ed4f1146105a057600080fd5b80632b28fc7a146104cd5780632e8fa821146104e35780632f83f7bf146104f9578063313ce5671461050f57806332cde6641461052b57806334cd82601461054b57600080fd5b80630fa604e4116102a15780630fa604e41461042c578063163140a61461044157806318160ddd1461045657806323b872dd1461046b5780632610eaca1461048b57806329370cc6146104ad57600080fd5b806303fd2a45146102f45780630445b66714610327578063069d955f1461034b57806306fdde03146103a15780630758d924146103dc578063095ea7b3146103fc57600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061030a61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561033357600080fd5b5061033d60115481565b60405190815260200161031e565b34801561035757600080fd5b5060085461037c9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161031e565b3480156103ad57600080fd5b50604080518082019091526009815268105d5d1bdb585d195960ba1b60208201525b60405161031e919061280f565b3480156103e857600080fd5b50600a5461030a906001600160a01b031681565b34801561040857600080fd5b5061041c610417366004612879565b6109cb565b604051901515815260200161031e565b34801561043857600080fd5b5061033d6109e2565b34801561044d57600080fd5b5060135461033d565b34801561046257600080fd5b5061033d610a02565b34801561047757600080fd5b5061041c6104863660046128a5565b610a41565b34801561049757600080fd5b506104ab6104a63660046129bc565b610ab9565b005b3480156104b957600080fd5b506104ab6104c8366004612a8c565b610bc1565b3480156104d957600080fd5b5061033d6107d081565b3480156104ef57600080fd5b5061033d60125481565b34801561050557600080fd5b5061033d60135481565b34801561051b57600080fd5b506040516012815260200161031e565b34801561053757600080fd5b506104ab610546366004612ac0565b610c07565b34801561055757600080fd5b506104ab610566366004612b03565b610cea565b34801561057757600080fd5b506104ab610586366004612b3e565b610d83565b34801561059757600080fd5b5060145461033d565b3480156105ac57600080fd5b50600b5461030a906001600160a01b031681565b3480156105cc57600080fd5b5060185461041c9060ff1681565b3480156105e657600080fd5b506104ab6105f5366004612b77565b610dd8565b34801561060657600080fd5b5061041c610615366004612b77565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561063f57600080fd5b5060185461041c90610100900460ff1681565b34801561065e57600080fd5b506104ab61066d366004612b3e565b610eff565b34801561067e57600080fd5b5061041c61068d366004612b77565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156106b757600080fd5b5060185461041c9062010000900460ff1681565b3480156106d757600080fd5b5061033d610f54565b3480156106ec57600080fd5b5061033d6106fb366004612b77565b610f6f565b34801561070c57600080fd5b506104ab610f8a565b34801561072157600080fd5b506104ab610730366004612b3e565b611009565b34801561074157600080fd5b506000546001600160a01b031661030a565b34801561075f57600080fd5b506104ab6110e0565b34801561077457600080fd5b50604080518082019091526005815264244155544f60d81b60208201526103cf565b3480156107a257600080fd5b5061041c6107b13660046128a5565b611225565b3480156107c257600080fd5b5061041c6107d1366004612879565b6112c3565b3480156107e257600080fd5b506104ab6107f1366004612ac0565b6112da565b34801561080257600080fd5b506104ab610811366004612b94565b611370565b34801561082257600080fd5b506104ab610831366004612a8c565b61139f565b34801561084257600080fd5b506009546108709061ffff808216916201000081048216916401000000008204811691600160301b90041684565b6040805161ffff9586168152938516602085015291841691830191909152909116606082015260800161031e565b3480156108aa57600080fd5b506104ab6108b9366004612bad565b61141d565b3480156108ca57600080fd5b5061033d6108d9366004612bad565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561091057600080fd5b5061033d600f5481565b34801561092657600080fd5b506104ab610935366004612b77565b611475565b34801561094657600080fd5b506104ab6117a9565b34801561095b57600080fd5b50600c54600d54610976916001600160a01b03908116911682565b604080516001600160a01b0393841681529290911660208301520161031e565b3480156109a257600080fd5b5061033d60145481565b3480156109b857600080fd5b50600e5461041c90610100900460ff1681565b60006109d8338484611810565b5060015b92915050565b60006109f06012600a612cd5565b6017546109fd9190612ce4565b905090565b6000610a106012600a612cd5565b610a1e90633b9aca00612d06565b610a2757600080fd5b610a336012600a612cd5565b6109fd90633b9aca00612d06565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610aa6576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610aa0908490612d25565b90915550505b610ab1848484611909565b949350505050565b8051825114610b075760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b60448201526064015b60405180910390fd5b60005b82518160ff161015610bbc57818160ff1681518110610b2b57610b2b612d3c565b6020026020010151610b3c33610f6f565b1015610b4757600080fd5b610ba933848360ff1681518110610b6057610b60612d3c565b60200260200101516012600a610b769190612cd5565b858560ff1681518110610b8b57610b8b612d3c565b6020026020010151610b9d9190612d06565b60008060006001611dbe565b5080610bb481612d52565b915050610b0a565b505050565b6000546001600160a01b03163314610beb5760405162461bcd60e51b8152600401610afe90612d72565b60188054911515620100000262ff000019909216919091179055565b6000546001600160a01b03163314610c315760405162461bcd60e51b8152600401610afe90612d72565b6107d08361ffff1611158015610c4d57506107d08261ffff1611155b8015610c5f57506107d08161ffff1611155b610cab5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610afe565b6008805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6000546001600160a01b03163314610d145760405162461bcd60e51b8152600401610afe90612d72565b8385610d226012600a612cd5565b610d3090633b9aca00612d06565b610d3a9190612d06565b610d449190612ce4565b6011558183610d556012600a612cd5565b610d6390633b9aca00612d06565b610d6d9190612d06565b610d779190612ce4565b601255600f5550505050565b6000546001600160a01b03163314610dad5760405162461bcd60e51b8152600401610afe90612d72565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610e025760405162461bcd60e51b8152600401610afe90612d72565b6001600160a01b038116610e285760405162461bcd60e51b8152600401610afe90612d9d565b6001600160a01b03811661dead1415610e535760405162461bcd60e51b8152600401610afe90612d9d565b60008054610e6c916001600160a01b0390911690610eff565b610e77816001610eff565b60008054610e8d906001600160a01b0316610f6f565b1115610eb457600054610eb2906001600160a01b031682610ead82610f6f565b611909565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b03163314610f295760405162461bcd60e51b8152600401610afe90612d72565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000610f626012600a612cd5565b6016546109fd9190612ce4565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b03163314610fb45760405162461bcd60e51b8152600401610afe90612d72565b60008054610fcd916001600160a01b0390911690610eff565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b031633146110335760405162461bcd60e51b8152600401610afe90612d72565b8061105a57506001600160a01b03166000908152600260205260409020805460ff19169055565b600354156110b4576203f480600354426110749190612d25565b116110b45760405162461bcd60e51b815260206004820152601060248201526f332044617920636f6f6c646f776e2e2160801b6044820152606401610afe565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555b5050565b6000546001600160a01b0316331461110a5760405162461bcd60e51b8152600401610afe90612d72565b60185460ff161561115d5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610afe565b601854610100900460ff166111b45760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610afe565b6018805460ff19166001179055600b54612710906111da906001600160a01b0316610f6f565b6111e5906005612d06565b6111ef9190612ce4565b601155600b546127109061120b906001600160a01b0316610f6f565b611216906005612d06565b6112209190612ce4565b601255565b600080546001600160a01b031633146112505760405162461bcd60e51b8152600401610afe90612d72565b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820184905285169063a9059cbb906044016020604051808303816000875af115801561129f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab19190612dfa565b60006112d0338484611909565b5060019392505050565b6000546001600160a01b031633146113045760405162461bcd60e51b8152600401610afe90612d72565b6009805461ffff8381166401000000000265ffff0000000019868316620100000263ffffffff199094169288169290921792909217161790556113478183612e17565b6009805461ffff92909216600160301b0267ffff00000000000019909216919091179055505050565b6000546001600160a01b0316331461139a5760405162461bcd60e51b8152600401610afe90612d72565b601455565b6000546001600160a01b031633146113c95760405162461bcd60e51b8152600401610afe90612d72565b600e80548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579061141290831515815260200190565b60405180910390a150565b6000546001600160a01b031633146114475760405162461bcd60e51b8152600401610afe90612d72565b600c80546001600160a01b039384166001600160a01b031991821617909155600d8054929093169116179055565b6000546001600160a01b0316331461149f5760405162461bcd60e51b8152600401610afe90612d72565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115089190612e3d565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611555573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115799190612e3d565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156115c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e89190612e3d565b90506001600160a01b03811661176157816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165a9190612e3d565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116cb9190612e3d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173c9190612e3d565b600b80546001600160a01b0319166001600160a01b039290921691909117905561177d565b600b80546001600160a01b0319166001600160a01b0383161790555b600a80546001600160a01b0319166001600160a01b038416908117909155610bbc903090600019611810565b6000546001600160a01b031633146117d35760405162461bcd60e51b8152600401610afe90612d72565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f1935050505015801561180d573d6000803e3d6000fd5b50565b6001600160a01b03831661185c5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610afe565b6001600160a01b0382166118a85760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610afe565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b03841661196f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610afe565b6001600160a01b0383166119d15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610afe565b60008211611a335760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610afe565b6001600160a01b0384166000908152600260205260408120548190819060ff1615611a615760019250611a8f565b6001600160a01b03861660009081526002602052604090205460ff1615611a8b5760019150611a8f565b5060015b611a998787611f29565b15611c615760185460ff16611af05760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610afe565b8280611af95750815b15611ba8576001600160a01b03871660009081526006602052604090205460ff16158015611b4057506001600160a01b03861660009081526006602052604090205460ff16155b15611ba857601654851115611ba85760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610afe565b600a546001600160a01b03878116911614801590611bc4575081155b15611c61576001600160a01b03861660009081526006602052604090205460ff16611c615760175485611bf688610f6f565b611c009190612e5a565b1115611c615760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610afe565b6001600160a01b03871660009081526005602052604090205460019060ff1680611ca357506001600160a01b03871660009081526005602052604090205460ff165b15611cac575060005b8215611da357600e5460ff16158015611ccc5750600e54610100900460ff165b15611d1b5742600f54601054611ce29190612e5a565b1015611d1b576000611cf330610f6f565b90506011548110611d19576012548110611d0c57506012545b611d14611ffe565b426010555b505b601854479062010000900460ff168015611d3c5750600e54610100900460ff165b15611da157611d4a8761224e565b60136000828254611d5b9190612e5a565b9250508190555060006014546103e8601354611d779190612ce4565b611d819190612d06565b905081811015611d9957611d94816123c6565b611d9f565b60006013555b505b505b611db288888884888888611dbe565b98975050505050505050565b601854600090610100900460ff16611e5257611dda88886123ef565b601854610100900460ff16158015611df75750611df78888611f29565b15611e525760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b6064820152608401610afe565b6001600160a01b03881660009081526001602052604081208054889290611e7a908490612d25565b909155506000905085611e8d5786611e99565b611e998986868a6124fb565b6001600160a01b038916600090815260016020526040812080549293508392909190611ec6908490612e5a565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f1291815260200190565b60405180910390a350600198975050505050505050565b600080546001600160a01b03848116911614801590611f5657506000546001600160a01b03838116911614155b8015611f6d57506000546001600160a01b03163214155b8015611f9257506001600160a01b03821660009081526007602052604090205460ff16155b8015611fb757506001600160a01b03831660009081526007602052604090205460ff16155b8015611fce57506001600160a01b03821661dead14155b8015611fe257506001600160a01b03821615155b8015611ff757506001600160a01b0383163014155b9392505050565b600e805460ff19166001179055601254604080516002808252606082018352600092602083019080368337019050509050308160008151811061204357612043612d3c565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561209c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c09190612e3d565b816001815181106120d3576120d3612d3c565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b81524792919091169063791ac9479061211d908690600090879030904290600401612eb6565b600060405180830381600087803b15801561213757600080fd5b505af115801561214b573d6000803e3d6000fd5b505050506000814761215d9190612d25565b60095490915060009061ffff600160301b820481169161218591620100009091041684612d06565b61218f9190612ce4565b600d546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d80600081146121e6576040519150601f19603f3d011682016040523d82523d6000602084013e6121eb565b606091505b505090508061223c5760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e7366657200006044820152606401610afe565b5050600e805460ff1916905550505050565b60408051600280825260608201835260009283929190602083019080368337019050509050308160008151811061228757612287612d3c565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156122e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123049190612e3d565b8160018151811061231757612317612d3c565b6001600160a01b039283166020918202929092010152600a5460405163d06ca61f60e01b8152600092919091169063d06ca61f9061235b9087908690600401612ef2565b600060405180830381865afa158015612378573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123a09190810190612f0b565b9050806001815181106123b5576123b5612d3c565b602002602001015192505050919050565b600e805460ff1916600117905580156123e2576123e28161268f565b50600e805460ff19169055565b601854610100900460ff16156124535760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610afe565b61245d8282611f29565b1580156124775750600b546001600160a01b038281169116145b156110dc576001600160a01b0382166000908152600760209081526040918290208054600160ff1990911681179091556018805461010061ff00199182168117909255600e8054909116909117905591519182527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325791015b60405180910390a15050565b6000808415612511575060085461ffff1661253b565b831561252a575060085462010000900461ffff1661253b565b50600854640100000000900461ffff165b600061271061254a8386612d06565b6125549190612ce4565b60095490915060009061ffff600160301b8204811691612575911684612d06565b61257f9190612ce4565b90508015612617576125918183612d25565b600c546001600160a01b0316600081815260016020526040812080549395509192849291906125c1908490612e5a565b92505081905550806001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161260d91815260200190565b60405180910390a3505b3060009081526001602052604081208054849290612636908490612e5a565b909155505060405182815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36126858183612e5a565b611db29086612d25565b6040805160028082526060820183526000926020830190803683375050600a54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156126f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271d9190612e3d565b8160008151811061273057612730612d3c565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061276457612764612d3c565b6001600160a01b039283166020918202929092010152600a5460405163b6f9de9560e01b815291169063b6f9de959084906127ac90600090869061dead904290600401612f9c565b6000604051808303818588803b1580156127c557600080fd5b505af11580156127d9573d6000803e3d6000fd5b50505050507f6fd378a9d8b7345c2e5b18229aaf1e39d32b177b501d0a0d26a0a858a23a962482826040516124ef929190612ef2565b600060208083528351808285015260005b8181101561283c57858101830151858201604001528201612820565b8181111561284e576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461180d57600080fd5b6000806040838503121561288c57600080fd5b823561289781612864565b946020939093013593505050565b6000806000606084860312156128ba57600080fd5b83356128c581612864565b925060208401356128d581612864565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612925576129256128e6565b604052919050565b600067ffffffffffffffff821115612947576129476128e6565b5060051b60200190565b600082601f83011261296257600080fd5b813560206129776129728361292d565b6128fc565b82815260059290921b8401810191818101908684111561299657600080fd5b8286015b848110156129b1578035835291830191830161299a565b509695505050505050565b600080604083850312156129cf57600080fd5b823567ffffffffffffffff808211156129e757600080fd5b818501915085601f8301126129fb57600080fd5b81356020612a0b6129728361292d565b82815260059290921b84018101918181019089841115612a2a57600080fd5b948201945b83861015612a51578535612a4281612864565b82529482019490820190612a2f565b96505086013592505080821115612a6757600080fd5b50612a7485828601612951565b9150509250929050565b801515811461180d57600080fd5b600060208284031215612a9e57600080fd5b8135611ff781612a7e565b803561ffff81168114612abb57600080fd5b919050565b600080600060608486031215612ad557600080fd5b612ade84612aa9565b9250612aec60208501612aa9565b9150612afa60408501612aa9565b90509250925092565b600080600080600060a08688031215612b1b57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215612b5157600080fd5b8235612b5c81612864565b91506020830135612b6c81612a7e565b809150509250929050565b600060208284031215612b8957600080fd5b8135611ff781612864565b600060208284031215612ba657600080fd5b5035919050565b60008060408385031215612bc057600080fd5b8235612bcb81612864565b91506020830135612b6c81612864565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612c2c578160001904821115612c1257612c12612bdb565b80851615612c1f57918102915b93841c9390800290612bf6565b509250929050565b600082612c43575060016109dc565b81612c50575060006109dc565b8160018114612c665760028114612c7057612c8c565b60019150506109dc565b60ff841115612c8157612c81612bdb565b50506001821b6109dc565b5060208310610133831016604e8410600b8410161715612caf575081810a6109dc565b612cb98383612bf1565b8060001904821115612ccd57612ccd612bdb565b029392505050565b6000611ff760ff841683612c34565b600082612d0157634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612d2057612d20612bdb565b500290565b600082821015612d3757612d37612bdb565b500390565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff811415612d6957612d69612bdb565b60010192915050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b600060208284031215612e0c57600080fd5b8151611ff781612a7e565b600061ffff808316818516808303821115612e3457612e34612bdb565b01949350505050565b600060208284031215612e4f57600080fd5b8151611ff781612864565b60008219821115612e6d57612e6d612bdb565b500190565b600081518084526020808501945080840160005b83811015612eab5781516001600160a01b031687529582019590820190600101612e86565b509495945050505050565b85815284602082015260a060408201526000612ed560a0830186612e72565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000610ab16040830184612e72565b60006020808385031215612f1e57600080fd5b825167ffffffffffffffff811115612f3557600080fd5b8301601f81018513612f4657600080fd5b8051612f546129728261292d565b81815260059190911b82018301908381019087831115612f7357600080fd5b928401925b82841015612f9157835182529284019290840190612f78565b979650505050505050565b848152608060208201526000612fb56080830186612e72565b6001600160a01b0394909416604083015250606001529291505056fea2646970667358221220682616b2c00356b5af36d52f55ab5a50f45d8e339e6c4a0965332c6fa2492d2864736f6c634300080c0033

Deployed Bytecode Sourcemap

3817:19565:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5372:73;;;;;;;;;;;;5403:42;5372:73;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;5372:73:0;;;;;;;;5887:28;;;;;;;;;;;;;;;;;;;368:25:1;;;356:2;341:18;5887:28:0;222:177:1;4859:111:0;;;;;;;;;;-1:-1:-1;4859:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;610:6:1;643:15;;;625:34;;695:15;;;690:2;675:18;;668:43;747:15;;727:18;;;720:43;;;;588:2;573:18;4859:111:0;404:365:1;10217:80:0;;;;;;;;;;-1:-1:-1;10289:5:0;;;;;;;;;;;;-1:-1:-1;;;10289:5:0;;;;10217:80;;;;;;;:::i;5311:26::-;;;;;;;;;;-1:-1:-1;5311:26:0;;;;-1:-1:-1;;;;;5311:26:0;;;10827:159;;;;;;;;;;-1:-1:-1;10827:159:0;;;;;:::i;:::-;;:::i;:::-;;;2222:14:1;;2215:22;2197:41;;2185:2;2170:18;10827:159:0;2057:187:1;13927:112:0;;;;;;;;;;;;;:::i;14049:::-;;;;;;;;;;-1:-1:-1;14132:21:0;;14049:112;;9920:115;;;;;;;;;;;;;:::i;11316:306::-;;;;;;;;;;-1:-1:-1;11316:306:0;;;;;:::i;:::-;;:::i;21421:408::-;;;;;;;;;;-1:-1:-1;21421:408:0;;;;;:::i;:::-;;:::i;:::-;;14316:113;;;;;;;;;;-1:-1:-1;14316:113:0;;;;;:::i;:::-;;:::i;5108:42::-;;;;;;;;;;;;5146:4;5108:42;;5922:25;;;;;;;;;;;;;;;;5960:36;;;;;;;;;;;;;;;;10041:80;;;;;;;;;;-1:-1:-1;10041:80:0;;4537:2;5708:36:1;;5696:2;5681:18;10041:80:0;5566:184:1;12599:397:0;;;;;;;;;;-1:-1:-1;12599:397:0;;;;;:::i;:::-;;:::i;14980:338::-;;;;;;;;;;-1:-1:-1;14980:338:0;;;;;:::i;:::-;;:::i;13252:140::-;;;;;;;;;;-1:-1:-1;13252:140:0;;;;;:::i;:::-;;:::i;14169:133::-;;;;;;;;;;-1:-1:-1;14261:33:0;;14169:133;;5344:21;;;;;;;;;;-1:-1:-1;5344:21:0;;;;-1:-1:-1;;;;;5344:21:0;;;6202:34;;;;;;;;;;-1:-1:-1;6202:34:0;;;;;;;;8778:588;;;;;;;;;;-1:-1:-1;8778:588:0;;;;;:::i;:::-;;:::i;13538:125::-;;;;;;;;;;-1:-1:-1;13538:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;13627:28:0;13603:4;13627:28;;;:19;:28;;;;;;;;;13538:125;6243:36;;;;;;;;;;-1:-1:-1;6243:36:0;;;;;;;;;;;13671:134;;;;;;;;;;-1:-1:-1;13671:134:0;;;;;:::i;:::-;;:::i;13400:130::-;;;;;;;;;;-1:-1:-1;13400:130:0;;;;;:::i;:::-;-1:-1:-1;;;;;13492:30:0;13468:4;13492:30;;;:21;:30;;;;;;;;;13400:130;6286:34;;;;;;;;;;-1:-1:-1;6286:34:0;;;;;;;;;;;13813:106;;;;;;;;;;;;;:::i;10529:117::-;;;;;;;;;;-1:-1:-1;10529:117:0;;;;;:::i;:::-;;:::i;9374:193::-;;;;;;;;;;;;;:::i;12178:407::-;;;;;;;;;;-1:-1:-1;12178:407:0;;;;;:::i;:::-;;:::i;10303:79::-;;;;;;;;;;-1:-1:-1;10355:7:0;10373:6;-1:-1:-1;;;;;10373:6:0;10303:79;;20775:332;;;;;;;;;;;;;:::i;10127:84::-;;;;;;;;;;-1:-1:-1;10201:7:0;;;;;;;;;;;;-1:-1:-1;;;10201:7:0;;;;10127:84;;21238:175;;;;;;;;;;-1:-1:-1;21238:175:0;;;;;:::i;:::-;;:::i;10654:165::-;;;;;;;;;;-1:-1:-1;10654:165:0;;;;;:::i;:::-;;:::i;13008:230::-;;;;;;;;;;-1:-1:-1;13008:230:0;;;;;:::i;:::-;;:::i;14437:197::-;;;;;;;;;;-1:-1:-1;14437:197:0;;;;;:::i;:::-;;:::i;15500:164::-;;;;;;;;;;-1:-1:-1;15500:164:0;;;;;:::i;:::-;;:::i;4979:120::-;;;;;;;;;;-1:-1:-1;4979:120:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4979:120:0;;;;;;;;;7768:6:1;7801:15;;;7783:34;;7853:15;;;7848:2;7833:18;;7826:43;7905:15;;;7885:18;;;7878:43;;;;7957:15;;;7952:2;7937:18;;7930:43;7745:3;7730:19;4979:120:0;7535:444:1;15326:166:0;;;;;;;;;;-1:-1:-1;15326:166:0;;;;;:::i;:::-;;:::i;10388:133::-;;;;;;;;;;-1:-1:-1;10388:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10490:19:0;;;10472:7;10490:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10388:133;5805:44;;;;;;;;;;;;;;;;11630:540;;;;;;;;;;-1:-1:-1;11630:540:0;;;;;:::i;:::-;;:::i;21115:113::-;;;;;;;;;;;;;:::i;5544:184::-;;;;;;;;;;-1:-1:-1;5544:184:0;;;;;;-1:-1:-1;;;;;5544:184:0;;;;;;;;;;;-1:-1:-1;;;;;9024:15:1;;;9006:34;;9076:15;;;;9071:2;9056:18;;9049:43;8941:18;5544:184:0;8778:320:1;6003:53:0;;;;;;;;;;;;;;;;5759:39;;;;;;;;;;-1:-1:-1;5759:39:0;;;;;;;;;;;10827:159;10902:4;10919:37;10928:10;10940:7;10949:6;10919:8;:37::i;:::-;-1:-1:-1;10974:4:0;10827:159;;;;;:::o;13927:112::-;13972:7;14017:13;4537:2;14017;:13;:::i;:::-;13999:14;;:32;;;;:::i;:::-;13992:39;;13927:112;:::o;9920:115::-;9975:7;4600:13;4537:2;4600;:13;:::i;:::-;4583:30;;4382:13;4583:30;:::i;:::-;9986:31;;10006:8;;;9986:31;4600:13;4537:2;4600;:13;:::i;:::-;4583:30;;4382:13;4583:30;:::i;11316:306::-;-1:-1:-1;;;;;11437:19:0;;11416:4;11437:19;;;:11;:19;;;;;;;;11457:10;11437:31;;;;;;;;-1:-1:-1;;11437:52:0;11433:126;;-1:-1:-1;;;;;11506:19:0;;;;;;:11;:19;;;;;;;;11526:10;11506:31;;;;;;;:41;;11541:6;;11506:19;:41;;11541:6;;11506:41;:::i;:::-;;;;-1:-1:-1;;11433:126:0;11578:36;11588:6;11596:9;11607:6;11578:9;:36::i;:::-;11571:43;11316:306;-1:-1:-1;;;;11316:306:0:o;21421:408::-;21546:7;:14;21527:8;:15;:33;21519:67;;;;-1:-1:-1;;;21519:67:0;;11345:2:1;21519:67:0;;;11327:21:1;11384:2;11364:18;;;11357:30;-1:-1:-1;;;11403:18:1;;;11396:51;11464:18;;21519:67:0;;;;;;;;;21602:7;21597:225;21619:8;:15;21615:1;:19;;;21597:225;;;21689:7;21697:1;21689:10;;;;;;;;;;:::i;:::-;;;;;;;21664:21;21674:10;21664:9;:21::i;:::-;:35;;21656:44;;;;;;21715:95;21733:10;21745:8;21754:1;21745:11;;;;;;;;;;:::i;:::-;;;;;;;4537:2;21769;:13;;;;:::i;:::-;21758:7;21766:1;21758:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;21784:5;21791;21798;21805:4;21715:17;:95::i;:::-;-1:-1:-1;21636:3:0;;;;:::i;:::-;;;;21597:225;;;;21421:408;;:::o;14316:113::-;6763:6;;-1:-1:-1;;;;;6763:6:0;6773:10;6763:20;6755:50;;;;-1:-1:-1;;;6755:50:0;;;;;;;:::i;:::-;14386:14:::1;:25:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;14386:25:0;;::::1;::::0;;;::::1;::::0;;14316:113::o;12599:397::-;6763:6;;-1:-1:-1;;;;;6763:6:0;6773:10;6763:20;6755:50;;;;-1:-1:-1;;;6755:50:0;;;;;;;:::i;:::-;5146:4:::1;12706:6;:21;;;;:65;;;;;5196:4;12748:7;:23;;;;12706:65;:117;;;;;5250:4;12792:11;:31;;;;12706:117;12698:170;;;::::0;-1:-1:-1;;;12698:170:0;;12353:2:1;12698:170:0::1;::::0;::::1;12335:21:1::0;12392:2;12372:18;;;12365:30;12431:25;12411:18;;;12404:53;12474:18;;12698:170:0::1;12151:347:1::0;12698:170:0::1;12879:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;12915:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;12953:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;12599:397::o;14980:338::-;6763:6;;-1:-1:-1;;;;;6763:6:0;6773:10;6763:20;6755:50;;;;-1:-1:-1;;;6755:50:0;;;;;;;:::i;:::-;15194:16;15174;4600:13:::1;4537:2;4600;:13;:::i;:::-;4583:30;::::0;4382:13:::1;4583:30;:::i;:::-;15164:26;;;;:::i;:::-;15163:47;;;;:::i;:::-;15147:13;:63:::0;15262:13;15245;4600::::1;4537:2;4600;:13;:::i;:::-;4583:30;::::0;4382:13:::1;4583:30;:::i;:::-;15235:23;;;;:::i;:::-;15234:41;;;;:::i;:::-;15221:10;:54:::0;15286:17:::1;:24:::0;-1:-1:-1;;;;14980:338:0:o;13252:140::-;6763:6;;-1:-1:-1;;;;;6763:6:0;6773:10;6763:20;6755:50;;;;-1:-1:-1;;;6755:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13344:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;13344:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13252:140::o;8778:588::-;6763:6;;-1:-1:-1;;;;;6763:6:0;6773:10;6763:20;6755:50;;;;-1:-1:-1;;;6755:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8857:22:0;::::1;8849:96;;;;-1:-1:-1::0;;;8849:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8964:16:0;::::1;5403:42;8964:16;;8956:90;;;;-1:-1:-1::0;;;8956:90:0::1;;;;;;;:::i;:::-;9077:6;::::0;;9057:34:::1;::::0;-1:-1:-1;;;;;9077:6:0;;::::1;::::0;9057:19:::1;:34::i;:::-;9102:35;9122:8;9132:4;9102:19;:35::i;:::-;9181:1;9171:6:::0;;9161:17:::1;::::0;-1:-1:-1;;;;;9171:6:0::1;9161:9;:17::i;:::-;:21;9158:99;;;9209:6;::::0;9199:46:::1;::::0;-1:-1:-1;;;;;9209:6:0::1;9217:8:::0;9227:17:::1;9209:6:::0;9227:9:::1;:17::i;:::-;9199:9;:46::i;:::-;;9158:99;9277:6;:17:::0;;-1:-1:-1;;;;;;9277:17:0::1;-1:-1:-1::0;;;;;9277:17:0;::::1;::::0;;::::1;::::0;;9310:38:::1;::::0;9277:17;;;;9310:38:::1;::::0;9277:6;9310:38:::1;8778:588:::0;:::o;13671:134::-;6763:6;;-1:-1:-1;;;;;6763:6:0;6773:10;6763:20;6755:50;;;;-1:-1:-1;;;6755:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13759:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;13759:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13671:134::o;13813:106::-;13854:7;13897:13;4537:2;13897;:13;:::i;:::-;13881:12;;:30;;;;:::i;10529:117::-;-1:-1:-1;;;;;10622:16:0;10595:7;10622:16;;;:7;:16;;;;;;;10529:117::o;9374:193::-;6763:6;;-1:-1:-1;;;;;6763:6:0;6773:10;6763:20;6755:50;;;;-1:-1:-1;;;6755:50:0;;;;;;;:::i;:::-;9459:6:::1;::::0;;9439:34:::1;::::0;-1:-1:-1;;;;;9459:6:0;;::::1;::::0;9439:19:::1;:34::i;:::-;9501:1;9484:19:::0;;-1:-1:-1;;;;;;9484:19:0::1;::::0;;9519:40:::1;::::0;9501:1;;9519:40:::1;::::0;9501:1;;9519:40:::1;9374:193::o:0;12178:407::-;6763:6;;-1:-1:-1;;;;;6763:6:0;6773:10;6763:20;6755:50;;;;-1:-1:-1;;;6755:50:0;;;;;;;:::i;:::-;12259:16;12255:323:::1;;-1:-1:-1::0;;;;;;12292:13:0::1;12308:5;12292:13:::0;;;:7:::1;:13;::::0;;;;:21;;-1:-1:-1;;12292:21:0::1;::::0;;12178:407::o;12255:323::-:1;12350:17;::::0;:22;12346:136:::1;;12439:6;12419:17;;12401:15;:35;;;;:::i;:::-;:44;12393:73;;;::::0;-1:-1:-1;;;12393:73:0;;13135:2:1;12393:73:0::1;::::0;::::1;13117:21:1::0;13174:2;13154:18;;;13147:30;-1:-1:-1;;;13193:18:1;;;13186:46;13249:18;;12393:73:0::1;12933:340:1::0;12393:73:0::1;-1:-1:-1::0;;;;;12496:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;:20;;-1:-1:-1;;12496:20:0::1;12512:4;12496:20;::::0;;12551:15:::1;12531:17;:35:::0;12255:323:::1;12178:407:::0;;:::o;20775:332::-;6763:6;;-1:-1:-1;;;;;6763:6:0;6773:10;6763:20;6755:50;;;;-1:-1:-1;;;6755:50:0;;;;;;;:::i;:::-;20837:14:::1;::::0;::::1;;20836:15;20828:52;;;::::0;-1:-1:-1;;;20828:52:0;;13480:2:1;20828:52:0::1;::::0;::::1;13462:21:1::0;13519:2;13499:18;;;13492:30;13558:26;13538:18;;;13531:54;13602:18;;20828:52:0::1;13278:348:1::0;20828:52:0::1;20899:16;::::0;::::1;::::0;::::1;;;20891:53;;;::::0;-1:-1:-1;;;20891:53:0;;13833:2:1;20891:53:0::1;::::0;::::1;13815:21:1::0;13872:2;13852:18;;;13845:30;13911:26;13891:18;;;13884:54;13955:18;;20891:53:0::1;13631:348:1::0;20891:53:0::1;20965:14;:21:::0;;-1:-1:-1;;20965:21:0::1;20982:4;20965:21;::::0;;21024:6:::1;::::0;21039:5:::1;::::0;21014:17:::1;::::0;-1:-1:-1;;;;;21024:6:0::1;21014:9;:17::i;:::-;:21;::::0;21034:1:::1;21014:21;:::i;:::-;21013:31;;;;:::i;:::-;20997:13;:47:::0;21079:6:::1;::::0;21094:5:::1;::::0;21069:17:::1;::::0;-1:-1:-1;;;;;21079:6:0::1;21069:9;:17::i;:::-;:21;::::0;21089:1:::1;21069:21;:::i;:::-;21068:31;;;;:::i;:::-;21055:10;:44:::0;20775:332::o;21238:175::-;21339:10;6763:6;;-1:-1:-1;;;;;6763:6:0;6773:10;6763:20;6755:50;;;;-1:-1:-1;;;6755:50:0;;;;;;;:::i;:::-;21369:36:::1;::::0;-1:-1:-1;;;21369:36:0;;-1:-1:-1;;;;;14176:32:1;;;21369:36:0::1;::::0;::::1;14158:51:1::0;14225:18;;;14218:34;;;21369:23:0;::::1;::::0;::::1;::::0;14131:18:1;;21369:36:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;10654:165::-:0;10732:4;10749:40;10759:10;10771:9;10782:6;10749:9;:40::i;:::-;-1:-1:-1;10807:4:0;;10654:165;-1:-1:-1;;;10654:165:0:o;13008:230::-;6763:6;;-1:-1:-1;;;;;6763:6:0;6773:10;6763:20;6755:50;;;;-1:-1:-1;;;6755:50:0;;;;;;;:::i;:::-;13108:7:::1;:23:::0;;::::1;13172:19:::0;;::::1;::::0;::::1;-1:-1:-1::0;;13142:19:0;;::::1;::::0;::::1;-1:-1:-1::0;;13142:19:0;;;13108:23;;::::1;13142:19:::0;;;;;;;::::1;13172;;::::0;;13219:11:::1;13187:4:::0;13157;13219:11:::1;:::i;:::-;13202:7;:28:::0;;::::1;::::0;;;::::1;-1:-1:-1::0;;;13202:28:0::1;-1:-1:-1::0;;13202:28:0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;13008:230:0:o;14437:197::-;6763:6;;-1:-1:-1;;;;;6763:6:0;6773:10;6763:20;6755:50;;;;-1:-1:-1;;;6755:50:0;;;;;;;:::i;:::-;14555:33:::1;:71:::0;14437:197::o;15500:164::-;6763:6;;-1:-1:-1;;;;;6763:6:0;6773:10;6763:20;6755:50;;;;-1:-1:-1;;;6755:50:0;;;;;;;:::i;:::-;15576:19:::1;:29:::0;;;::::1;;;;-1:-1:-1::0;;15576:29:0;;::::1;;::::0;;15621:35:::1;::::0;::::1;::::0;::::1;::::0;15598:7;2222:14:1;2215:22;2197:41;;2185:2;2170:18;;2057:187;15621:35:0::1;;;;;;;;15500:164:::0;:::o;15326:166::-;6763:6;;-1:-1:-1;;;;;6763:6:0;6773:10;6763:20;6755:50;;;;-1:-1:-1;;;6755:50:0;;;;;;;:::i;:::-;15414:11:::1;:27:::0;;-1:-1:-1;;;;;15414:27:0;;::::1;-1:-1:-1::0;;;;;;15414:27:0;;::::1;;::::0;;;15452:16;:32;;;;;::::1;::::0;::::1;;::::0;;15326:166::o;11630:540::-;6763:6;;-1:-1:-1;;;;;6763:6:0;6773:10;6763:20;6755:50;;;;-1:-1:-1;;;6755:50:0;;;;;;;:::i;:::-;11699:20:::1;11732:9;11699:43;;11753:16;11783:10;-1:-1:-1::0;;;;;11783:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11772:40:0::1;;11821:4;11828:10;-1:-1:-1::0;;;;;11828:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11772:74;::::0;-1:-1:-1;;;;;;11772:74:0::1;::::0;;;;;;-1:-1:-1;;;;;9024:15:1;;;11772:74:0::1;::::0;::::1;9006:34:1::0;9076:15;;9056:18;;;9049:43;8941:18;;11772:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11753:93:::0;-1:-1:-1;;;;;;11861:22:0;::::1;11857:200;;11920:10;-1:-1:-1::0;;;;;11920:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11909:43:0::1;;11961:4;11968:10;-1:-1:-1::0;;;;;11968:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11909:77;::::0;-1:-1:-1;;;;;;11909:77:0::1;::::0;;;;;;-1:-1:-1;;;;;9024:15:1;;;11909:77:0::1;::::0;::::1;9006:34:1::0;9076:15;;9056:18;;;9049:43;8941:18;;11909:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11900:6;:86:::0;;-1:-1:-1;;;;;;11900:86:0::1;-1:-1:-1::0;;;;;11900:86:0;;;::::1;::::0;;;::::1;::::0;;11857:200:::1;;;12028:6;:17:::0;;-1:-1:-1;;;;;;12028:17:0::1;-1:-1:-1::0;;;;;12028:17:0;::::1;;::::0;;11857:200:::1;12067:9;:22:::0;;-1:-1:-1;;;;;;12067:22:0::1;-1:-1:-1::0;;;;;12067:22:0;::::1;::::0;;::::1;::::0;;;12100:62:::1;::::0;12117:4:::1;::::0;-1:-1:-1;;12100:8:0::1;:62::i;21115:113::-:0;6763:6;;-1:-1:-1;;;;;6763:6:0;6773:10;6763:20;6755:50;;;;-1:-1:-1;;;6755:50:0;;;;;;;:::i;:::-;21181:6:::1;::::0;;21173:47:::1;::::0;-1:-1:-1;;;;;21181:6:0;;::::1;::::0;21198:21:::1;21173:47:::0;::::1;;;::::0;21198:21;;21173:47;21181:6;21173:47;21198:21;21181:6;21173:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;21115:113::o:0;10994:310::-;-1:-1:-1;;;;;11089:20:0;;11081:52;;;;-1:-1:-1;;;11081:52:0;;15509:2:1;11081:52:0;;;15491:21:1;15548:2;15528:18;;;15521:30;-1:-1:-1;;;15567:18:1;;;15560:49;15626:18;;11081:52:0;15307:343:1;11081:52:0;-1:-1:-1;;;;;11152:21:0;;11144:53;;;;-1:-1:-1;;;11144:53:0;;15509:2:1;11144:53:0;;;15491:21:1;15548:2;15528:18;;;15521:30;-1:-1:-1;;;15567:18:1;;;15560:49;15626:18;;11144:53:0;15307:343:1;11144:53:0;-1:-1:-1;;;;;11210:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;11263:33;;368:25:1;;;11263:33:0;;341:18:1;11263:33:0;;;;;;;10994:310;;;:::o;16038:2742::-;16117:4;-1:-1:-1;;;;;16142:18:0;;16134:68;;;;-1:-1:-1;;;16134:68:0;;15857:2:1;16134:68:0;;;15839:21:1;15896:2;15876:18;;;15869:30;15935:34;15915:18;;;15908:62;-1:-1:-1;;;15986:18:1;;;15979:35;16031:19;;16134:68:0;15655:401:1;16134:68:0;-1:-1:-1;;;;;16221:16:0;;16213:64;;;;-1:-1:-1;;;16213:64:0;;16263:2:1;16213:64:0;;;16245:21:1;16302:2;16282:18;;;16275:30;16341:34;16321:18;;;16314:62;-1:-1:-1;;;16392:18:1;;;16385:33;16435:19;;16213:64:0;16061:399:1;16213:64:0;16305:1;16296:6;:10;16288:64;;;;-1:-1:-1;;;16288:64:0;;16667:2:1;16288:64:0;;;16649:21:1;16706:2;16686:18;;;16679:30;16745:34;16725:18;;;16718:62;-1:-1:-1;;;16796:18:1;;;16789:39;16845:19;;16288:64:0;16465:405:1;16288:64:0;-1:-1:-1;;;;;16451:13:0;;16363:8;16451:13;;;:7;:13;;;;;;16363:8;;;;16451:13;;16447:162;;;16487:4;16481:10;;16447:162;;;-1:-1:-1;;;;;16513:11:0;;;;;;:7;:11;;;;;;;;16509:100;;;16548:4;16541:11;;16509:100;;;-1:-1:-1;16593:4:0;16509:100;16622:20;16633:4;16639:2;16622:10;:20::i;:::-;16619:641;;;16663:14;;;;16659:89;;16698:34;;-1:-1:-1;;;16698:34:0;;17077:2:1;16698:34:0;;;17059:21:1;17116:2;17096:18;;;17089:30;17155:26;17135:18;;;17128:54;17199:18;;16698:34:0;16875:348:1;16659:89:0;16765:3;:11;;;;16772:4;16765:11;16762:231;;;-1:-1:-1;;;;;16801:27:0;;;;;;:21;:27;;;;;;;;16800:28;:58;;;;-1:-1:-1;;;;;;16833:25:0;;;;;;:21;:25;;;;;;;;16832:26;16800:58;16796:182;;;16901:12;;16891:6;:22;;16883:75;;;;-1:-1:-1;;;16883:75:0;;17430:2:1;16883:75:0;;;17412:21:1;17469:2;17449:18;;;17442:30;17508:34;17488:18;;;17481:62;-1:-1:-1;;;17559:18:1;;;17552:38;17607:19;;16883:75:0;17228:404:1;16883:75:0;17024:9;;-1:-1:-1;;;;;17010:24:0;;;17024:9;;17010:24;;;;:33;;;17039:4;17038:5;17010:33;17007:242;;;-1:-1:-1;;;;;17069:25:0;;;;;;:21;:25;;;;;;;;17064:170;;17153:14;;17143:6;17127:13;17137:2;17127:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;17119:95;;;;-1:-1:-1;;;17119:95:0;;17972:2:1;17119:95:0;;;17954:21:1;18011:2;17991:18;;;17984:30;18050:34;18030:18;;;18023:62;-1:-1:-1;;;18101:18:1;;;18094:40;18151:19;;17119:95:0;17770:406:1;17119:95:0;-1:-1:-1;;;;;17305:25:0;;17272:12;17305:25;;;:19;:25;;;;;;17287:4;;17305:25;;;:52;;-1:-1:-1;;;;;;17334:23:0;;;;;;:19;:23;;;;;;;;17305:52;17302:98;;;-1:-1:-1;17383:5:0;17302:98;17416:4;17412:1271;;;17452:6;;;;17451:7;:47;;;;-1:-1:-1;17479:19:0;;;;;;;17451:47;17447:539;;;17568:15;17548:17;;17537:8;;:28;;;;:::i;:::-;:46;17533:436;;;17608:28;17639:24;17657:4;17639:9;:24::i;:::-;17608:55;;17714:13;;17690:20;:37;17686:264;;17783:10;;17759:20;:34;17756:77;;-1:-1:-1;17820:10:0;;17756:77;17859:14;:12;:14::i;:::-;17911:15;17900:8;:26;17686:264;17585:384;17533:436;18072:14;;18032:21;;18072:14;;;;;:37;;;;-1:-1:-1;18090:19:0;;;;;;;18072:37;18068:525;;;18163:25;18181:6;18163:17;:25::i;:::-;18138:21;;:50;;;;;;;:::i;:::-;;;;;;;;18215:21;18273:33;;18264:4;18239:21;;:30;;;;:::i;:::-;:68;;;;:::i;:::-;18215:92;;18353:7;18337:13;:23;18334:236;;;18392:28;18406:13;18392;:28::i;:::-;18334:236;;;18541:1;18517:21;:25;18334:236;18111:482;18068:525;17432:1251;17412:1271;18700:62;18718:4;18724:2;18728:6;18736:7;18745:3;18750:4;18756:5;18700:17;:62::i;:::-;18693:69;16038:2742;-1:-1:-1;;;;;;;;16038:2742:0:o;21837:632::-;21993:16;;21971:4;;21993:16;;;;;21988:221;;22026:28;22045:4;22051:2;22026:18;:28::i;:::-;22074:16;;;;;;;22073:17;:41;;;;;22094:20;22105:4;22111:2;22094:10;:20::i;:::-;22069:129;;;22135:47;;-1:-1:-1;;;22135:47:0;;18383:2:1;22135:47:0;;;18365:21:1;18422:2;18402:18;;;18395:30;18461:34;18441:18;;;18434:62;-1:-1:-1;;;18512:18:1;;;18505:35;18557:19;;22135:47:0;18181:401:1;22069:129:0;-1:-1:-1;;;;;22233:13:0;;;;;;:7;:13;;;;;:23;;22250:6;;22233:13;:23;;22250:6;;22233:23;:::i;:::-;;;;-1:-1:-1;22267:22:0;;-1:-1:-1;22293:7:0;22292:55;;22341:6;22292:55;;;22304:34;22314:4;22320:3;22325:4;22331:6;22304:9;:34::i;:::-;-1:-1:-1;;;;;22358:11:0;;;;;;:7;:11;;;;;:29;;22267:80;;-1:-1:-1;22267:80:0;;22358:11;;;:29;;22267:80;;22358:29;:::i;:::-;;;;;;;;22420:2;-1:-1:-1;;;;;22405:34:0;22414:4;-1:-1:-1;;;;;22405:34:0;;22424:14;22405:34;;;;368:25:1;;356:2;341:18;;222:177;22405:34:0;;;;;;;;-1:-1:-1;22457:4:0;;21837:632;-1:-1:-1;;;;;;;;21837:632:0:o;15672:358::-;15741:4;15773:6;;-1:-1:-1;;;;;15765:14:0;;;15773:6;;15765:14;;;;:43;;-1:-1:-1;15802:6:0;;-1:-1:-1;;;;;15796:12:0;;;15802:6;;15796:12;;15765:43;:79;;;;-1:-1:-1;15838:6:0;;-1:-1:-1;;;;;15838:6:0;15825:9;:19;;15765:79;:118;;;;-1:-1:-1;;;;;;15862:21:0;;;;;;:17;:21;;;;;;;;15861:22;15765:118;:159;;;;-1:-1:-1;;;;;;15901:23:0;;;;;;:17;:23;;;;;;;;15900:24;15765:159;:186;;;;-1:-1:-1;;;;;;15941:10:0;;5403:42;15941:10;;15765:186;:219;;;;-1:-1:-1;;;;;;15968:16:0;;;;15765:219;:257;;;;-1:-1:-1;;;;;;16001:21:0;;16017:4;16001:21;;15765:257;15758:264;15672:358;-1:-1:-1;;;15672:358:0:o;18788:854::-;6657:6;:13;;-1:-1:-1;;6657:13:0;6666:4;6657:13;;;18867:10:::1;::::0;18912:16:::1;::::0;;18926:1:::1;18912:16:::0;;;;;::::1;::::0;;-1:-1:-1;;18912:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;18912:16:0::1;18888:40;;18957:4;18939;18944:1;18939:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18939:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;18983:9:::1;::::0;:16:::1;::::0;;-1:-1:-1;;;18983:16:0;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;18939:7;;18983:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18973:4;18978:1;18973:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18973:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;19070:9:::1;::::0;:193:::1;::::0;-1:-1:-1;;;19070:193:0;;19036:21:::1;::::0;19070:9;;;::::1;::::0;:60:::1;::::0;:193:::1;::::0;19145:12;;19012:21:::1;::::0;19188:4;;19215::::1;::::0;19235:15:::1;::::0;19070:193:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19274:17;19319:13;19294:21;:39;;;;:::i;:::-;19403:7;:13:::0;19274:59;;-1:-1:-1;19344:26:0::1;::::0;19403:13:::1;-1:-1:-1::0;;;19403:13:0;::::1;::::0;::::1;::::0;19373:26:::1;::::0;19386:12;;;::::1;;19274:59:::0;19373:26:::1;:::i;:::-;:44;;;;:::i;:::-;19497:16:::0;;19489:73:::1;::::0;19344;;-1:-1:-1;19439:21:0::1;::::0;-1:-1:-1;;;;;19497:16:0;;::::1;::::0;19552:5:::1;::::0;19344:73;;19439:21;19489:73;19439:21;19489:73;19344;19497:16;19552:5;19489:73:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19438:124;;;19581:16;19573:59;;;::::0;-1:-1:-1;;;19573:59:0;;20052:2:1;19573:59:0::1;::::0;::::1;20034:21:1::0;20091:2;20071:18;;;20064:30;20130:32;20110:18;;;20103:60;20180:18;;19573:59:0::1;19850:354:1::0;19573:59:0::1;-1:-1:-1::0;;6693:6:0;:14;;-1:-1:-1;;6693:14:0;;;-1:-1:-1;;;;18788:854:0:o;14643:329::-;14756:16;;;14770:1;14756:16;;;;;;;;14712:7;;;;14756:16;14770:1;14756:16;;;;;;;;;;-1:-1:-1;14756:16:0;14732:40;;14803:4;14785;14790:1;14785:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14785:23:0;;;:7;;;;;;;;;;:23;;;;14829:9;;:16;;;-1:-1:-1;;;14829:16:0;;;;:9;;;;;:14;;:16;;;;;14785:7;;14829:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14819:4;14824:1;14819:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14819:26:0;;;:7;;;;;;;;;:26;14882:9;;:42;;-1:-1:-1;;;14882:42:0;;14858:21;;14882:9;;;;;:23;;:42;;14906:11;;14919:4;;14882:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14882:42:0;;;;;;;;;;;;:::i;:::-;14858:66;;14944:7;14952:1;14944:10;;;;;;;;:::i;:::-;;;;;;;14937:17;;;;14643:329;;;:::o;19652:135::-;6657:6;:13;;-1:-1:-1;;6657:13:0;6666:4;6657:13;;;19723:10;;19719:61:::1;;19747:24;19764:6;19747:16;:24::i;:::-;-1:-1:-1::0;6693:6:0;:14;;-1:-1:-1;;6693:14:0;;;19652:135::o;20379:388::-;20462:16;;;;;;;20461:17;20453:65;;;;-1:-1:-1;;;20453:65:0;;21634:2:1;20453:65:0;;;21616:21:1;21673:2;21653:18;;;21646:30;21712:34;21692:18;;;21685:62;-1:-1:-1;;;21763:18:1;;;21756:33;21806:19;;20453:65:0;21432:399:1;20453:65:0;20534:20;20545:4;20551:2;20534:10;:20::i;:::-;20533:21;:37;;;;-1:-1:-1;20564:6:0;;-1:-1:-1;;;;;20558:12:0;;;20564:6;;20558:12;20533:37;20529:231;;;-1:-1:-1;;;;;20587:23:0;;;;;;:17;:23;;;;;;;;;:30;;20613:4;-1:-1:-1;;20587:30:0;;;;;;;;20632:16;:23;;20587:30;-1:-1:-1;;20632:23:0;;;;;;;;20670:19;:26;;;;;;;;;;20716:32;;2197:41:1;;;20716:32:0;;2170:18:1;20716:32:0;;;;;;;;20379:388;;:::o;22477:902::-;22565:7;22585:18;22618:3;22614:205;;;-1:-1:-1;22651:9:0;:16;;;22614:205;;;22689:4;22685:134;;;-1:-1:-1;22723:9:0;:17;;;;;;22685:134;;;-1:-1:-1;22786:9:0;:21;;;;;;22685:134;22831:17;5297:5;22851:19;22860:10;22851:6;:19;:::i;:::-;:38;;;;:::i;:::-;22954:7;:13;22831:58;;-1:-1:-1;22900:19:0;;22954:13;-1:-1:-1;;;22954:13:0;;;;;22923:26;;22935:14;22831:58;22923:26;:::i;:::-;22922:46;;;;:::i;:::-;22900:68;-1:-1:-1;22983:15:0;;22979:237;;23015:24;23028:11;23015:24;;:::i;:::-;23076:11;:18;-1:-1:-1;;;;;23076:18:0;23054:19;23109:20;;;23076:18;23109:20;;;;;:35;;23015:24;;-1:-1:-1;23076:18:0;;23133:11;;23109:20;23054:19;23109:35;;23133:11;;23109:35;:::i;:::-;;;;;;;;23179:11;-1:-1:-1;;;;;23164:40:0;23173:4;-1:-1:-1;;;;;23164:40:0;;23192:11;23164:40;;;;368:25:1;;356:2;341:18;;222:177;23164:40:0;;;;;;;;23000:216;22979:237;23242:4;23226:22;;;;:7;:22;;;;;:35;;23252:9;;23226:22;:35;;23252:9;;23226:35;:::i;:::-;;;;-1:-1:-1;;23277:40:0;;368:25:1;;;23300:4:0;;-1:-1:-1;;;;;23277:40:0;;;;;356:2:1;341:18;23277:40:0;;;;;;;23347:23;23359:11;23347:9;:23;:::i;:::-;23337:34;;:6;:34;:::i;19824:543::-;19969:16;;;19983:1;19969:16;;;;;;;;19945:21;;19969:16;;;;;;;;-1:-1:-1;;20006:9:0;;:16;;;-1:-1:-1;;;20006:16:0;;;;19945:40;;-1:-1:-1;;;;;;20006:9:0;;;;:14;;-1:-1:-1;20006:16:0;;;;;;;;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19996:4;20001:1;19996:7;;;;;;;;:::i;:::-;;;;;;:26;-1:-1:-1;;;;;19996:26:0;;;-1:-1:-1;;;;;19996:26:0;;;;;20051:4;20033;20038:1;20033:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20033:23:0;;;:7;;;;;;;;;:23;20093:9;;:218;;-1:-1:-1;;;20093:218:0;;:9;;;:60;;20161:6;;20093:218;;:9;;20230:4;;5403:42;;20284:15;;20093:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20329:30;20346:6;20354:4;20329:30;;;;;;;:::i;774:597:1:-;886:4;915:2;944;933:9;926:21;976:6;970:13;1019:6;1014:2;1003:9;999:18;992:34;1044:1;1054:140;1068:6;1065:1;1062:13;1054:140;;;1163:14;;;1159:23;;1153:30;1129:17;;;1148:2;1125:26;1118:66;1083:10;;1054:140;;;1212:6;1209:1;1206:13;1203:91;;;1282:1;1277:2;1268:6;1257:9;1253:22;1249:31;1242:42;1203:91;-1:-1:-1;1355:2:1;1334:15;-1:-1:-1;;1330:29:1;1315:45;;;;1362:2;1311:54;;774:597;-1:-1:-1;;;774:597:1:o;1601:131::-;-1:-1:-1;;;;;1676:31:1;;1666:42;;1656:70;;1722:1;1719;1712:12;1737:315;1805:6;1813;1866:2;1854:9;1845:7;1841:23;1837:32;1834:52;;;1882:1;1879;1872:12;1834:52;1921:9;1908:23;1940:31;1965:5;1940:31;:::i;:::-;1990:5;2042:2;2027:18;;;;2014:32;;-1:-1:-1;;;1737:315:1:o;2249:456::-;2326:6;2334;2342;2395:2;2383:9;2374:7;2370:23;2366:32;2363:52;;;2411:1;2408;2401:12;2363:52;2450:9;2437:23;2469:31;2494:5;2469:31;:::i;:::-;2519:5;-1:-1:-1;2576:2:1;2561:18;;2548:32;2589:33;2548:32;2589:33;:::i;:::-;2249:456;;2641:7;;-1:-1:-1;;;2695:2:1;2680:18;;;;2667:32;;2249:456::o;2710:127::-;2771:10;2766:3;2762:20;2759:1;2752:31;2802:4;2799:1;2792:15;2826:4;2823:1;2816:15;2842:275;2913:2;2907:9;2978:2;2959:13;;-1:-1:-1;;2955:27:1;2943:40;;3013:18;2998:34;;3034:22;;;2995:62;2992:88;;;3060:18;;:::i;:::-;3096:2;3089:22;2842:275;;-1:-1:-1;2842:275:1:o;3122:183::-;3182:4;3215:18;3207:6;3204:30;3201:56;;;3237:18;;:::i;:::-;-1:-1:-1;3282:1:1;3278:14;3294:4;3274:25;;3122:183::o;3310:662::-;3364:5;3417:3;3410:4;3402:6;3398:17;3394:27;3384:55;;3435:1;3432;3425:12;3384:55;3471:6;3458:20;3497:4;3521:60;3537:43;3577:2;3537:43;:::i;:::-;3521:60;:::i;:::-;3615:15;;;3701:1;3697:10;;;;3685:23;;3681:32;;;3646:12;;;;3725:15;;;3722:35;;;3753:1;3750;3743:12;3722:35;3789:2;3781:6;3777:15;3801:142;3817:6;3812:3;3809:15;3801:142;;;3883:17;;3871:30;;3921:12;;;;3834;;3801:142;;;-1:-1:-1;3961:5:1;3310:662;-1:-1:-1;;;;;;3310:662:1:o;3977:1215::-;4095:6;4103;4156:2;4144:9;4135:7;4131:23;4127:32;4124:52;;;4172:1;4169;4162:12;4124:52;4212:9;4199:23;4241:18;4282:2;4274:6;4271:14;4268:34;;;4298:1;4295;4288:12;4268:34;4336:6;4325:9;4321:22;4311:32;;4381:7;4374:4;4370:2;4366:13;4362:27;4352:55;;4403:1;4400;4393:12;4352:55;4439:2;4426:16;4461:4;4485:60;4501:43;4541:2;4501:43;:::i;4485:60::-;4579:15;;;4661:1;4657:10;;;;4649:19;;4645:28;;;4610:12;;;;4685:19;;;4682:39;;;4717:1;4714;4707:12;4682:39;4741:11;;;;4761:217;4777:6;4772:3;4769:15;4761:217;;;4857:3;4844:17;4874:31;4899:5;4874:31;:::i;:::-;4918:18;;4794:12;;;;4956;;;;4761:217;;;4997:5;-1:-1:-1;;5040:18:1;;5027:32;;-1:-1:-1;;5071:16:1;;;5068:36;;;5100:1;5097;5090:12;5068:36;;5123:63;5178:7;5167:8;5156:9;5152:24;5123:63;:::i;:::-;5113:73;;;3977:1215;;;;;:::o;5197:118::-;5283:5;5276:13;5269:21;5262:5;5259:32;5249:60;;5305:1;5302;5295:12;5320:241;5376:6;5429:2;5417:9;5408:7;5404:23;5400:32;5397:52;;;5445:1;5442;5435:12;5397:52;5484:9;5471:23;5503:28;5525:5;5503:28;:::i;5755:159::-;5822:20;;5882:6;5871:18;;5861:29;;5851:57;;5904:1;5901;5894:12;5851:57;5755:159;;;:::o;5919:328::-;5993:6;6001;6009;6062:2;6050:9;6041:7;6037:23;6033:32;6030:52;;;6078:1;6075;6068:12;6030:52;6101:28;6119:9;6101:28;:::i;:::-;6091:38;;6148:37;6181:2;6170:9;6166:18;6148:37;:::i;:::-;6138:47;;6204:37;6237:2;6226:9;6222:18;6204:37;:::i;:::-;6194:47;;5919:328;;;;;:::o;6252:454::-;6347:6;6355;6363;6371;6379;6432:3;6420:9;6411:7;6407:23;6403:33;6400:53;;;6449:1;6446;6439:12;6400:53;-1:-1:-1;;6472:23:1;;;6542:2;6527:18;;6514:32;;-1:-1:-1;6593:2:1;6578:18;;6565:32;;6644:2;6629:18;;6616:32;;-1:-1:-1;6695:3:1;6680:19;6667:33;;-1:-1:-1;6252:454:1;-1:-1:-1;6252:454:1:o;6711:382::-;6776:6;6784;6837:2;6825:9;6816:7;6812:23;6808:32;6805:52;;;6853:1;6850;6843:12;6805:52;6892:9;6879:23;6911:31;6936:5;6911:31;:::i;:::-;6961:5;-1:-1:-1;7018:2:1;7003:18;;6990:32;7031:30;6990:32;7031:30;:::i;:::-;7080:7;7070:17;;;6711:382;;;;;:::o;7098:247::-;7157:6;7210:2;7198:9;7189:7;7185:23;7181:32;7178:52;;;7226:1;7223;7216:12;7178:52;7265:9;7252:23;7284:31;7309:5;7284:31;:::i;7350:180::-;7409:6;7462:2;7450:9;7441:7;7437:23;7433:32;7430:52;;;7478:1;7475;7468:12;7430:52;-1:-1:-1;7501:23:1;;7350:180;-1:-1:-1;7350:180:1:o;7984:396::-;8060:6;8068;8121:2;8109:9;8100:7;8096:23;8092:32;8089:52;;;8137:1;8134;8127:12;8089:52;8176:9;8163:23;8195:31;8220:5;8195:31;:::i;:::-;8245:5;-1:-1:-1;8302:2:1;8287:18;;8274:32;8315:33;8274:32;8315:33;:::i;9103:127::-;9164:10;9159:3;9155:20;9152:1;9145:31;9195:4;9192:1;9185:15;9219:4;9216:1;9209:15;9235:422;9324:1;9367:5;9324:1;9381:270;9402:7;9392:8;9389:21;9381:270;;;9461:4;9457:1;9453:6;9449:17;9443:4;9440:27;9437:53;;;9470:18;;:::i;:::-;9520:7;9510:8;9506:22;9503:55;;;9540:16;;;;9503:55;9619:22;;;;9579:15;;;;9381:270;;;9385:3;9235:422;;;;;:::o;9662:806::-;9711:5;9741:8;9731:80;;-1:-1:-1;9782:1:1;9796:5;;9731:80;9830:4;9820:76;;-1:-1:-1;9867:1:1;9881:5;;9820:76;9912:4;9930:1;9925:59;;;;9998:1;9993:130;;;;9905:218;;9925:59;9955:1;9946:10;;9969:5;;;9993:130;10030:3;10020:8;10017:17;10014:43;;;10037:18;;:::i;:::-;-1:-1:-1;;10093:1:1;10079:16;;10108:5;;9905:218;;10207:2;10197:8;10194:16;10188:3;10182:4;10179:13;10175:36;10169:2;10159:8;10156:16;10151:2;10145:4;10142:12;10138:35;10135:77;10132:159;;;-1:-1:-1;10244:19:1;;;10276:5;;10132:159;10323:34;10348:8;10342:4;10323:34;:::i;:::-;10393:6;10389:1;10385:6;10381:19;10372:7;10369:32;10366:58;;;10404:18;;:::i;:::-;10442:20;;9662:806;-1:-1:-1;;;9662:806:1:o;10473:140::-;10531:5;10560:47;10601:4;10591:8;10587:19;10581:4;10560:47;:::i;10618:217::-;10658:1;10684;10674:132;;10728:10;10723:3;10719:20;10716:1;10709:31;10763:4;10760:1;10753:15;10791:4;10788:1;10781:15;10674:132;-1:-1:-1;10820:9:1;;10618:217::o;10840:168::-;10880:7;10946:1;10942;10938:6;10934:14;10931:1;10928:21;10923:1;10916:9;10909:17;10905:45;10902:71;;;10953:18;;:::i;:::-;-1:-1:-1;10993:9:1;;10840:168::o;11013:125::-;11053:4;11081:1;11078;11075:8;11072:34;;;11086:18;;:::i;:::-;-1:-1:-1;11123:9:1;;11013:125::o;11493:127::-;11554:10;11549:3;11545:20;11542:1;11535:31;11585:4;11582:1;11575:15;11609:4;11606:1;11599:15;11625:175;11662:3;11706:4;11699:5;11695:16;11735:4;11726:7;11723:17;11720:43;;;11743:18;;:::i;:::-;11792:1;11779:15;;11625:175;-1:-1:-1;;11625:175:1:o;11805:341::-;12007:2;11989:21;;;12046:2;12026:18;;;12019:30;-1:-1:-1;;;12080:2:1;12065:18;;12058:47;12137:2;12122:18;;11805:341::o;12503:425::-;12705:2;12687:21;;;12744:2;12724:18;;;12717:30;12783:34;12778:2;12763:18;;12756:62;12854:31;12849:2;12834:18;;12827:59;12918:3;12903:19;;12503:425::o;14263:245::-;14330:6;14383:2;14371:9;14362:7;14358:23;14354:32;14351:52;;;14399:1;14396;14389:12;14351:52;14431:9;14425:16;14450:28;14472:5;14450:28;:::i;14513:224::-;14552:3;14580:6;14613:2;14610:1;14606:10;14643:2;14640:1;14636:10;14674:3;14670:2;14666:12;14661:3;14658:21;14655:47;;;14682:18;;:::i;:::-;14718:13;;14513:224;-1:-1:-1;;;;14513:224:1:o;14742:251::-;14812:6;14865:2;14853:9;14844:7;14840:23;14836:32;14833:52;;;14881:1;14878;14871:12;14833:52;14913:9;14907:16;14932:31;14957:5;14932:31;:::i;17637:128::-;17677:3;17708:1;17704:6;17701:1;17698:13;17695:39;;;17714:18;;:::i;:::-;-1:-1:-1;17750:9:1;;17637:128::o;18587:461::-;18640:3;18678:5;18672:12;18705:6;18700:3;18693:19;18731:4;18760:2;18755:3;18751:12;18744:19;;18797:2;18790:5;18786:14;18818:1;18828:195;18842:6;18839:1;18836:13;18828:195;;;18907:13;;-1:-1:-1;;;;;18903:39:1;18891:52;;18963:12;;;;18998:15;;;;18939:1;18857:9;18828:195;;;-1:-1:-1;19039:3:1;;18587:461;-1:-1:-1;;;;;18587:461:1:o;19053:582::-;19352:6;19341:9;19334:25;19395:6;19390:2;19379:9;19375:18;19368:34;19438:3;19433:2;19422:9;19418:18;19411:31;19315:4;19459:57;19511:3;19500:9;19496:19;19488:6;19459:57;:::i;:::-;-1:-1:-1;;;;;19552:32:1;;;;19547:2;19532:18;;19525:60;-1:-1:-1;19616:3:1;19601:19;19594:35;19451:65;19053:582;-1:-1:-1;;;19053:582:1:o;20209:332::-;20416:6;20405:9;20398:25;20459:2;20454;20443:9;20439:18;20432:30;20379:4;20479:56;20531:2;20520:9;20516:18;20508:6;20479:56;:::i;20546:881::-;20641:6;20672:2;20715;20703:9;20694:7;20690:23;20686:32;20683:52;;;20731:1;20728;20721:12;20683:52;20764:9;20758:16;20797:18;20789:6;20786:30;20783:50;;;20829:1;20826;20819:12;20783:50;20852:22;;20905:4;20897:13;;20893:27;-1:-1:-1;20883:55:1;;20934:1;20931;20924:12;20883:55;20963:2;20957:9;20986:60;21002:43;21042:2;21002:43;:::i;20986:60::-;21080:15;;;21162:1;21158:10;;;;21150:19;;21146:28;;;21111:12;;;;21186:19;;;21183:39;;;21218:1;21215;21208:12;21183:39;21242:11;;;;21262:135;21278:6;21273:3;21270:15;21262:135;;;21344:10;;21332:23;;21295:12;;;;21375;;;;21262:135;;;21416:5;20546:881;-1:-1:-1;;;;;;;20546:881:1:o;21836:510::-;22107:6;22096:9;22089:25;22150:3;22145:2;22134:9;22130:18;22123:31;22070:4;22171:57;22223:3;22212:9;22208:19;22200:6;22171:57;:::i;:::-;-1:-1:-1;;;;;22264:32:1;;;;22259:2;22244:18;;22237:60;-1:-1:-1;22328:2:1;22313:18;22306:34;22163:65;21836:510;-1:-1:-1;;21836:510:1:o

Swarm Source

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