ETH Price: $2,780.73 (+5.94%)

Token

Mintstarter (MINT)
 

Overview

Max Total Supply

100,000,000 MINT

Holders

144

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
neverborn.eth
Balance
6,459.658623770518241007 MINT

Value
$0.00
0x2acdd73ee771a427ebfc7c481753b4f4bdd44a9e
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:
Mintstarter

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
Yes with 5000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.9.0;

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

interface AntiSnipe {
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function setLpPair(address pair, bool enabled) external;
    function setProtections(bool _as, bool _ab) external;
    function setGasPriceLimit(uint256 gas) external;
    function removeSniper(address account) external;
    function isBlacklisted(address account) external view returns (bool);
    function transfer(address sender) external;
    function setBlacklistEnabled(address account, bool enabled) external;
    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external;
    function getInitializers() external view returns (string memory, string memory, uint256, uint8);
}

contract Mintstarter 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 = 100_000_000;

    string constant private _name = "Mintstarter";
    string constant private _symbol = "MINT";
    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 total;
    }

    Fees public _taxRates = Fees({
        buyFee: 600,
        sellFee: 1200,
        transferFee: 600
        });

    Ratios public _ratios = Ratios({
        tokens: 3,
        swap: 15,
        total: 18
        });

    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: 0xd380308038AE8184Daae37b4BbC5A59608FE9F63,
        swap: payable(0xd380308038AE8184Daae37b4BbC5A59608FE9F63)
        });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public contractSwapTimer = 0 seconds;
    uint256 private lastSwap;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    
    uint256 private _maxTxAmount = _tTotal;
    uint256 private _maxWalletSize = _tTotal;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    AntiSnipe antiSnipe;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);
    
    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 approveContractContingency() public onlyOwner returns (bool) {
        _approve(address(this), address(dexRouter), type(uint256).max);
        return true;
    }

    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;
            antiSnipe.setLpPair(pair, false);
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown.!");
            }
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
            antiSnipe.setLpPair(pair, true);
        }
    }

    function setInitializer(address initializer) external onlyOwner {
        require(!_hasLiqBeenAdded);
        require(initializer != address(this), "Can't be self.");
        antiSnipe = AntiSnipe(initializer);
    }

    function setBlacklistEnabled(address account, bool enabled) external onlyOwner {
        antiSnipe.setBlacklistEnabled(account, enabled);
    }

    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external onlyOwner {
        antiSnipe.setBlacklistEnabledMultiple(accounts, enabled);
    }

    function isBlacklisted(address account) public view returns (bool) {
        return antiSnipe.isBlacklisted(account);
    }

    function removeSniper(address account) external onlyOwner {
        antiSnipe.removeSniper(account);
    }

    function setProtectionSettings(bool _antiSnipe, bool _antiBlock) external onlyOwner {
        antiSnipe.setProtections(_antiSnipe, _antiBlock);
    }

    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) external onlyOwner {
        _ratios.tokens = tokens;
        _ratios.swap = swap;
        _ratios.total = tokens + swap;
    }

    function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner {
        require((_tTotal * percent) / divisor >= (_tTotal / 1000), "Max Transaction amt must be above 0.1% of total supply.");
        _maxTxAmount = (_tTotal * percent) / divisor;
    }

    function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner {
        require((_tTotal * percent) / divisor >= (_tTotal / 1000), "Max Wallet amt must be above 0.1% of total supply.");
        _maxWalletSize = (_tTotal * percent) / divisor;
    }

    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 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(contractTokenBalance);
                        lastSwap = block.timestamp;
                    }
                }
            }      
        } 
        return _finalizeTransfer(from, to, amount, takeFee, buy, sell, other);
    }

    function contractSwap(uint256 contractTokenBalance) internal lockTheSwap {
        if(_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }

        if (_ratios.swap == 0) {
            return;
        }

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

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractTokenBalance,
            0,
            path,
            _taxWallets.swap,
            block.timestamp
        );
    }

    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;
            if(address(antiSnipe) == address(0)){
                antiSnipe = AntiSnipe(address(this));
            }
            contractSwapEnabled = true;
            emit ContractSwapEnabledUpdated(true);
        }
    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        if(address(antiSnipe) == address(0)){
            antiSnipe = AntiSnipe(address(this));
        }
        try antiSnipe.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        tradingEnabled = true;
        swapThreshold = (balanceOf(lpPair) * 5) / 10000;
        swapAmount = (balanceOf(lpPair) * 1) / 1000;
    }

    function sweepContingency() external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot call after liquidity.");
        payable(_owner).transfer(address(this).balance);
    }

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

        if (_hasLimits(from, to)) {
            bool checked;
            try antiSnipe.checkUser(from, to, amount) returns (bool check) {
                checked = check;
            } catch {
                revert();
            }

            if(!checked) {
                revert();
            }
        }

        _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":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":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"tokens","type":"uint16"},{"internalType":"uint16","name":"swap","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":[],"name":"approveContractContingency","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":"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":"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":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabledMultiple","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":"initializer","type":"address"}],"name":"setInitializer","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":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"tokens","type":"uint16"},{"internalType":"uint16","name":"swap","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":"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"}]

6000600381815561025860808190526104b060a05260c0526008805465ffffffffffff1990811665025804b002581790915560e091909152600f6101008190526012610120819052600980549093166412000f00031790925561018060405273d380308038ae8184daae37b4bbc5a59608fe9f63610140819052610160819052600c80546001600160a01b03199081168317909155600d80549091169091179055600e805461ff001916905591909155620000bc90600a62000733565b620000cc906305f5e1006200074b565b601355620000dd6012600a62000733565b620000ed906305f5e1006200074b565b6014556015805461ffff19169055620001096012600a62000733565b62000119906305f5e1006200074b565b33600081815260016020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200015c6012600a62000733565b6200016c906305f5e1006200074b565b60405190815260200160405180910390a3600080546001600160a01b031916331790556038461415620001c557600a80546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e179055620002bb565b4660611415620001fb57600a80546001600160a01b031916739ac64cc6e4415144c455bd8e4837fea55603e5c3179055620002bb565b46600114806200020b5750466004145b80620002175750466003145b156200024957600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055620002bb565b4661a86a14156200028057600a80546001600160a01b0319167360ae616a2155ee3d9a68541ba4544862310933d4179055620002bb565b4660fa1415620002b657600a80546001600160a01b03191673f491e7b69e4244ad4002bc14e878a34207e38c29179055620002bb565b600080fd5b600a60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200030f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033591906200076d565b6001600160a01b031663c9c65396600a60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000397573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003bd91906200076d565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af11580156200040a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200043091906200076d565b600b80546001600160a01b0319166001600160a01b039283169081179091556000908152600260205260408120805460ff1916600117905554600a546200047f9291821691166000196200051d565b600a546200049b9030906001600160a01b03166000196200051d565b600080546001600160a01b0390811682526005602090815260408084208054600160ff19918216811790925530865282862080548216831790557f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba80548216831790558554909416855260079092529092208054909116909117905562000798565b6001600160a01b0383166200056f5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620005bd5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640162000566565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006755781600019048211156200065957620006596200061e565b808516156200066757918102915b93841c939080029062000639565b509250929050565b6000826200068e575060016200072d565b816200069d575060006200072d565b8160018114620006b65760028114620006c157620006e1565b60019150506200072d565b60ff841115620006d557620006d56200061e565b50506001821b6200072d565b5060208310610133831016604e8410600b841016171562000706575081810a6200072d565b62000712838362000634565b80600019048211156200072957620007296200061e565b0290505b92915050565b60006200074460ff8416836200067d565b9392505050565b60008160001904831182151516156200076857620007686200061e565b500290565b6000602082840312156200078057600080fd5b81516001600160a01b03811681146200074457600080fd5b613a4e80620007a86000396000f3fe6080604052600436106103435760003560e01c8063590ffdce116101b0578063b3d514fb116100ec578063e4fcfd1811610095578063eec2744e1161006f578063eec2744e146109ca578063f94aa1b4146109ea578063fdb78c0e14610a31578063fe575a8714610a5057600080fd5b8063e4fcfd181461097f578063eafb5a3c14610995578063ee5d9c2d146109b557600080fd5b8063cf847706116100c6578063cf847706146108e8578063d3f6a15714610919578063dd62ed3e1461093957600080fd5b8063b3d514fb14610567578063bcd96a25146108a8578063cab5ebea146108c857600080fd5b806380c581d1116101595780638a8c523c116101335780638a8c523c1461082d57806395d89b4114610842578063a9059cbb14610888578063b1b08f711461056757600080fd5b806380c581d1146107da578063893d20e8146107fa5780638a63bd9b1461081857600080fd5b80636ebd00781161018a5780636ebd00781461077a57806370a082311461078f578063715018a6146107c557600080fd5b8063590ffdce146107015780635c24b074146107215780635cce86cd1461074157600080fd5b80632b28fc7a1161027f57806336fddb04116102285780634ada218b116102025780634ada218b1461066f5780634fb2e45d146106895780634fbee193146106a957806350a8e016146106e257600080fd5b806336fddb041461060f5780633f3cf56c1461062f578063452ed4f11461064f57600080fd5b806332cde6641161025957806332cde664146105af57806333251a0b146105cf57806334cd8260146105ef57600080fd5b80632b28fc7a146105675780632e8fa8211461057d578063313ce5671461059357600080fd5b80630758d924116102ec57806318160ddd116102c657806318160ddd146104f257806323b872dd1461050757806326003957146105275780632610eaca1461054757600080fd5b80630758d9241461048d578063095ea7b3146104ad5780630fa604e4146104dd57600080fd5b806305bbedb61161031d57806305bbedb6146103c8578063069d955f146103e857806306fdde031461043e57600080fd5b806303fd2a451461034f5780630445b66714610382578063044df726146103a657600080fd5b3661034a57005b600080fd5b34801561035b57600080fd5b5061036561dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561038e57600080fd5b5061039860115481565b604051908152602001610379565b3480156103b257600080fd5b506103c66103c13660046132a0565b610a70565b005b3480156103d457600080fd5b506103c66103e33660046133e6565b610b4d565b3480156103f457600080fd5b506008546104199061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610379565b34801561044a57600080fd5b5060408051808201909152600b81527f4d696e747374617274657200000000000000000000000000000000000000000060208201525b604051610379919061342d565b34801561049957600080fd5b50600a54610365906001600160a01b031681565b3480156104b957600080fd5b506104cd6104c8366004613482565b610beb565b6040519015158152602001610379565b3480156104e957600080fd5b50610398610c02565b3480156104fe57600080fd5b50610398610c22565b34801561051357600080fd5b506104cd6105223660046134ae565b610c61565b34801561053357600080fd5b506103c66105423660046134ef565b610cd9565b34801561055357600080fd5b506103c6610562366004613511565b610e29565b34801561057357600080fd5b506103986107d081565b34801561058957600080fd5b5061039860125481565b34801561059f57600080fd5b5060405160128152602001610379565b3480156105bb57600080fd5b506103c66105ca3660046135e3565b610f4a565b3480156105db57600080fd5b506103c66105ea366004613626565b611085565b3480156105fb57600080fd5b506103c661060a366004613643565b611155565b34801561061b57600080fd5b506103c661062a36600461367e565b611212565b34801561063b57600080fd5b506103c661064a3660046134ef565b61128b565b34801561065b57600080fd5b50600b54610365906001600160a01b031681565b34801561067b57600080fd5b506015546104cd9060ff1681565b34801561069557600080fd5b506103c66106a4366004613626565b6113db565b3480156106b557600080fd5b506104cd6106c4366004613626565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156106ee57600080fd5b506015546104cd90610100900460ff1681565b34801561070d57600080fd5b506103c661071c36600461367e565b6115f4565b34801561072d57600080fd5b506103c661073c366004613626565b61166d565b34801561074d57600080fd5b506104cd61075c366004613626565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561078657600080fd5b50610398611769565b34801561079b57600080fd5b506103986107aa366004613626565b6001600160a01b031660009081526001602052604090205490565b3480156107d157600080fd5b506103c6611784565b3480156107e657600080fd5b506103c66107f536600461367e565b61183f565b34801561080657600080fd5b506000546001600160a01b0316610365565b34801561082457600080fd5b506104cd6119e9565b34801561083957600080fd5b506103c6611a58565b34801561084e57600080fd5b5060408051808201909152600481527f4d494e54000000000000000000000000000000000000000000000000000000006020820152610480565b34801561089457600080fd5b506104cd6108a3366004613482565b611cc0565b3480156108b457600080fd5b506103c66108c336600461369c565b611cd7565b3480156108d457600080fd5b506103c66108e33660046136cf565b611da9565b3480156108f457600080fd5b506009546104199061ffff808216916201000081048216916401000000009091041683565b34801561092557600080fd5b506103c66109343660046136ec565b611e4b565b34801561094557600080fd5b506103986109543660046136ec565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561098b57600080fd5b50610398600f5481565b3480156109a157600080fd5b506103c66109b0366004613626565b611edf565b3480156109c157600080fd5b506103c66122af565b3480156109d657600080fd5b506103c66109e536600461367e565b612392565b3480156109f657600080fd5b50600c54600d54610a11916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610379565b348015610a3d57600080fd5b50600e546104cd90610100900460ff1681565b348015610a5c57600080fd5b506104cd610a6b366004613626565b61243a565b6000546001600160a01b03163314610ac35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b6015546040517fefbdbabd00000000000000000000000000000000000000000000000000000000815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610b3157600080fd5b505af1158015610b45573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610b9b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6015546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610b17908590859060040161375e565b6000610bf83384846124c8565b5060015b92915050565b6000610c106012600a613895565b601454610c1d91906138a4565b905090565b6000610c306012600a613895565b610c3e906305f5e1006138df565b610c4757600080fd5b610c536012600a613895565b610c1d906305f5e1006138df565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610cc6576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610cc09084906138fe565b90915550505b610cd18484846125d5565b949350505050565b6000546001600160a01b03163314610d275760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6103e8610d366012600a613895565b610d44906305f5e1006138df565b610d4e91906138a4565b8183610d5c6012600a613895565b610d6a906305f5e1006138df565b610d7491906138df565b610d7e91906138a4565b1015610df25760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610aba565b8082610e006012600a613895565b610e0e906305f5e1006138df565b610e1891906138df565b610e2291906138a4565b6014555050565b8051825114610e7a5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610aba565b60005b82518160ff161015610f4557818160ff1681518110610e9e57610e9e613915565b6020026020010151610ec5336001600160a01b031660009081526001602052604090205490565b1015610ed057600080fd5b610f3233848360ff1681518110610ee957610ee9613915565b60200260200101516012600a610eff9190613895565b858560ff1681518110610f1457610f14613915565b6020026020010151610f2691906138df565b60008060006001612a8a565b5080610f3d81613944565b915050610e7d565b505050565b6000546001600160a01b03163314610f985760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6107d08361ffff1611158015610fb457506107d08261ffff1611155b8015610fc657506107d08161ffff1611155b6110125760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610aba565b6008805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b031633146110d35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6015546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561113a57600080fd5b505af115801561114e573d6000803e3d6000fd5b5050505050565b6000546001600160a01b031633146111a35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b83856111b16012600a613895565b6111bf906305f5e1006138df565b6111c991906138df565b6111d391906138a4565b60115581836111e46012600a613895565b6111f2906305f5e1006138df565b6111fc91906138df565b61120691906138a4565b601255600f5550505050565b6000546001600160a01b031633146112605760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112d95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6103e86112e86012600a613895565b6112f6906305f5e1006138df565b61130091906138a4565b818361130e6012600a613895565b61131c906305f5e1006138df565b61132691906138df565b61133091906138a4565b10156113a45760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610aba565b80826113b26012600a613895565b6113c0906305f5e1006138df565b6113ca91906138df565b6113d491906138a4565b6013555050565b6000546001600160a01b031633146114295760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6001600160a01b0381166114a55760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610aba565b6001600160a01b03811661dead14156115265760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610aba565b6000805461153f916001600160a01b03909116906115f4565b61154a8160016115f4565b600080546001600160a01b03168152600160205260409020541561159157600080546001600160a01b0316808252600160205260409091205461158f919083906125d5565b505b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b031633146116425760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146116bb5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b601554610100900460ff16156116d057600080fd5b6001600160a01b0381163014156117295760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610aba565b601580546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b60006117776012600a613895565b601354610c1d91906138a4565b6000546001600160a01b031633146117d25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b600080546117eb916001600160a01b03909116906115f4565b600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b0316331461188d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b80611904576001600160a01b03828116600081815260026020526040808220805460ff1916905560155490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610b17565b6003541561196b576203f4806003544261191e91906138fe565b1161196b5760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610aba565b6001600160a01b0382811660008181526002602052604090819020805460ff191660019081179091554260035560155491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610b17565b5050565b600080546001600160a01b03163314611a385760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b600a54611a529030906001600160a01b03166000196124c8565b50600190565b6000546001600160a01b03163314611aa65760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b60155460ff1615611af95760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610aba565b601554610100900460ff16611b505760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610aba565b6015546201000090046001600160a01b0316611b9657601580547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601554600b546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611c2157600080fd5b505af1925050508015611c32575060015b506015805460ff19166001179055600b5461271090611c6f906001600160a01b03166001600160a01b031660009081526001602052604090205490565b611c7a9060056138df565b611c8491906138a4565b601155600b546001600160a01b03166000908152600160205260409020546103e890611cb19060016138df565b611cbb91906138a4565b601255565b6000611ccd3384846125d5565b5060019392505050565b6000546001600160a01b03163314611d255760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6009805461ffff83811662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090921690851617179055611d698183613964565b6009805461ffff92909216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff9092169190911790555050565b6000546001600160a01b03163314611df75760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b600e80548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790611e4090831515815260200190565b60405180910390a150565b6000546001600160a01b03163314611e995760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b600c80546001600160a01b039384167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155600d8054929093169116179055565b6000546001600160a01b03163314611f2d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f96919061398a565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fe3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612007919061398a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561206a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208e919061398a565b90506001600160a01b03811661223757816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612100919061398a565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561214d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612171919061398a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156121d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fa919061398a565b600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905561226b565b600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b600a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416908117909155610f459030906000196124c8565b6000546001600160a01b031633146122fd5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b601554610100900460ff16156123555760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610aba565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f1935050505015801561238f573d6000803e3d6000fd5b50565b6000546001600160a01b031633146123e05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6015546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610b17565b6015546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa1580156124a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfc91906139a7565b6001600160a01b03831661251e5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610aba565b6001600160a01b0382166125745760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610aba565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166126535760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610aba565b6001600160a01b0383166126cf5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610aba565b600082116127455760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610aba565b6001600160a01b0384166000908152600260205260408120548190819060ff161561277357600192506127a1565b6001600160a01b03861660009081526002602052604090205460ff161561279d57600191506127a1565b5060015b6127ab8787612cca565b156129b15760155460ff166128025760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610aba565b828061280b5750815b156128cf576001600160a01b03871660009081526006602052604090205460ff1615801561285257506001600160a01b03861660009081526006602052604090205460ff16155b156128cf576013548511156128cf5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610aba565b600a546001600160a01b038781169116148015906128eb575081155b156129b1576001600160a01b03861660009081526006602052604090205460ff166129b15760145485612933886001600160a01b031660009081526001602052604090205490565b61293d91906139c4565b11156129b15760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610aba565b6001600160a01b03871660009081526005602052604090205460019060ff16806129f357506001600160a01b03871660009081526005602052604090205460ff165b156129fc575060005b8215612a6f57600e5460ff16158015612a1c5750600e54610100900460ff165b15612a6f5742600f54601054612a3291906139c4565b1015612a6f57306000908152600160205260409020546011548110612a6d576012548110612a5f57506012545b612a6881612d9f565b426010555b505b612a7e88888884888888612a8a565b98975050505050505050565b601554600090610100900460ff16612b3657612aa68888612f9f565b601554610100900460ff16158015612ac35750612ac38888612cca565b15612b365760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610aba565b612b408888612cca565b15612bf3576015546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152898116602483015260448201899052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015612bdc575060408051601f3d908101601f19168201909252612bd9918101906139a7565b60015b612be557600080fd5b905080612bf157600080fd5b505b6001600160a01b03881660009081526001602052604081208054889290612c1b9084906138fe565b909155506000905085612c2e5786612c3a565b612c3a8986868a6130fd565b6001600160a01b038916600090815260016020526040812080549293508392909190612c679084906139c4565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612cb391815260200190565b60405180910390a350600198975050505050505050565b600080546001600160a01b03848116911614801590612cf757506000546001600160a01b03838116911614155b8015612d0e57506000546001600160a01b03163214155b8015612d3357506001600160a01b03821660009081526007602052604090205460ff16155b8015612d5857506001600160a01b03831660009081526007602052604090205460ff16155b8015612d6f57506001600160a01b03821661dead14155b8015612d8357506001600160a01b03821615155b8015612d9857506001600160a01b0383163014155b9392505050565b600e805460ff19166001179055306000908152600460209081526040808320600a546001600160a01b0316845290915290205460001914612e0557306000908152600460209081526040808320600a546001600160a01b03168452909152902060001990555b60095462010000900461ffff16612e1b57612f92565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612e5057612e50613915565b6001600160a01b03928316602091820292909201810191909152600a54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015612ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ee6919061398a565b81600181518110612ef957612ef9613915565b6001600160a01b039283166020918202929092010152600a54600d546040517f791ac9470000000000000000000000000000000000000000000000000000000081529183169263791ac94792612f5e92879260009288929091169042906004016139dc565b600060405180830381600087803b158015612f7857600080fd5b505af1158015612f8c573d6000803e3d6000fd5b50505050505b50600e805460ff19169055565b601554610100900460ff161561301d5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610aba565b6130278282612cca565b1580156130415750600b546001600160a01b038281169116145b156119e5576001600160a01b038083166000908152600760205260409020805460ff191660011790556015805461ff0019166101001790819055620100009004166130b657601580547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b600e805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b6000808415613113575060085461ffff1661313d565b831561312c575060085462010000900461ffff1661313d565b50600854640100000000900461ffff165b600061271061314c83866138df565b61315691906138a4565b60095490915060009061ffff64010000000082048116916131789116846138df565b61318291906138a4565b9050801561321a5761319481836138fe565b600c546001600160a01b0316600081815260016020526040812080549395509192849291906131c49084906139c4565b92505081905550806001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161321091815260200190565b60405180910390a3505b30600090815260016020526040812080548492906132399084906139c4565b909155505060405182815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361328881836139c4565b612a7e90866138fe565b801515811461238f57600080fd5b600080604083850312156132b357600080fd5b82356132be81613292565b915060208301356132ce81613292565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613331576133316132d9565b604052919050565b600067ffffffffffffffff821115613353576133536132d9565b5060051b60200190565b6001600160a01b038116811461238f57600080fd5b600082601f83011261338357600080fd5b8135602061339861339383613339565b613308565b82815260059290921b840181019181810190868411156133b757600080fd5b8286015b848110156133db5780356133ce8161335d565b83529183019183016133bb565b509695505050505050565b600080604083850312156133f957600080fd5b823567ffffffffffffffff81111561341057600080fd5b61341c85828601613372565b92505060208301356132ce81613292565b600060208083528351808285015260005b8181101561345a5785810183015185820160400152820161343e565b8181111561346c576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561349557600080fd5b82356134a08161335d565b946020939093013593505050565b6000806000606084860312156134c357600080fd5b83356134ce8161335d565b925060208401356134de8161335d565b929592945050506040919091013590565b6000806040838503121561350257600080fd5b50508035926020909101359150565b6000806040838503121561352457600080fd5b823567ffffffffffffffff8082111561353c57600080fd5b61354886838701613372565b935060209150818501358181111561355f57600080fd5b85019050601f8101861361357257600080fd5b803561358061339382613339565b81815260059190911b8201830190838101908883111561359f57600080fd5b928401925b828410156135bd578335825292840192908401906135a4565b80955050505050509250929050565b803561ffff811681146135de57600080fd5b919050565b6000806000606084860312156135f857600080fd5b613601846135cc565b925061360f602085016135cc565b915061361d604085016135cc565b90509250925092565b60006020828403121561363857600080fd5b8135612d988161335d565b600080600080600060a0868803121561365b57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000806040838503121561369157600080fd5b82356132be8161335d565b600080604083850312156136af57600080fd5b6136b8836135cc565b91506136c6602084016135cc565b90509250929050565b6000602082840312156136e157600080fd5b8135612d9881613292565b600080604083850312156136ff57600080fd5b823561370a8161335d565b915060208301356132ce8161335d565b600081518084526020808501945080840160005b838110156137535781516001600160a01b03168752958201959082019060010161372e565b509495945050505050565b604081526000613771604083018561371a565b905082151560208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b808511156137ec5781600019048211156137d2576137d2613782565b808516156137df57918102915b93841c93908002906137b6565b509250929050565b60008261380357506001610bfc565b8161381057506000610bfc565b816001811461382657600281146138305761384c565b6001915050610bfc565b60ff84111561384157613841613782565b50506001821b610bfc565b5060208310610133831016604e8410600b841016171561386f575081810a610bfc565b61387983836137b1565b806000190482111561388d5761388d613782565b029392505050565b6000612d9860ff8416836137f4565b6000826138da577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008160001904831182151516156138f9576138f9613782565b500290565b60008282101561391057613910613782565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff81141561395b5761395b613782565b60010192915050565b600061ffff80831681851680830382111561398157613981613782565b01949350505050565b60006020828403121561399c57600080fd5b8151612d988161335d565b6000602082840312156139b957600080fd5b8151612d9881613292565b600082198211156139d7576139d7613782565b500190565b85815284602082015260a0604082015260006139fb60a083018661371a565b6001600160a01b039490941660608301525060800152939250505056fea26469706673582212204909f1285f3abf46e3e4d04a0dcf4bdaf4270c699612c81f67f2908518904d4764736f6c634300080c0033

Deployed Bytecode

0x6080604052600436106103435760003560e01c8063590ffdce116101b0578063b3d514fb116100ec578063e4fcfd1811610095578063eec2744e1161006f578063eec2744e146109ca578063f94aa1b4146109ea578063fdb78c0e14610a31578063fe575a8714610a5057600080fd5b8063e4fcfd181461097f578063eafb5a3c14610995578063ee5d9c2d146109b557600080fd5b8063cf847706116100c6578063cf847706146108e8578063d3f6a15714610919578063dd62ed3e1461093957600080fd5b8063b3d514fb14610567578063bcd96a25146108a8578063cab5ebea146108c857600080fd5b806380c581d1116101595780638a8c523c116101335780638a8c523c1461082d57806395d89b4114610842578063a9059cbb14610888578063b1b08f711461056757600080fd5b806380c581d1146107da578063893d20e8146107fa5780638a63bd9b1461081857600080fd5b80636ebd00781161018a5780636ebd00781461077a57806370a082311461078f578063715018a6146107c557600080fd5b8063590ffdce146107015780635c24b074146107215780635cce86cd1461074157600080fd5b80632b28fc7a1161027f57806336fddb04116102285780634ada218b116102025780634ada218b1461066f5780634fb2e45d146106895780634fbee193146106a957806350a8e016146106e257600080fd5b806336fddb041461060f5780633f3cf56c1461062f578063452ed4f11461064f57600080fd5b806332cde6641161025957806332cde664146105af57806333251a0b146105cf57806334cd8260146105ef57600080fd5b80632b28fc7a146105675780632e8fa8211461057d578063313ce5671461059357600080fd5b80630758d924116102ec57806318160ddd116102c657806318160ddd146104f257806323b872dd1461050757806326003957146105275780632610eaca1461054757600080fd5b80630758d9241461048d578063095ea7b3146104ad5780630fa604e4146104dd57600080fd5b806305bbedb61161031d57806305bbedb6146103c8578063069d955f146103e857806306fdde031461043e57600080fd5b806303fd2a451461034f5780630445b66714610382578063044df726146103a657600080fd5b3661034a57005b600080fd5b34801561035b57600080fd5b5061036561dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561038e57600080fd5b5061039860115481565b604051908152602001610379565b3480156103b257600080fd5b506103c66103c13660046132a0565b610a70565b005b3480156103d457600080fd5b506103c66103e33660046133e6565b610b4d565b3480156103f457600080fd5b506008546104199061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610379565b34801561044a57600080fd5b5060408051808201909152600b81527f4d696e747374617274657200000000000000000000000000000000000000000060208201525b604051610379919061342d565b34801561049957600080fd5b50600a54610365906001600160a01b031681565b3480156104b957600080fd5b506104cd6104c8366004613482565b610beb565b6040519015158152602001610379565b3480156104e957600080fd5b50610398610c02565b3480156104fe57600080fd5b50610398610c22565b34801561051357600080fd5b506104cd6105223660046134ae565b610c61565b34801561053357600080fd5b506103c66105423660046134ef565b610cd9565b34801561055357600080fd5b506103c6610562366004613511565b610e29565b34801561057357600080fd5b506103986107d081565b34801561058957600080fd5b5061039860125481565b34801561059f57600080fd5b5060405160128152602001610379565b3480156105bb57600080fd5b506103c66105ca3660046135e3565b610f4a565b3480156105db57600080fd5b506103c66105ea366004613626565b611085565b3480156105fb57600080fd5b506103c661060a366004613643565b611155565b34801561061b57600080fd5b506103c661062a36600461367e565b611212565b34801561063b57600080fd5b506103c661064a3660046134ef565b61128b565b34801561065b57600080fd5b50600b54610365906001600160a01b031681565b34801561067b57600080fd5b506015546104cd9060ff1681565b34801561069557600080fd5b506103c66106a4366004613626565b6113db565b3480156106b557600080fd5b506104cd6106c4366004613626565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156106ee57600080fd5b506015546104cd90610100900460ff1681565b34801561070d57600080fd5b506103c661071c36600461367e565b6115f4565b34801561072d57600080fd5b506103c661073c366004613626565b61166d565b34801561074d57600080fd5b506104cd61075c366004613626565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561078657600080fd5b50610398611769565b34801561079b57600080fd5b506103986107aa366004613626565b6001600160a01b031660009081526001602052604090205490565b3480156107d157600080fd5b506103c6611784565b3480156107e657600080fd5b506103c66107f536600461367e565b61183f565b34801561080657600080fd5b506000546001600160a01b0316610365565b34801561082457600080fd5b506104cd6119e9565b34801561083957600080fd5b506103c6611a58565b34801561084e57600080fd5b5060408051808201909152600481527f4d494e54000000000000000000000000000000000000000000000000000000006020820152610480565b34801561089457600080fd5b506104cd6108a3366004613482565b611cc0565b3480156108b457600080fd5b506103c66108c336600461369c565b611cd7565b3480156108d457600080fd5b506103c66108e33660046136cf565b611da9565b3480156108f457600080fd5b506009546104199061ffff808216916201000081048216916401000000009091041683565b34801561092557600080fd5b506103c66109343660046136ec565b611e4b565b34801561094557600080fd5b506103986109543660046136ec565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561098b57600080fd5b50610398600f5481565b3480156109a157600080fd5b506103c66109b0366004613626565b611edf565b3480156109c157600080fd5b506103c66122af565b3480156109d657600080fd5b506103c66109e536600461367e565b612392565b3480156109f657600080fd5b50600c54600d54610a11916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610379565b348015610a3d57600080fd5b50600e546104cd90610100900460ff1681565b348015610a5c57600080fd5b506104cd610a6b366004613626565b61243a565b6000546001600160a01b03163314610ac35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b6015546040517fefbdbabd00000000000000000000000000000000000000000000000000000000815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610b3157600080fd5b505af1158015610b45573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610b9b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6015546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610b17908590859060040161375e565b6000610bf83384846124c8565b5060015b92915050565b6000610c106012600a613895565b601454610c1d91906138a4565b905090565b6000610c306012600a613895565b610c3e906305f5e1006138df565b610c4757600080fd5b610c536012600a613895565b610c1d906305f5e1006138df565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610cc6576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610cc09084906138fe565b90915550505b610cd18484846125d5565b949350505050565b6000546001600160a01b03163314610d275760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6103e8610d366012600a613895565b610d44906305f5e1006138df565b610d4e91906138a4565b8183610d5c6012600a613895565b610d6a906305f5e1006138df565b610d7491906138df565b610d7e91906138a4565b1015610df25760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610aba565b8082610e006012600a613895565b610e0e906305f5e1006138df565b610e1891906138df565b610e2291906138a4565b6014555050565b8051825114610e7a5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610aba565b60005b82518160ff161015610f4557818160ff1681518110610e9e57610e9e613915565b6020026020010151610ec5336001600160a01b031660009081526001602052604090205490565b1015610ed057600080fd5b610f3233848360ff1681518110610ee957610ee9613915565b60200260200101516012600a610eff9190613895565b858560ff1681518110610f1457610f14613915565b6020026020010151610f2691906138df565b60008060006001612a8a565b5080610f3d81613944565b915050610e7d565b505050565b6000546001600160a01b03163314610f985760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6107d08361ffff1611158015610fb457506107d08261ffff1611155b8015610fc657506107d08161ffff1611155b6110125760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610aba565b6008805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b031633146110d35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6015546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561113a57600080fd5b505af115801561114e573d6000803e3d6000fd5b5050505050565b6000546001600160a01b031633146111a35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b83856111b16012600a613895565b6111bf906305f5e1006138df565b6111c991906138df565b6111d391906138a4565b60115581836111e46012600a613895565b6111f2906305f5e1006138df565b6111fc91906138df565b61120691906138a4565b601255600f5550505050565b6000546001600160a01b031633146112605760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112d95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6103e86112e86012600a613895565b6112f6906305f5e1006138df565b61130091906138a4565b818361130e6012600a613895565b61131c906305f5e1006138df565b61132691906138df565b61133091906138a4565b10156113a45760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610aba565b80826113b26012600a613895565b6113c0906305f5e1006138df565b6113ca91906138df565b6113d491906138a4565b6013555050565b6000546001600160a01b031633146114295760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6001600160a01b0381166114a55760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610aba565b6001600160a01b03811661dead14156115265760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610aba565b6000805461153f916001600160a01b03909116906115f4565b61154a8160016115f4565b600080546001600160a01b03168152600160205260409020541561159157600080546001600160a01b0316808252600160205260409091205461158f919083906125d5565b505b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b031633146116425760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146116bb5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b601554610100900460ff16156116d057600080fd5b6001600160a01b0381163014156117295760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610aba565b601580546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b60006117776012600a613895565b601354610c1d91906138a4565b6000546001600160a01b031633146117d25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b600080546117eb916001600160a01b03909116906115f4565b600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b0316331461188d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b80611904576001600160a01b03828116600081815260026020526040808220805460ff1916905560155490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610b17565b6003541561196b576203f4806003544261191e91906138fe565b1161196b5760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610aba565b6001600160a01b0382811660008181526002602052604090819020805460ff191660019081179091554260035560155491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610b17565b5050565b600080546001600160a01b03163314611a385760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b600a54611a529030906001600160a01b03166000196124c8565b50600190565b6000546001600160a01b03163314611aa65760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b60155460ff1615611af95760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610aba565b601554610100900460ff16611b505760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610aba565b6015546201000090046001600160a01b0316611b9657601580547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601554600b546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611c2157600080fd5b505af1925050508015611c32575060015b506015805460ff19166001179055600b5461271090611c6f906001600160a01b03166001600160a01b031660009081526001602052604090205490565b611c7a9060056138df565b611c8491906138a4565b601155600b546001600160a01b03166000908152600160205260409020546103e890611cb19060016138df565b611cbb91906138a4565b601255565b6000611ccd3384846125d5565b5060019392505050565b6000546001600160a01b03163314611d255760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6009805461ffff83811662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090921690851617179055611d698183613964565b6009805461ffff92909216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff9092169190911790555050565b6000546001600160a01b03163314611df75760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b600e80548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790611e4090831515815260200190565b60405180910390a150565b6000546001600160a01b03163314611e995760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b600c80546001600160a01b039384167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155600d8054929093169116179055565b6000546001600160a01b03163314611f2d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f96919061398a565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fe3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612007919061398a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561206a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208e919061398a565b90506001600160a01b03811661223757816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612100919061398a565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561214d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612171919061398a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156121d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fa919061398a565b600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905561226b565b600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b600a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416908117909155610f459030906000196124c8565b6000546001600160a01b031633146122fd5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b601554610100900460ff16156123555760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610aba565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f1935050505015801561238f573d6000803e3d6000fd5b50565b6000546001600160a01b031633146123e05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6015546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610b17565b6015546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa1580156124a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfc91906139a7565b6001600160a01b03831661251e5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610aba565b6001600160a01b0382166125745760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610aba565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166126535760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610aba565b6001600160a01b0383166126cf5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610aba565b600082116127455760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610aba565b6001600160a01b0384166000908152600260205260408120548190819060ff161561277357600192506127a1565b6001600160a01b03861660009081526002602052604090205460ff161561279d57600191506127a1565b5060015b6127ab8787612cca565b156129b15760155460ff166128025760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610aba565b828061280b5750815b156128cf576001600160a01b03871660009081526006602052604090205460ff1615801561285257506001600160a01b03861660009081526006602052604090205460ff16155b156128cf576013548511156128cf5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610aba565b600a546001600160a01b038781169116148015906128eb575081155b156129b1576001600160a01b03861660009081526006602052604090205460ff166129b15760145485612933886001600160a01b031660009081526001602052604090205490565b61293d91906139c4565b11156129b15760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610aba565b6001600160a01b03871660009081526005602052604090205460019060ff16806129f357506001600160a01b03871660009081526005602052604090205460ff165b156129fc575060005b8215612a6f57600e5460ff16158015612a1c5750600e54610100900460ff165b15612a6f5742600f54601054612a3291906139c4565b1015612a6f57306000908152600160205260409020546011548110612a6d576012548110612a5f57506012545b612a6881612d9f565b426010555b505b612a7e88888884888888612a8a565b98975050505050505050565b601554600090610100900460ff16612b3657612aa68888612f9f565b601554610100900460ff16158015612ac35750612ac38888612cca565b15612b365760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610aba565b612b408888612cca565b15612bf3576015546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152898116602483015260448201899052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015612bdc575060408051601f3d908101601f19168201909252612bd9918101906139a7565b60015b612be557600080fd5b905080612bf157600080fd5b505b6001600160a01b03881660009081526001602052604081208054889290612c1b9084906138fe565b909155506000905085612c2e5786612c3a565b612c3a8986868a6130fd565b6001600160a01b038916600090815260016020526040812080549293508392909190612c679084906139c4565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612cb391815260200190565b60405180910390a350600198975050505050505050565b600080546001600160a01b03848116911614801590612cf757506000546001600160a01b03838116911614155b8015612d0e57506000546001600160a01b03163214155b8015612d3357506001600160a01b03821660009081526007602052604090205460ff16155b8015612d5857506001600160a01b03831660009081526007602052604090205460ff16155b8015612d6f57506001600160a01b03821661dead14155b8015612d8357506001600160a01b03821615155b8015612d9857506001600160a01b0383163014155b9392505050565b600e805460ff19166001179055306000908152600460209081526040808320600a546001600160a01b0316845290915290205460001914612e0557306000908152600460209081526040808320600a546001600160a01b03168452909152902060001990555b60095462010000900461ffff16612e1b57612f92565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612e5057612e50613915565b6001600160a01b03928316602091820292909201810191909152600a54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015612ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ee6919061398a565b81600181518110612ef957612ef9613915565b6001600160a01b039283166020918202929092010152600a54600d546040517f791ac9470000000000000000000000000000000000000000000000000000000081529183169263791ac94792612f5e92879260009288929091169042906004016139dc565b600060405180830381600087803b158015612f7857600080fd5b505af1158015612f8c573d6000803e3d6000fd5b50505050505b50600e805460ff19169055565b601554610100900460ff161561301d5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610aba565b6130278282612cca565b1580156130415750600b546001600160a01b038281169116145b156119e5576001600160a01b038083166000908152600760205260409020805460ff191660011790556015805461ff0019166101001790819055620100009004166130b657601580547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b600e805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b6000808415613113575060085461ffff1661313d565b831561312c575060085462010000900461ffff1661313d565b50600854640100000000900461ffff165b600061271061314c83866138df565b61315691906138a4565b60095490915060009061ffff64010000000082048116916131789116846138df565b61318291906138a4565b9050801561321a5761319481836138fe565b600c546001600160a01b0316600081815260016020526040812080549395509192849291906131c49084906139c4565b92505081905550806001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161321091815260200190565b60405180910390a3505b30600090815260016020526040812080548492906132399084906139c4565b909155505060405182815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361328881836139c4565b612a7e90866138fe565b801515811461238f57600080fd5b600080604083850312156132b357600080fd5b82356132be81613292565b915060208301356132ce81613292565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613331576133316132d9565b604052919050565b600067ffffffffffffffff821115613353576133536132d9565b5060051b60200190565b6001600160a01b038116811461238f57600080fd5b600082601f83011261338357600080fd5b8135602061339861339383613339565b613308565b82815260059290921b840181019181810190868411156133b757600080fd5b8286015b848110156133db5780356133ce8161335d565b83529183019183016133bb565b509695505050505050565b600080604083850312156133f957600080fd5b823567ffffffffffffffff81111561341057600080fd5b61341c85828601613372565b92505060208301356132ce81613292565b600060208083528351808285015260005b8181101561345a5785810183015185820160400152820161343e565b8181111561346c576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561349557600080fd5b82356134a08161335d565b946020939093013593505050565b6000806000606084860312156134c357600080fd5b83356134ce8161335d565b925060208401356134de8161335d565b929592945050506040919091013590565b6000806040838503121561350257600080fd5b50508035926020909101359150565b6000806040838503121561352457600080fd5b823567ffffffffffffffff8082111561353c57600080fd5b61354886838701613372565b935060209150818501358181111561355f57600080fd5b85019050601f8101861361357257600080fd5b803561358061339382613339565b81815260059190911b8201830190838101908883111561359f57600080fd5b928401925b828410156135bd578335825292840192908401906135a4565b80955050505050509250929050565b803561ffff811681146135de57600080fd5b919050565b6000806000606084860312156135f857600080fd5b613601846135cc565b925061360f602085016135cc565b915061361d604085016135cc565b90509250925092565b60006020828403121561363857600080fd5b8135612d988161335d565b600080600080600060a0868803121561365b57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000806040838503121561369157600080fd5b82356132be8161335d565b600080604083850312156136af57600080fd5b6136b8836135cc565b91506136c6602084016135cc565b90509250929050565b6000602082840312156136e157600080fd5b8135612d9881613292565b600080604083850312156136ff57600080fd5b823561370a8161335d565b915060208301356132ce8161335d565b600081518084526020808501945080840160005b838110156137535781516001600160a01b03168752958201959082019060010161372e565b509495945050505050565b604081526000613771604083018561371a565b905082151560208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b808511156137ec5781600019048211156137d2576137d2613782565b808516156137df57918102915b93841c93908002906137b6565b509250929050565b60008261380357506001610bfc565b8161381057506000610bfc565b816001811461382657600281146138305761384c565b6001915050610bfc565b60ff84111561384157613841613782565b50506001821b610bfc565b5060208310610133831016604e8410600b841016171561386f575081810a610bfc565b61387983836137b1565b806000190482111561388d5761388d613782565b029392505050565b6000612d9860ff8416836137f4565b6000826138da577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008160001904831182151516156138f9576138f9613782565b500290565b60008282101561391057613910613782565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff81141561395b5761395b613782565b60010192915050565b600061ffff80831681851680830382111561398157613981613782565b01949350505050565b60006020828403121561399c57600080fd5b8151612d988161335d565b6000602082840312156139b957600080fd5b8151612d9881613292565b600082198211156139d7576139d7613782565b500190565b85815284602082015260a0604082015260006139fb60a083018661371a565b6001600160a01b039490941660608301525060800152939250505056fea26469706673582212204909f1285f3abf46e3e4d04a0dcf4bdaf4270c699612c81f67f2908518904d4764736f6c634300080c0033

Deployed Bytecode Sourcemap

4180:19000:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5689:73;;;;;;;;;;;;5720:42;5689:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;5689:73:0;;;;;;;;6204:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;6204:28:0;245:177:1;13750:151:0;;;;;;;;;;-1:-1:-1;13750:151:0;;;;;:::i;:::-;;:::i;:::-;;13321:172;;;;;;;;;;-1:-1:-1;13321:172:0;;;;;:::i;:::-;;:::i;5191:114::-;;;;;;;;;;-1:-1:-1;5191:114:0;;;;;;;;;;;;;;;;;;;;;;;;;;3236:6:1;3269:15;;;3251:34;;3321:15;;;3316:2;3301:18;;3294:43;3373:15;;3353:18;;;3346:43;;;;3214:2;3199:18;5191:114:0;3030:365:1;10294:80:0;;;;;;;;;;-1:-1:-1;10366:5:0;;;;;;;;;;;;;;;;;10294:80;;;;;;;:::i;5628:26::-;;;;;;;;;;-1:-1:-1;5628:26:0;;;;-1:-1:-1;;;;;5628:26:0;;;10904:159;;;;;;;;;;-1:-1:-1;10904:159:0;;;;;:::i;:::-;;:::i;:::-;;;4794:14:1;;4787:22;4769:41;;4757:2;4742:18;10904:159:0;4629:187:1;15731:112:0;;;;;;;;;;;;;:::i;9997:115::-;;;;;;;;;;;;;:::i;11570:306::-;;;;;;;;;;-1:-1:-1;11570:306:0;;;;;:::i;:::-;;:::i;14781:267::-;;;;;;;;;;-1:-1:-1;14781:267:0;;;;;:::i;:::-;;:::i;20905:408::-;;;;;;;;;;-1:-1:-1;20905:408:0;;;;;:::i;:::-;;:::i;5425:42::-;;;;;;;;;;;;5463:4;5425:42;;6239:25;;;;;;;;;;;;;;;;10118:80;;;;;;;;;;-1:-1:-1;10118:80:0;;4901:2;6820:36:1;;6808:2;6793:18;10118:80:0;6678:184:1;13909:397:0;;;;;;;;;;-1:-1:-1;13909:397:0;;;;;:::i;:::-;;:::i;13634:108::-;;;;;;;;;;-1:-1:-1;13634:108:0;;;;;:::i;:::-;;:::i;15851:338::-;;;;;;;;;;-1:-1:-1;15851:338:0;;;;;:::i;:::-;;:::i;15056:140::-;;;;;;;;;;-1:-1:-1;15056:140:0;;;;;:::i;:::-;;:::i;14504:269::-;;;;;;;;;;-1:-1:-1;14504:269:0;;;;;:::i;:::-;;:::i;5661:21::-;;;;;;;;;;-1:-1:-1;5661:21:0;;;;-1:-1:-1;;;;;5661:21:0;;;6371:34;;;;;;;;;;-1:-1:-1;6371:34:0;;;;;;;;8855:588;;;;;;;;;;-1:-1:-1;8855:588:0;;;;;:::i;:::-;;:::i;15342:125::-;;;;;;;;;;-1:-1:-1;15342:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;15431:28:0;15407:4;15431:28;;;:19;:28;;;;;;;;;15342:125;6412:36;;;;;;;;;;-1:-1:-1;6412:36:0;;;;;;;;;;;15475:134;;;;;;;;;;-1:-1:-1;15475:134:0;;;;;:::i;:::-;;:::i;12940:220::-;;;;;;;;;;-1:-1:-1;12940:220:0;;;;;:::i;:::-;;:::i;15204:130::-;;;;;;;;;;-1:-1:-1;15204:130:0;;;;;:::i;:::-;-1:-1:-1;;;;;15296:30:0;15272:4;15296:30;;;:21;:30;;;;;;;;;15204:130;15617:106;;;;;;;;;;;;;:::i;10606:117::-;;;;;;;;;;-1:-1:-1;10606:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;10699:16:0;10672:7;10699:16;;;:7;:16;;;;;;;10606:117;9451:193;;;;;;;;;;;;;:::i;12432:500::-;;;;;;;;;;-1:-1:-1;12432:500:0;;;;;:::i;:::-;;:::i;10380:79::-;;;;;;;;;;-1:-1:-1;10432:7:0;10450:6;-1:-1:-1;;;;;10450:6:0;10380:79;;11389:173;;;;;;;;;;;;;:::i;20166:541::-;;;;;;;;;;;;;:::i;10204:84::-;;;;;;;;;;-1:-1:-1;10278:7:0;;;;;;;;;;;;;;;;;10204:84;;10731:165;;;;;;;;;;-1:-1:-1;10731:165:0;;;;;:::i;:::-;;:::i;14318:178::-;;;;;;;;;;-1:-1:-1;14318:178:0;;;;;:::i;:::-;;:::i;16371:164::-;;;;;;;;;;-1:-1:-1;16371:164:0;;;;;:::i;:::-;;:::i;5314:102::-;;;;;;;;;;-1:-1:-1;5314:102:0;;;;;;;;;;;;;;;;;;;;;;16197:166;;;;;;;;;;-1:-1:-1;16197:166:0;;;;;:::i;:::-;;:::i;10465:133::-;;;;;;;;;;-1:-1:-1;10465:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10567:19:0;;;10549:7;10567:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10465:133;6122:44;;;;;;;;;;;;;;;;11884:540;;;;;;;;;;-1:-1:-1;11884:540:0;;;;;:::i;:::-;;:::i;20715:182::-;;;;;;;;;;;;;:::i;13168:145::-;;;;;;;;;;-1:-1:-1;13168:145:0;;;;;:::i;:::-;;:::i;5861:184::-;;;;;;;;;;-1:-1:-1;5861:184:0;;;;;;-1:-1:-1;;;;;5861:184:0;;;;;;;;;;;-1:-1:-1;;;;;10032:15:1;;;10014:34;;10084:15;;;;10079:2;10064:18;;10057:43;9926:18;5861:184:0;9763:343:1;6076:39:0;;;;;;;;;;-1:-1:-1;6076:39:0;;;;;;;;;;;13501:125;;;;;;;;;;-1:-1:-1;13501:125:0;;;;;:::i;:::-;;:::i;13750:151::-;6840:6;;-1:-1:-1;;;;;6840:6:0;6850:10;6840:20;6832:50;;;;-1:-1:-1;;;6832:50:0;;10313:2:1;6832:50:0;;;10295:21:1;10352:2;10332:18;;;10325:30;-1:-1:-1;;;10371:18:1;;;10364:47;10428:18;;6832:50:0;;;;;;;;;13845:9:::1;::::0;:48:::1;::::0;;;;10644:14:1;;10637:22;13845:48:0::1;::::0;::::1;10619:41:1::0;10703:14;;10696:22;10676:18;;;10669:50;13845:9:0;;;::::1;-1:-1:-1::0;;;;;13845:9:0::1;::::0;:24:::1;::::0;10592:18:1;;13845:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13750:151:::0;;:::o;13321:172::-;6840:6;;-1:-1:-1;;;;;6840:6:0;6850:10;6840:20;6832:50;;;;-1:-1:-1;;;6832:50:0;;10313:2:1;6832:50:0;;;10295:21:1;10352:2;10332:18;;;10325:30;-1:-1:-1;;;10371:18:1;;;10364:47;10428:18;;6832:50:0;10111:341:1;6832:50:0;13429:9:::1;::::0;:56:::1;::::0;;;;:9;;;::::1;-1:-1:-1::0;;;;;13429:9:0::1;::::0;:37:::1;::::0;:56:::1;::::0;13467:8;;13477:7;;13429:56:::1;;;:::i;10904:159::-:0;10979:4;10996:37;11005:10;11017:7;11026:6;10996:8;:37::i;:::-;-1:-1:-1;11051:4:0;10904:159;;;;;:::o;15731:112::-;15776:7;15821:13;4901:2;15821;:13;:::i;:::-;15803:14;;:32;;;;:::i;:::-;15796:39;;15731:112;:::o;9997:115::-;10052:7;4964:13;4901:2;4964;:13;:::i;:::-;4947:30;;4747:11;4947:30;:::i;:::-;10063:31;;10083:8;;;10063:31;4964:13;4901:2;4964;:13;:::i;:::-;4947:30;;4747:11;4947:30;:::i;11570:306::-;-1:-1:-1;;;;;11691:19:0;;11670:4;11691:19;;;:11;:19;;;;;;;;11711:10;11691:31;;;;;;;;-1:-1:-1;;11691:52:0;11687:126;;-1:-1:-1;;;;;11760:19:0;;;;;;:11;:19;;;;;;;;11780:10;11760:31;;;;;;;:41;;11795:6;;11760:19;:41;;11795:6;;11760:41;:::i;:::-;;;;-1:-1:-1;;11687:126:0;11832:36;11842:6;11850:9;11861:6;11832:9;:36::i;:::-;11825:43;11570:306;-1:-1:-1;;;;11570:306:0:o;14781:267::-;6840:6;;-1:-1:-1;;;;;6840:6:0;6850:10;6840:20;6832:50;;;;-1:-1:-1;;;6832:50:0;;10313:2:1;6832:50:0;;;10295:21:1;10352:2;10332:18;;;10325:30;-1:-1:-1;;;10371:18:1;;;10364:47;10428:18;;6832:50:0;10111:341:1;6832:50:0;14923:4:::1;4964:13;4901:2;4964;:13;:::i;:::-;4947:30;::::0;4747:11:::1;4947:30;:::i;:::-;14913:14;;;;:::i;:::-;14901:7:::0;14890;4964:13:::1;4901:2;4964;:13;:::i;:::-;4947:30;::::0;4747:11:::1;4947:30;:::i;:::-;14880:17;;;;:::i;:::-;14879:29;;;;:::i;:::-;:49;;14871:112;;;::::0;-1:-1:-1;;;14871:112:0;;14102:2:1;14871:112:0::1;::::0;::::1;14084:21:1::0;14141:2;14121:18;;;14114:30;14180:34;14160:18;;;14153:62;14251:20;14231:18;;;14224:48;14289:19;;14871:112:0::1;13900:414:1::0;14871:112:0::1;15033:7:::0;15022;4964:13:::1;4901:2;4964;:13;:::i;:::-;4947:30;::::0;4747:11:::1;4947:30;:::i;:::-;15012:17;;;;:::i;:::-;15011:29;;;;:::i;:::-;14994:14;:46:::0;-1:-1:-1;;14781:267:0:o;20905:408::-;21030:7;:14;21011:8;:15;:33;21003:67;;;;-1:-1:-1;;;21003:67:0;;14521:2:1;21003:67:0;;;14503:21:1;14560:2;14540:18;;;14533:30;14599:23;14579:18;;;14572:51;14640:18;;21003:67:0;14319:345:1;21003:67:0;21086:7;21081:225;21103:8;:15;21099:1;:19;;;21081:225;;;21173:7;21181:1;21173:10;;;;;;;;;;:::i;:::-;;;;;;;21148:21;21158:10;-1:-1:-1;;;;;10699:16:0;10672:7;10699:16;;;:7;:16;;;;;;;10606:117;21148:21;:35;;21140:44;;;;;;21199:95;21217:10;21229:8;21238:1;21229:11;;;;;;;;;;:::i;:::-;;;;;;;4901:2;21253;:13;;;;:::i;:::-;21242:7;21250:1;21242:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;21268:5;21275;21282;21289:4;21199:17;:95::i;:::-;-1:-1:-1;21120:3:0;;;;:::i;:::-;;;;21081:225;;;;20905:408;;:::o;13909:397::-;6840:6;;-1:-1:-1;;;;;6840:6:0;6850:10;6840:20;6832:50;;;;-1:-1:-1;;;6832:50:0;;10313:2:1;6832:50:0;;;10295:21:1;10352:2;10332:18;;;10325:30;-1:-1:-1;;;10371:18:1;;;10364:47;10428:18;;6832:50:0;10111:341:1;6832:50:0;5463:4:::1;14016:6;:21;;;;:65;;;;;5513:4;14058:7;:23;;;;14016:65;:117;;;;;5567:4;14102:11;:31;;;;14016:117;14008:170;;;::::0;-1:-1:-1;;;14008:170:0;;15240:2:1;14008:170:0::1;::::0;::::1;15222:21:1::0;15279:2;15259:18;;;15252:30;15318:25;15298:18;;;15291:53;15361:18;;14008:170:0::1;15038:347:1::0;14008:170:0::1;14189:9;:25:::0;;::::1;::::0;;::::1;14225:27:::0;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;14263:35:::0;::::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;13909:397::o;13634:108::-;6840:6;;-1:-1:-1;;;;;6840:6:0;6850:10;6840:20;6832:50;;;;-1:-1:-1;;;6832:50:0;;10313:2:1;6832:50:0;;;10295:21:1;10352:2;10332:18;;;10325:30;-1:-1:-1;;;10371:18:1;;;10364:47;10428:18;;6832:50:0;10111:341:1;6832:50:0;13703:9:::1;::::0;:31:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;13703:31:0::1;::::0;::::1;160:74:1::0;13703:9:0;;;::::1;::::0;;::::1;::::0;:22:::1;::::0;133:18:1;;13703:31:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13634:108:::0;:::o;15851:338::-;6840:6;;-1:-1:-1;;;;;6840:6:0;6850:10;6840:20;6832:50;;;;-1:-1:-1;;;6832:50:0;;10313:2:1;6832:50:0;;;10295:21:1;10352:2;10332:18;;;10325:30;-1:-1:-1;;;10371:18:1;;;10364:47;10428:18;;6832:50:0;10111:341:1;6832:50:0;16065:16;16045;4964:13:::1;4901:2;4964;:13;:::i;:::-;4947:30;::::0;4747:11:::1;4947:30;:::i;:::-;16035:26;;;;:::i;:::-;16034:47;;;;:::i;:::-;16018:13;:63:::0;16133:13;16116;4964::::1;4901:2;4964;:13;:::i;:::-;4947:30;::::0;4747:11:::1;4947:30;:::i;:::-;16106:23;;;;:::i;:::-;16105:41;;;;:::i;:::-;16092:10;:54:::0;16157:17:::1;:24:::0;-1:-1:-1;;;;15851:338:0:o;15056:140::-;6840:6;;-1:-1:-1;;;;;6840:6:0;6850:10;6840:20;6832:50;;;;-1:-1:-1;;;6832:50:0;;10313:2:1;6832:50:0;;;10295:21:1;10352:2;10332:18;;;10325:30;-1:-1:-1;;;10371:18:1;;;10364:47;10428:18;;6832:50:0;10111:341:1;6832:50:0;-1:-1:-1;;;;;15148:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;15148:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15056:140::o;14504:269::-;6840:6;;-1:-1:-1;;;;;6840:6:0;6850:10;6840:20;6832:50;;;;-1:-1:-1;;;6832:50:0;;10313:2:1;6832:50:0;;;10295:21:1;10352:2;10332:18;;;10325:30;-1:-1:-1;;;10371:18:1;;;10364:47;10428:18;;6832:50:0;10111:341:1;6832:50:0;14645:4:::1;4964:13;4901:2;4964;:13;:::i;:::-;4947:30;::::0;4747:11:::1;4947:30;:::i;:::-;14635:14;;;;:::i;:::-;14623:7:::0;14612;4964:13:::1;4901:2;4964;:13;:::i;:::-;4947:30;::::0;4747:11:::1;4947:30;:::i;:::-;14602:17;;;;:::i;:::-;14601:29;;;;:::i;:::-;:49;;14593:117;;;::::0;-1:-1:-1;;;14593:117:0;;15592:2:1;14593:117:0::1;::::0;::::1;15574:21:1::0;15631:2;15611:18;;;15604:30;15670:34;15650:18;;;15643:62;15741:25;15721:18;;;15714:53;15784:19;;14593:117:0::1;15390:419:1::0;14593:117:0::1;14758:7:::0;14747;4964:13:::1;4901:2;4964;:13;:::i;:::-;4947:30;::::0;4747:11:::1;4947:30;:::i;:::-;14737:17;;;;:::i;:::-;14736:29;;;;:::i;:::-;14721:12;:44:::0;-1:-1:-1;;14504:269:0:o;8855:588::-;6840:6;;-1:-1:-1;;;;;6840:6:0;6850:10;6840:20;6832:50;;;;-1:-1:-1;;;6832:50:0;;10313:2:1;6832:50:0;;;10295:21:1;10352:2;10332:18;;;10325:30;-1:-1:-1;;;10371:18:1;;;10364:47;10428:18;;6832:50:0;10111:341:1;6832:50:0;-1:-1:-1;;;;;8934:22:0;::::1;8926:96;;;::::0;-1:-1:-1;;;8926:96:0;;16016:2:1;8926:96:0::1;::::0;::::1;15998:21:1::0;16055:2;16035:18;;;16028:30;16094:34;16074:18;;;16067:62;16165:31;16145:18;;;16138:59;16214:19;;8926:96:0::1;15814:425:1::0;8926:96:0::1;-1:-1:-1::0;;;;;9041:16:0;::::1;5720:42;9041:16;;9033:90;;;::::0;-1:-1:-1;;;9033:90:0;;16016:2:1;9033:90:0::1;::::0;::::1;15998:21:1::0;16055:2;16035:18;;;16028:30;16094:34;16074:18;;;16067:62;16165:31;16145:18;;;16138:59;16214:19;;9033:90:0::1;15814:425:1::0;9033:90:0::1;9154:6;::::0;;9134:34:::1;::::0;-1:-1:-1;;;;;9154:6:0;;::::1;::::0;9134:19:::1;:34::i;:::-;9179:35;9199:8;9209:4;9179:19;:35::i;:::-;9258:1;9248:6:::0;;-1:-1:-1;;;;;9248:6:0::1;10699:16:::0;;:7;:16;;;;;;9238:21;9235:99:::1;;9286:6;::::0;;-1:-1:-1;;;;;9286:6:0::1;10699:16:::0;;;:7;:16;;;;;;;9276:46:::1;::::0;9286:6;9294:8;;9276:9:::1;:46::i;:::-;;9235:99;9354:6;:17:::0;;;::::1;-1:-1:-1::0;;;;;9354:17:0;::::1;::::0;;::::1;::::0;;9387:38:::1;::::0;9354:17;;;;9387:38:::1;::::0;9354:6;9387:38:::1;8855:588:::0;:::o;15475:134::-;6840:6;;-1:-1:-1;;;;;6840:6:0;6850:10;6840:20;6832:50;;;;-1:-1:-1;;;6832:50:0;;10313:2:1;6832:50:0;;;10295:21:1;10352:2;10332:18;;;10325:30;-1:-1:-1;;;10371:18:1;;;10364:47;10428:18;;6832:50:0;10111:341:1;6832:50:0;-1:-1:-1;;;;;15563:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;15563:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15475:134::o;12940:220::-;6840:6;;-1:-1:-1;;;;;6840:6:0;6850:10;6840:20;6832:50;;;;-1:-1:-1;;;6832:50:0;;10313:2:1;6832:50:0;;;10295:21:1;10352:2;10332:18;;;10325:30;-1:-1:-1;;;10371:18:1;;;10364:47;10428:18;;6832:50:0;10111:341:1;6832:50:0;13024:16:::1;::::0;::::1;::::0;::::1;;;13023:17;13015:26;;;::::0;::::1;;-1:-1:-1::0;;;;;13060:28:0;::::1;13083:4;13060:28;;13052:55;;;::::0;-1:-1:-1;;;13052:55:0;;16446:2:1;13052:55:0::1;::::0;::::1;16428:21:1::0;16485:2;16465:18;;;16458:30;16524:16;16504:18;;;16497:44;16558:18;;13052:55:0::1;16244:338:1::0;13052:55:0::1;13118:9;:34:::0;;-1:-1:-1;;;;;13118:34:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;12940:220::o;15617:106::-;15658:7;15701:13;4901:2;15701;:13;:::i;:::-;15685:12;;:30;;;;:::i;9451:193::-;6840:6;;-1:-1:-1;;;;;6840:6:0;6850:10;6840:20;6832:50;;;;-1:-1:-1;;;6832:50:0;;10313:2:1;6832:50:0;;;10295:21:1;10352:2;10332:18;;;10325:30;-1:-1:-1;;;10371:18:1;;;10364:47;10428:18;;6832:50:0;10111:341:1;6832:50:0;9536:6:::1;::::0;;9516:34:::1;::::0;-1:-1:-1;;;;;9536:6:0;;::::1;::::0;9516:19:::1;:34::i;:::-;9578:1;9561:19:::0;;;::::1;::::0;;9596:40:::1;::::0;9578:1;;9596:40:::1;::::0;9578:1;;9596:40:::1;9451:193::o:0;12432:500::-;6840:6;;-1:-1:-1;;;;;6840:6:0;6850:10;6840:20;6832:50;;;;-1:-1:-1;;;6832:50:0;;10313:2:1;6832:50:0;;;10295:21:1;10352:2;10332:18;;;10325:30;-1:-1:-1;;;10371:18:1;;;10364:47;10428:18;;6832:50:0;10111:341:1;6832:50:0;12513:16;12509:416:::1;;-1:-1:-1::0;;;;;12546:13:0;;::::1;12562:5;12546:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;12546:21:0::1;::::0;;12582:9:::1;::::0;:32;;;;;::::1;::::0;::::1;16755:74:1::0;;;;16845:18;;;16838:50;;;;12582:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;16728:18:1;;12582:32:0::1;16587:307:1::0;12509:416:0::1;12651:17;::::0;:22;12647:136:::1;;12740:6;12720:17;;12702:15;:35;;;;:::i;:::-;:44;12694:73;;;::::0;-1:-1:-1;;;12694:73:0;;17101:2:1;12694:73:0::1;::::0;::::1;17083:21:1::0;17140:2;17120:18;;;17113:30;17179:18;17159;;;17152:46;17215:18;;12694:73:0::1;16899:340:1::0;12694:73:0::1;-1:-1:-1::0;;;;;12797:13:0;;::::1;;::::0;;;:7:::1;:13;::::0;;;;;;:20;;-1:-1:-1;;12797:20:0::1;12813:4;12797:20:::0;;::::1;::::0;;;12852:15:::1;12832:17;:35:::0;12882:9:::1;::::0;:31;;;;;::::1;::::0;::::1;16755:74:1::0;;;;16845:18;;;16838:50;12882:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;16728:18:1;;12882:31:0::1;16587:307:1::0;12509:416:0::1;12432:500:::0;;:::o;11389:173::-;11453:4;6840:6;;-1:-1:-1;;;;;6840:6:0;6850:10;6840:20;6832:50;;;;-1:-1:-1;;;6832:50:0;;10313:2:1;6832:50:0;;;10295:21:1;10352:2;10332:18;;;10325:30;-1:-1:-1;;;10371:18:1;;;10364:47;10428:18;;6832:50:0;10111:341:1;6832:50:0;11502:9:::1;::::0;11470:62:::1;::::0;11487:4:::1;::::0;-1:-1:-1;;;;;11502:9:0::1;-1:-1:-1::0;;11470:8:0::1;:62::i;:::-;-1:-1:-1::0;11550:4:0::1;11389:173:::0;:::o;20166:541::-;6840:6;;-1:-1:-1;;;;;6840:6:0;6850:10;6840:20;6832:50;;;;-1:-1:-1;;;6832:50:0;;10313:2:1;6832:50:0;;;10295:21:1;10352:2;10332:18;;;10325:30;-1:-1:-1;;;10371:18:1;;;10364:47;10428:18;;6832:50:0;10111:341:1;6832:50:0;20228:14:::1;::::0;::::1;;20227:15;20219:52;;;::::0;-1:-1:-1;;;20219:52:0;;17446:2:1;20219:52:0::1;::::0;::::1;17428:21:1::0;17485:2;17465:18;;;17458:30;17524:26;17504:18;;;17497:54;17568:18;;20219:52:0::1;17244:348:1::0;20219:52:0::1;20290:16;::::0;::::1;::::0;::::1;;;20282:53;;;::::0;-1:-1:-1;;;20282:53:0;;17799:2:1;20282:53:0::1;::::0;::::1;17781:21:1::0;17838:2;17818:18;;;17811:30;17877:26;17857:18;;;17850:54;17921:18;;20282:53:0::1;17597:348:1::0;20282:53:0::1;20357:9;::::0;;;::::1;-1:-1:-1::0;;;;;20357:9:0::1;20346:99;;20397:9;:36:::0;;;::::1;20427:4;20397:36:::0;::::1;;::::0;;20346:99:::1;20459:9;::::0;20479:6:::1;::::0;20459:85:::1;::::0;;;;-1:-1:-1;;;;;20479:6:0;;::::1;20459:85;::::0;::::1;18173:74:1::0;18295:10;20494:12:0::1;18283:23:1::0;18263:18;;;18256:51;18355:18;20516:15:0::1;18343:31:1::0;18323:18;;;18316:59;4901:2:0::1;18391:18:1::0;;;18384:45;20459:9:0;;;::::1;;::::0;:19:::1;::::0;18145::1;;20459:85:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;20455:101:::0;20566:14:::1;:21:::0;;-1:-1:-1;;20566:21:0::1;20583:4;20566:21;::::0;;20625:6:::1;::::0;20640:5:::1;::::0;20615:17:::1;::::0;-1:-1:-1;;;;;20625:6:0::1;-1:-1:-1::0;;;;;10699:16:0;10672:7;10699:16;;;:7;:16;;;;;;;10606:117;20615:17:::1;:21;::::0;20635:1:::1;20615:21;:::i;:::-;20614:31;;;;:::i;:::-;20598:13;:47:::0;20680:6:::1;::::0;-1:-1:-1;;;;;20680:6:0::1;10672:7:::0;10699:16;;;:7;:16;;;;;;20695:4:::1;::::0;20670:21:::1;::::0;20690:1:::1;20670:21;:::i;:::-;20669:30;;;;:::i;:::-;20656:10;:43:::0;20166:541::o;10731:165::-;10809:4;10826:40;10836:10;10848:9;10859:6;10826:9;:40::i;:::-;-1:-1:-1;10884:4:0;;10731:165;-1:-1:-1;;;10731:165:0:o;14318:178::-;6840:6;;-1:-1:-1;;;;;6840:6:0;6850:10;6840:20;6832:50;;;;-1:-1:-1;;;6832:50:0;;10313:2:1;6832:50:0;;;10295:21:1;10352:2;10332:18;;;10325:30;-1:-1:-1;;;10371:18:1;;;10364:47;10428:18;;6832:50:0;10111:341:1;6832:50:0;14395:7:::1;:23:::0;;::::1;14429:19:::0;;::::1;::::0;::::1;::::0;;;;14395:23;;::::1;14429:19:::0;::::1;::::0;;14475:13:::1;14444:4:::0;14412:6;14475:13:::1;:::i;:::-;14459:7;:29:::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;14318:178:0:o;16371:164::-;6840:6;;-1:-1:-1;;;;;6840:6:0;6850:10;6840:20;6832:50;;;;-1:-1:-1;;;6832:50:0;;10313:2:1;6832:50:0;;;10295:21:1;10352:2;10332:18;;;10325:30;-1:-1:-1;;;10371:18:1;;;10364:47;10428:18;;6832:50:0;10111:341:1;6832:50:0;16447:19:::1;:29:::0;;;::::1;;;;-1:-1:-1::0;;16447:29:0;;::::1;;::::0;;16492:35:::1;::::0;::::1;::::0;::::1;::::0;16469:7;4794:14:1;4787:22;4769:41;;4757:2;4742:18;;4629:187;16492:35:0::1;;;;;;;;16371:164:::0;:::o;16197:166::-;6840:6;;-1:-1:-1;;;;;6840:6:0;6850:10;6840:20;6832:50;;;;-1:-1:-1;;;6832:50:0;;10313:2:1;6832:50:0;;;10295:21:1;10352:2;10332:18;;;10325:30;-1:-1:-1;;;10371:18:1;;;10364:47;10428:18;;6832:50:0;10111:341:1;6832:50:0;16285:11:::1;:27:::0;;-1:-1:-1;;;;;16285:27:0;;::::1;::::0;;;::::1;;::::0;;;16323:16;:32;;;;;::::1;::::0;::::1;;::::0;;16197:166::o;11884:540::-;6840:6;;-1:-1:-1;;;;;6840:6:0;6850:10;6840:20;6832:50;;;;-1:-1:-1;;;6832:50:0;;10313:2:1;6832:50:0;;;10295:21:1;10352:2;10332:18;;;10325:30;-1:-1:-1;;;10371:18:1;;;10364:47;10428:18;;6832:50:0;10111:341:1;6832:50:0;11953:20:::1;11986:9;11953:43;;12007:16;12037:10;-1:-1:-1::0;;;;;12037:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12026:40:0::1;;12075:4;12082:10;-1:-1:-1::0;;;;;12082:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12026:74;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;10032:15:1;;;12026:74:0::1;::::0;::::1;10014:34:1::0;10084:15;;10064:18;;;10057:43;9926:18;;12026:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12007:93:::0;-1:-1:-1;;;;;;12115:22:0;::::1;12111:200;;12174:10;-1:-1:-1::0;;;;;12174:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12163:43:0::1;;12215:4;12222:10;-1:-1:-1::0;;;;;12222:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12163:77;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;10032:15:1;;;12163:77:0::1;::::0;::::1;10014:34:1::0;10084:15;;10064:18;;;10057:43;9926:18;;12163:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12154:6;:86:::0;;;::::1;-1:-1:-1::0;;;;;12154:86:0;;;::::1;::::0;;;::::1;::::0;;12111:200:::1;;;12282:6;:17:::0;;;::::1;-1:-1:-1::0;;;;;12282:17:0;::::1;;::::0;;12111:200:::1;12321:9;:22:::0;;;::::1;-1:-1:-1::0;;;;;12321:22:0;::::1;::::0;;::::1;::::0;;;12354:62:::1;::::0;12371:4:::1;::::0;-1:-1:-1;;12354:8:0::1;:62::i;20715:182::-:0;6840:6;;-1:-1:-1;;;;;6840:6:0;6850:10;6840:20;6832:50;;;;-1:-1:-1;;;6832:50:0;;10313:2:1;6832:50:0;;;10295:21:1;10352:2;10332:18;;;10325:30;-1:-1:-1;;;10371:18:1;;;10364:47;10428:18;;6832:50:0;10111:341:1;6832:50:0;20782:16:::1;::::0;::::1;::::0;::::1;;;20781:17;20773:58;;;::::0;-1:-1:-1;;;20773:58:0;;19459:2:1;20773:58:0::1;::::0;::::1;19441:21:1::0;19498:2;19478:18;;;19471:30;19537;19517:18;;;19510:58;19585:18;;20773:58:0::1;19257:352:1::0;20773:58:0::1;20850:6;::::0;;20842:47:::1;::::0;-1:-1:-1;;;;;20850:6:0;;::::1;::::0;20867:21:::1;20842:47:::0;::::1;;;::::0;20867:21;;20842:47;20850:6;20842:47;20867:21;20850:6;20842:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;20715:182::o:0;13168:145::-;6840:6;;-1:-1:-1;;;;;6840:6:0;6850:10;6840:20;6832:50;;;;-1:-1:-1;;;6832:50:0;;10313:2:1;6832:50:0;;;10295:21:1;10352:2;10332:18;;;10325:30;-1:-1:-1;;;10371:18:1;;;10364:47;10428:18;;6832:50:0;10111:341:1;6832:50:0;13258:9:::1;::::0;:47:::1;::::0;;;;-1:-1:-1;;;;;16773:55:1;;;13258:47:0::1;::::0;::::1;16755:74:1::0;16872:14;;16865:22;16845:18;;;16838:50;13258:9:0;;;::::1;::::0;;::::1;::::0;:29:::1;::::0;16728:18:1;;13258:47:0::1;16587:307:1::0;13501:125:0;13586:9;;:32;;;;;-1:-1:-1;;;;;178:55:1;;;13586:32:0;;;160:74:1;13562:4:0;;13586:9;;;;;:23;;133:18:1;;13586:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;11071:310::-;-1:-1:-1;;;;;11166:20:0;;11158:52;;;;-1:-1:-1;;;11158:52:0;;20066:2:1;11158:52:0;;;20048:21:1;20105:2;20085:18;;;20078:30;20144:21;20124:18;;;20117:49;20183:18;;11158:52:0;19864:343:1;11158:52:0;-1:-1:-1;;;;;11229:21:0;;11221:53;;;;-1:-1:-1;;;11221:53:0;;20066:2:1;11221:53:0;;;20048:21:1;20105:2;20085:18;;;20078:30;20144:21;20124:18;;;20117:49;20183:18;;11221:53:0;19864:343:1;11221:53:0;-1:-1:-1;;;;;11287:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;11340:33;;391:25:1;;;11340:33:0;;364:18:1;11340:33:0;;;;;;;11071:310;;;:::o;16909:2061::-;16988:4;-1:-1:-1;;;;;17013:18:0;;17005:68;;;;-1:-1:-1;;;17005:68:0;;20414:2:1;17005:68:0;;;20396:21:1;20453:2;20433:18;;;20426:30;20492:34;20472:18;;;20465:62;20563:7;20543:18;;;20536:35;20588:19;;17005:68:0;20212:401:1;17005:68:0;-1:-1:-1;;;;;17092:16:0;;17084:64;;;;-1:-1:-1;;;17084:64:0;;20820:2:1;17084:64:0;;;20802:21:1;20859:2;20839:18;;;20832:30;20898:34;20878:18;;;20871:62;20969:5;20949:18;;;20942:33;20992:19;;17084:64:0;20618:399:1;17084:64:0;17176:1;17167:6;:10;17159:64;;;;-1:-1:-1;;;17159:64:0;;21224:2:1;17159:64:0;;;21206:21:1;21263:2;21243:18;;;21236:30;21302:34;21282:18;;;21275:62;21373:11;21353:18;;;21346:39;21402:19;;17159:64:0;21022:405:1;17159:64:0;-1:-1:-1;;;;;17322:13:0;;17234:8;17322:13;;;:7;:13;;;;;;17234:8;;;;17322:13;;17318:162;;;17358:4;17352:10;;17318:162;;;-1:-1:-1;;;;;17384:11:0;;;;;;:7;:11;;;;;;;;17380:100;;;17419:4;17412:11;;17380:100;;;-1:-1:-1;17464:4:0;17380:100;17493:20;17504:4;17510:2;17493:10;:20::i;:::-;17490:641;;;17534:14;;;;17530:89;;17569:34;;-1:-1:-1;;;17569:34:0;;21634:2:1;17569:34:0;;;21616:21:1;21673:2;21653:18;;;21646:30;21712:26;21692:18;;;21685:54;21756:18;;17569:34:0;21432:348:1;17530:89:0;17636:3;:11;;;;17643:4;17636:11;17633:231;;;-1:-1:-1;;;;;17672:27:0;;;;;;:21;:27;;;;;;;;17671:28;:58;;;;-1:-1:-1;;;;;;17704:25:0;;;;;;:21;:25;;;;;;;;17703:26;17671:58;17667:182;;;17772:12;;17762:6;:22;;17754:75;;;;-1:-1:-1;;;17754:75:0;;21987:2:1;17754:75:0;;;21969:21:1;22026:2;22006:18;;;21999:30;22065:34;22045:18;;;22038:62;22136:10;22116:18;;;22109:38;22164:19;;17754:75:0;21785:404:1;17754:75:0;17895:9;;-1:-1:-1;;;;;17881:24:0;;;17895:9;;17881:24;;;;:33;;;17910:4;17909:5;17881:33;17878:242;;;-1:-1:-1;;;;;17940:25:0;;;;;;:21;:25;;;;;;;;17935:170;;18024:14;;18014:6;17998:13;18008:2;-1:-1:-1;;;;;10699:16:0;10672:7;10699:16;;;:7;:16;;;;;;;10606:117;17998:13;:22;;;;:::i;:::-;:40;;17990:95;;;;-1:-1:-1;;;17990:95:0;;22529:2:1;17990:95:0;;;22511:21:1;22568:2;22548:18;;;22541:30;22607:34;22587:18;;;22580:62;22678:12;22658:18;;;22651:40;22708:19;;17990:95:0;22327:406:1;17990:95:0;-1:-1:-1;;;;;18176:25:0;;18143:12;18176:25;;;:19;:25;;;;;;18158:4;;18176:25;;;:52;;-1:-1:-1;;;;;;18205:23:0;;;;;;:19;:23;;;;;;;;18176:52;18173:98;;;-1:-1:-1;18254:5:0;18173:98;18287:4;18283:599;;;18313:6;;;;18312:7;:47;;;;-1:-1:-1;18340:19:0;;;;;;;18312:47;18308:557;;;18429:15;18409:17;;18398:8;;:28;;;;:::i;:::-;:46;18394:456;;;18518:4;18469:28;10699:16;;;:7;:16;;;;;;18575:13;;18551:37;;18547:284;;18644:10;;18620:20;:34;18617:77;;-1:-1:-1;18681:10:0;;18617:77;18720:34;18733:20;18720:12;:34::i;:::-;18792:15;18781:8;:26;18547:284;18446:404;18394:456;18900:62;18918:4;18924:2;18928:6;18936:7;18945:3;18950:4;18956:5;18900:17;:62::i;:::-;18893:69;16909:2061;-1:-1:-1;;;;;;;;16909:2061:0:o;21321:946::-;21477:16;;21455:4;;21477:16;;;;;21472:221;;21510:28;21529:4;21535:2;21510:18;:28::i;:::-;21558:16;;;;;;;21557:17;:41;;;;;21578:20;21589:4;21595:2;21578:10;:20::i;:::-;21553:129;;;21619:47;;-1:-1:-1;;;21619:47:0;;22940:2:1;21619:47:0;;;22922:21:1;22979:2;22959:18;;;22952:30;23018:34;22998:18;;;22991:62;23089:7;23069:18;;;23062:35;23114:19;;21619:47:0;22738:401:1;21553:129:0;21709:20;21720:4;21726:2;21709:10;:20::i;:::-;21705:314;;;21777:9;;:37;;;;;-1:-1:-1;;;;;23425:15:1;;;21777:37:0;;;23407:34:1;23477:15;;;23457:18;;;23450:43;23509:18;;;23502:34;;;21746:12:0;;21777:9;;;;;:19;;23319:18:1;;21777:37:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;21777:37:0;;;;;;;;-1:-1:-1;;21777:37:0;;;;;;;;;;;;:::i;:::-;;;21773:163;;21912:8;;;21773:163;21865:5;-1:-1:-1;21956:7:0;21952:56;;21984:8;;;21952:56;21731:288;21705:314;-1:-1:-1;;;;;22031:13:0;;;;;;:7;:13;;;;;:23;;22048:6;;22031:13;:23;;22048:6;;22031:23;:::i;:::-;;;;-1:-1:-1;22065:22:0;;-1:-1:-1;22091:7:0;22090:55;;22139:6;22090:55;;;22102:34;22112:4;22118:3;22123:4;22129:6;22102:9;:34::i;:::-;-1:-1:-1;;;;;22156:11:0;;;;;;:7;:11;;;;;:29;;22065:80;;-1:-1:-1;22065:80:0;;22156:11;;;:29;;22065:80;;22156:29;:::i;:::-;;;;;;;;22218:2;-1:-1:-1;;;;;22203:34:0;22212:4;-1:-1:-1;;;;;22203:34:0;;22222:14;22203:34;;;;391:25:1;;379:2;364:18;;245:177;22203:34:0;;;;;;;;-1:-1:-1;22255:4:0;;21321:946;-1:-1:-1;;;;;;;;21321:946:0:o;16543:358::-;16612:4;16644:6;;-1:-1:-1;;;;;16636:14:0;;;16644:6;;16636:14;;;;:43;;-1:-1:-1;16673:6:0;;-1:-1:-1;;;;;16667:12:0;;;16673:6;;16667:12;;16636:43;:79;;;;-1:-1:-1;16709:6:0;;-1:-1:-1;;;;;16709:6:0;16696:9;:19;;16636:79;:118;;;;-1:-1:-1;;;;;;16733:21:0;;;;;;:17;:21;;;;;;;;16732:22;16636:118;:159;;;;-1:-1:-1;;;;;;16772:23:0;;;;;;:17;:23;;;;;;;;16771:24;16636:159;:186;;;;-1:-1:-1;;;;;;16812:10:0;;5720:42;16812:10;;16636:186;:219;;;;-1:-1:-1;;;;;;16839:16:0;;;;16636:219;:257;;;;-1:-1:-1;;;;;;16872:21:0;;16888:4;16872:21;;16636:257;16629:264;16543:358;-1:-1:-1;;;16543:358:0:o;18978:663::-;6734:6;:13;;-1:-1:-1;;6734:13:0;6743:4;6734:13;;;19085:4:::1;6734:6:::0;19065:26;;;:11:::1;:26;::::0;;;;;;;19100:9:::1;::::0;-1:-1:-1;;;;;19100:9:0::1;19065:46:::0;;;;;;;;-1:-1:-1;;19065:67:0::1;19062:165;;19169:4;19149:26;::::0;;;:11:::1;:26;::::0;;;;;;;19184:9:::1;::::0;-1:-1:-1;;;;;19184:9:0::1;19149:46:::0;;;;;;;-1:-1:-1;;19149:66:0;;19062:165:::1;19243:7;:12:::0;;;::::1;;;19239:56;;19277:7;;19239:56;19331:16;::::0;;19345:1:::1;19331:16:::0;;;;;::::1;::::0;;19307:21:::1;::::0;19331:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;19331:16:0::1;19307:40;;19376:4;19358;19363:1;19358:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19358:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;19402:9:::1;::::0;:16:::1;::::0;;;;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;19358:7;;19402:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19392:4;19397:1;19392:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19392:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;19431:9:::1;::::0;19576:16;;19431:202:::1;::::0;;;;:9;;::::1;::::0;:60:::1;::::0;:202:::1;::::0;19506:20;;19431:9:::1;::::0;19557:4;;19576:16;;::::1;::::0;19607:15:::1;::::0;19431:202:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19051:590;6758:1;-1:-1:-1::0;6770:6:0;:14;;-1:-1:-1;;6770:14:0;;;18978:663::o;19649:509::-;19732:16;;;;;;;19731:17;19723:65;;;;-1:-1:-1;;;19723:65:0;;24367:2:1;19723:65:0;;;24349:21:1;24406:2;24386:18;;;24379:30;24445:34;24425:18;;;24418:62;24516:5;24496:18;;;24489:33;24539:19;;19723:65:0;24165:399:1;19723:65:0;19804:20;19815:4;19821:2;19804:10;:20::i;:::-;19803:21;:37;;;;-1:-1:-1;19834:6:0;;-1:-1:-1;;;;;19828:12:0;;;19834:6;;19828:12;19803:37;19799:352;;;-1:-1:-1;;;;;19857:23:0;;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;19857:30:0;19883:4;19857:30;;;19902:16;:23;;-1:-1:-1;;19902:23:0;19857:30;19902:23;;;;;19951:9;;;;19940:107;;19995:9;:36;;;;20025:4;19995:36;;;;;19940:107;20061:19;:26;;-1:-1:-1;;20061:26:0;;;;;20107:32;;-1:-1:-1;4769:41:1;;20107:32:0;;4757:2:1;4742:18;20107:32:0;;;;;;;19649:509;;:::o;22275:902::-;22363:7;22383:18;22416:3;22412:205;;;-1:-1:-1;22449:9:0;:16;;;22412:205;;;22487:4;22483:134;;;-1:-1:-1;22521:9:0;:17;;;;;;22483:134;;;-1:-1:-1;22584:9:0;:21;;;;;;22483:134;22629:17;5614:5;22649:19;22658:10;22649:6;:19;:::i;:::-;:38;;;;:::i;:::-;22752:7;:13;22629:58;;-1:-1:-1;22698:19:0;;22752:13;;;;;;;22721:26;;22733:14;22629:58;22721:26;:::i;:::-;22720:46;;;;:::i;:::-;22698:68;-1:-1:-1;22781:15:0;;22777:237;;22813:24;22826:11;22813:24;;:::i;:::-;22874:11;:18;-1:-1:-1;;;;;22874:18:0;22852:19;22907:20;;;22874:18;22907:20;;;;;:35;;22813:24;;-1:-1:-1;22874:18:0;;22931:11;;22907:20;22852:19;22907:35;;22931:11;;22907:35;:::i;:::-;;;;;;;;22977:11;-1:-1:-1;;;;;22962:40:0;22971:4;-1:-1:-1;;;;;22962:40:0;;22990:11;22962:40;;;;391:25:1;;379:2;364:18;;245:177;22962:40:0;;;;;;;;22798:216;22777:237;23040:4;23024:22;;;;:7;:22;;;;;:35;;23050:9;;23024:22;:35;;23050:9;;23024:35;:::i;:::-;;;;-1:-1:-1;;23075:40:0;;391:25:1;;;23098:4:0;;-1:-1:-1;;;;;23075:40:0;;;;;379:2:1;364:18;23075:40:0;;;;;;;23145:23;23157:11;23145:9;:23;:::i;:::-;23135:34;;:6;:34;:::i;427:118:1:-;513:5;506:13;499:21;492:5;489:32;479:60;;535:1;532;525:12;550:376;612:6;620;673:2;661:9;652:7;648:23;644:32;641:52;;;689:1;686;679:12;641:52;728:9;715:23;747:28;769:5;747:28;:::i;:::-;794:5;-1:-1:-1;851:2:1;836:18;;823:32;864:30;823:32;864:30;:::i;:::-;913:7;903:17;;;550:376;;;;;:::o;931:184::-;983:77;980:1;973:88;1080:4;1077:1;1070:15;1104:4;1101:1;1094:15;1120:334;1191:2;1185:9;1247:2;1237:13;;-1:-1:-1;;1233:86:1;1221:99;;1350:18;1335:34;;1371:22;;;1332:62;1329:88;;;1397:18;;:::i;:::-;1433:2;1426:22;1120:334;;-1:-1:-1;1120:334:1:o;1459:183::-;1519:4;1552:18;1544:6;1541:30;1538:56;;;1574:18;;:::i;:::-;-1:-1:-1;1619:1:1;1615:14;1631:4;1611:25;;1459:183::o;1647:154::-;-1:-1:-1;;;;;1726:5:1;1722:54;1715:5;1712:65;1702:93;;1791:1;1788;1781:12;1806:737;1860:5;1913:3;1906:4;1898:6;1894:17;1890:27;1880:55;;1931:1;1928;1921:12;1880:55;1967:6;1954:20;1993:4;2017:60;2033:43;2073:2;2033:43;:::i;:::-;2017:60;:::i;:::-;2111:15;;;2197:1;2193:10;;;;2181:23;;2177:32;;;2142:12;;;;2221:15;;;2218:35;;;2249:1;2246;2239:12;2218:35;2285:2;2277:6;2273:15;2297:217;2313:6;2308:3;2305:15;2297:217;;;2393:3;2380:17;2410:31;2435:5;2410:31;:::i;:::-;2454:18;;2492:12;;;;2330;;2297:217;;;-1:-1:-1;2532:5:1;1806:737;-1:-1:-1;;;;;;1806:737:1:o;2548:477::-;2638:6;2646;2699:2;2687:9;2678:7;2674:23;2670:32;2667:52;;;2715:1;2712;2705:12;2667:52;2755:9;2742:23;2788:18;2780:6;2777:30;2774:50;;;2820:1;2817;2810:12;2774:50;2843:61;2896:7;2887:6;2876:9;2872:22;2843:61;:::i;:::-;2833:71;;;2954:2;2943:9;2939:18;2926:32;2967:28;2989:5;2967:28;:::i;3400:656::-;3512:4;3541:2;3570;3559:9;3552:21;3602:6;3596:13;3645:6;3640:2;3629:9;3625:18;3618:34;3670:1;3680:140;3694:6;3691:1;3688:13;3680:140;;;3789:14;;;3785:23;;3779:30;3755:17;;;3774:2;3751:26;3744:66;3709:10;;3680:140;;;3838:6;3835:1;3832:13;3829:91;;;3908:1;3903:2;3894:6;3883:9;3879:22;3875:31;3868:42;3829:91;-1:-1:-1;3972:2:1;3960:15;-1:-1:-1;;3956:88:1;3941:104;;;;4047:2;3937:113;;3400:656;-1:-1:-1;;;3400:656:1:o;4309:315::-;4377:6;4385;4438:2;4426:9;4417:7;4413:23;4409:32;4406:52;;;4454:1;4451;4444:12;4406:52;4493:9;4480:23;4512:31;4537:5;4512:31;:::i;:::-;4562:5;4614:2;4599:18;;;;4586:32;;-1:-1:-1;;;4309:315:1:o;4821:456::-;4898:6;4906;4914;4967:2;4955:9;4946:7;4942:23;4938:32;4935:52;;;4983:1;4980;4973:12;4935:52;5022:9;5009:23;5041:31;5066:5;5041:31;:::i;:::-;5091:5;-1:-1:-1;5148:2:1;5133:18;;5120:32;5161:33;5120:32;5161:33;:::i;:::-;4821:456;;5213:7;;-1:-1:-1;;;5267:2:1;5252:18;;;;5239:32;;4821:456::o;5282:248::-;5350:6;5358;5411:2;5399:9;5390:7;5386:23;5382:32;5379:52;;;5427:1;5424;5417:12;5379:52;-1:-1:-1;;5450:23:1;;;5520:2;5505:18;;;5492:32;;-1:-1:-1;5282:248:1:o;5535:1138::-;5653:6;5661;5714:2;5702:9;5693:7;5689:23;5685:32;5682:52;;;5730:1;5727;5720:12;5682:52;5770:9;5757:23;5799:18;5840:2;5832:6;5829:14;5826:34;;;5856:1;5853;5846:12;5826:34;5879:61;5932:7;5923:6;5912:9;5908:22;5879:61;:::i;:::-;5869:71;;5959:2;5949:12;;6014:2;6003:9;5999:18;5986:32;6043:2;6033:8;6030:16;6027:36;;;6059:1;6056;6049:12;6027:36;6082:24;;;-1:-1:-1;6137:4:1;6129:13;;6125:27;-1:-1:-1;6115:55:1;;6166:1;6163;6156:12;6115:55;6202:2;6189:16;6225:60;6241:43;6281:2;6241:43;:::i;6225:60::-;6319:15;;;6401:1;6397:10;;;;6389:19;;6385:28;;;6350:12;;;;6425:19;;;6422:39;;;6457:1;6454;6447:12;6422:39;6481:11;;;;6501:142;6517:6;6512:3;6509:15;6501:142;;;6583:17;;6571:30;;6534:12;;;;6621;;;;6501:142;;;6662:5;6652:15;;;;;;;5535:1138;;;;;:::o;6867:159::-;6934:20;;6994:6;6983:18;;6973:29;;6963:57;;7016:1;7013;7006:12;6963:57;6867:159;;;:::o;7031:328::-;7105:6;7113;7121;7174:2;7162:9;7153:7;7149:23;7145:32;7142:52;;;7190:1;7187;7180:12;7142:52;7213:28;7231:9;7213:28;:::i;:::-;7203:38;;7260:37;7293:2;7282:9;7278:18;7260:37;:::i;:::-;7250:47;;7316:37;7349:2;7338:9;7334:18;7316:37;:::i;:::-;7306:47;;7031:328;;;;;:::o;7364:247::-;7423:6;7476:2;7464:9;7455:7;7451:23;7447:32;7444:52;;;7492:1;7489;7482:12;7444:52;7531:9;7518:23;7550:31;7575:5;7550:31;:::i;7616:454::-;7711:6;7719;7727;7735;7743;7796:3;7784:9;7775:7;7771:23;7767:33;7764:53;;;7813:1;7810;7803:12;7764:53;-1:-1:-1;;7836:23:1;;;7906:2;7891:18;;7878:32;;-1:-1:-1;7957:2:1;7942:18;;7929:32;;8008:2;7993:18;;7980:32;;-1:-1:-1;8059:3:1;8044:19;8031:33;;-1:-1:-1;7616:454:1;-1:-1:-1;7616:454:1:o;8075:382::-;8140:6;8148;8201:2;8189:9;8180:7;8176:23;8172:32;8169:52;;;8217:1;8214;8207:12;8169:52;8256:9;8243:23;8275:31;8300:5;8275:31;:::i;8462:256::-;8528:6;8536;8589:2;8577:9;8568:7;8564:23;8560:32;8557:52;;;8605:1;8602;8595:12;8557:52;8628:28;8646:9;8628:28;:::i;:::-;8618:38;;8675:37;8708:2;8697:9;8693:18;8675:37;:::i;:::-;8665:47;;8462:256;;;;;:::o;8723:241::-;8779:6;8832:2;8820:9;8811:7;8807:23;8803:32;8800:52;;;8848:1;8845;8838:12;8800:52;8887:9;8874:23;8906:28;8928:5;8906:28;:::i;8969:396::-;9045:6;9053;9106:2;9094:9;9085:7;9081:23;9077:32;9074:52;;;9122:1;9119;9112:12;9074:52;9161:9;9148:23;9180:31;9205:5;9180:31;:::i;:::-;9230:5;-1:-1:-1;9287:2:1;9272:18;;9259:32;9300:33;9259:32;9300:33;:::i;10730:484::-;10783:3;10821:5;10815:12;10848:6;10843:3;10836:19;10874:4;10903:2;10898:3;10894:12;10887:19;;10940:2;10933:5;10929:14;10961:1;10971:218;10985:6;10982:1;10979:13;10971:218;;;11050:13;;-1:-1:-1;;;;;11046:62:1;11034:75;;11129:12;;;;11164:15;;;;11007:1;11000:9;10971:218;;;-1:-1:-1;11205:3:1;;10730:484;-1:-1:-1;;;;;10730:484:1:o;11219:342::-;11420:2;11409:9;11402:21;11383:4;11440:56;11492:2;11481:9;11477:18;11469:6;11440:56;:::i;:::-;11432:64;;11546:6;11539:14;11532:22;11527:2;11516:9;11512:18;11505:50;11219:342;;;;;:::o;11566:184::-;11618:77;11615:1;11608:88;11715:4;11712:1;11705:15;11739:4;11736:1;11729:15;11755:482;11844:1;11887:5;11844:1;11901:330;11922:7;11912:8;11909:21;11901:330;;;12041:4;-1:-1:-1;;11969:77:1;11963:4;11960:87;11957:113;;;12050:18;;:::i;:::-;12100:7;12090:8;12086:22;12083:55;;;12120:16;;;;12083:55;12199:22;;;;12159:15;;;;11901:330;;;11905:3;11755:482;;;;;:::o;12242:866::-;12291:5;12321:8;12311:80;;-1:-1:-1;12362:1:1;12376:5;;12311:80;12410:4;12400:76;;-1:-1:-1;12447:1:1;12461:5;;12400:76;12492:4;12510:1;12505:59;;;;12578:1;12573:130;;;;12485:218;;12505:59;12535:1;12526:10;;12549:5;;;12573:130;12610:3;12600:8;12597:17;12594:43;;;12617:18;;:::i;:::-;-1:-1:-1;;12673:1:1;12659:16;;12688:5;;12485:218;;12787:2;12777:8;12774:16;12768:3;12762:4;12759:13;12755:36;12749:2;12739:8;12736:16;12731:2;12725:4;12722:12;12718:35;12715:77;12712:159;;;-1:-1:-1;12824:19:1;;;12856:5;;12712:159;12903:34;12928:8;12922:4;12903:34;:::i;:::-;13033:6;-1:-1:-1;;12961:79:1;12952:7;12949:92;12946:118;;;13044:18;;:::i;:::-;13082:20;;12242:866;-1:-1:-1;;;12242:866:1:o;13113:140::-;13171:5;13200:47;13241:4;13231:8;13227:19;13221:4;13200:47;:::i;13258:274::-;13298:1;13324;13314:189;;13359:77;13356:1;13349:88;13460:4;13457:1;13450:15;13488:4;13485:1;13478:15;13314:189;-1:-1:-1;13517:9:1;;13258:274::o;13537:228::-;13577:7;13703:1;-1:-1:-1;;13631:74:1;13628:1;13625:81;13620:1;13613:9;13606:17;13602:105;13599:131;;;13710:18;;:::i;:::-;-1:-1:-1;13750:9:1;;13537:228::o;13770:125::-;13810:4;13838:1;13835;13832:8;13829:34;;;13843:18;;:::i;:::-;-1:-1:-1;13880:9:1;;13770:125::o;14669:184::-;14721:77;14718:1;14711:88;14818:4;14815:1;14808:15;14842:4;14839:1;14832:15;14858:175;14895:3;14939:4;14932:5;14928:16;14968:4;14959:7;14956:17;14953:43;;;14976:18;;:::i;:::-;15025:1;15012:15;;14858:175;-1:-1:-1;;14858:175:1:o;18440:224::-;18479:3;18507:6;18540:2;18537:1;18533:10;18570:2;18567:1;18563:10;18601:3;18597:2;18593:12;18588:3;18585:21;18582:47;;;18609:18;;:::i;:::-;18645:13;;18440:224;-1:-1:-1;;;;18440:224:1:o;18669:251::-;18739:6;18792:2;18780:9;18771:7;18767:23;18763:32;18760:52;;;18808:1;18805;18798:12;18760:52;18840:9;18834:16;18859:31;18884:5;18859:31;:::i;19614:245::-;19681:6;19734:2;19722:9;19713:7;19709:23;19705:32;19702:52;;;19750:1;19747;19740:12;19702:52;19782:9;19776:16;19801:28;19823:5;19801:28;:::i;22194:128::-;22234:3;22265:1;22261:6;22258:1;22255:13;22252:39;;;22271:18;;:::i;:::-;-1:-1:-1;22307:9:1;;22194:128::o;23547:613::-;23854:6;23843:9;23836:25;23897:6;23892:2;23881:9;23877:18;23870:34;23940:3;23935:2;23924:9;23920:18;23913:31;23817:4;23961:57;24013:3;24002:9;23998:19;23990:6;23961:57;:::i;:::-;-1:-1:-1;;;;;24054:55:1;;;;24049:2;24034:18;;24027:83;-1:-1:-1;24141:3:1;24126:19;24119:35;23953:65;23547:613;-1:-1:-1;;;23547:613:1:o

Swarm Source

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