ETH Price: $2,683.85 (+1.34%)

Token

SHICHI INU (SHICHI)
 

Overview

Max Total Supply

100,000,000 SHICHI

Holders

92

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
303,599.999999998 SHICHI

Value
$0.00
0x1a6add3e65534cc5c8b2dd9ba01cf9afa12feb8e
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:
SHICHI

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/*      ngl, we're going to moon.

TELEGRAM : https://t.me/ShichiInu

WEBSITE : https://www.shichiinu.com/

TWITTER : https://twitter.com/ShichiInuEth/

INSTAGRAM : https://instagram.com/shichiinu_official?utm_medium=copy_link

*/
pragma solidity 0.8.7;

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

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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 IUniswapV2Factory {
    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 IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function factory() external view returns (address);
}

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

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract SHICHI is Context, 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 _isSniperOrBlacklisted;
    mapping (address => bool) private _liquidityHolders;

    mapping (address => bool) public isExcludedFromWalletRestrictions;

    uint256 private startingSupply = 100_000_000;

    string private _name = "SHICHI INU";
    string private _symbol = "SHICHI";

    uint256 public _buyFee = 800;
    uint256 public _sellFee = 900;
    uint256 public _transferFee = 2000;

    uint256 constant public maxBuyTaxes = 1250;
    uint256 constant public maxSellTaxes = 1600;
    uint256 constant public maxTransferTaxes = 2000;
    
   // ratios
    uint256 private _liquidityRatio = 0;
    uint256 private _marketingRatio = 666;
    uint256 private _teamRatio = 334;
    uint256 private _burnRatio = 0;
    // ratios 


    uint256 private _liquidityWalletRatios =  _teamRatio + _liquidityRatio + _marketingRatio;
    uint256 private _WalletRatios = _teamRatio + _marketingRatio;

    uint256 private constant masterTaxDivisor = 10000;
    uint256 private constant MAX = ~uint256(0);
    uint8 constant private _decimals = 9;
 
    uint256 private _tTotal = startingSupply * 10**_decimals;
    uint256 private _tFeeTotal;

    IUniswapV2Router02 public dexRouter;
    address public lpPair;

    // UNI ROUTER
    address constant private _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD; // Receives tokens, deflates supply, increases price floor.
    
    address payable private _marketingWallet = payable(0x7EAC7b108d9bAc750A3cf69DFBCD1de617Baa3e7);
    address payable private _teamWallet = payable(0x8d869357F0548C4dEc15ccfA80a24b931fBdd404);
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    
    uint256 private maxTxPercent = 33;
    uint256 private maxTxDivisor = 10_000;
    uint256 public _maxTxAmount = (_tTotal * maxTxPercent) / maxTxDivisor;
    
    uint256 private maxWalletPercent = 100;
    uint256 private maxWalletDivisor = 10_000;
    uint256 public _maxWalletSize = (_tTotal * maxWalletPercent) / maxWalletDivisor;
    
    uint256 private swapThreshold = (_tTotal * 5) / 10_000;
    uint256 private swapAmount = (_tTotal * 5) / 1_000;

    bool private sniperProtection = true;
    bool public _hasLiqBeenAdded = false;
    uint256 private _liqAddStatus = 0;
    uint256 private _liqAddBlock = 0;
    uint256 private _liqAddStamp = 0;
    uint256 private _initialLiquidityAmount = 0; // make constant
    uint256 private snipeBlockAmt = 0;
    uint256 public snipersCaught = 0;
    bool private sameBlockActive = true;
    mapping (address => uint256) private lastTrade;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    event SniperCaught(address sniperAddress);
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Caller != owner.");
        _;
    }
    
    constructor () payable {
        _tOwned[_msgSender()] = _tTotal;

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

        dexRouter = IUniswapV2Router02(_routerAddress);
        lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;
        _allowances[address(this)][address(dexRouter)] = type(uint256).max;

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

        // Approve the owner for Uniswap, timesaver.
        _approve(_msgSender(), _routerAddress, _tTotal);

        // Event regarding the tTotal transferred to the _msgSender.
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and recnouncements.
    // This allows for removal of ownership privelages from the owner once renounced or transferred.
    function owner() public view returns (address) {
        return _owner;
    }

    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 (_marketingWallet == payable(_owner))
            _marketingWallet = payable(newOwner);
        
        _allowances[_owner][newOwner] = balanceOf(_owner);
        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 view override returns (uint256) { return _tTotal; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external view override returns (string memory) { return _symbol; }
    function name() external view 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(_msgSender(), recipient, amount);
        return true;
    }

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

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

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

    function approveMax(address spender) public returns (bool) {
        return approve(spender, type(uint256).max);
    }

    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 increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }

    function setNewRouter(address newRouter) public onlyOwner() {
        IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter);
        address get_pair = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
    }

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

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

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

    function isSniperOrBlacklisted(address account) public view returns (bool) {
        return _isSniperOrBlacklisted[account];
    }

    function isProtected(uint256 rInitializer) external onlyOwner {
        require (_liqAddStatus == 0, "Error.");
        _liqAddStatus = rInitializer;
        snipeBlockAmt = 3;
    }

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

    function setProtectionSettings(bool antiSnipe, bool antiBlock) external onlyOwner() {
        sniperProtection = antiSnipe;
        sameBlockActive = antiBlock;
    }

    function setRatios(uint256 liquidity, uint256 marketing, uint256 team, uint256 burnRatio) external onlyOwner {
        require ( (liquidity + marketing + team + burnRatio) == 1000, "Must add up to 1000");
        _liquidityRatio = liquidity;
        _marketingRatio = marketing;
        _teamRatio = team;
        _burnRatio = burnRatio;
    }

    function setTaxes(uint256 buyFee, uint256 sellFee, uint256 transferFee) external onlyOwner {
        require(buyFee <= maxBuyTaxes
                && sellFee <= maxSellTaxes
                && transferFee <= maxTransferTaxes,
                "Cannot exceed maximums.");
        _buyFee = buyFee;
        _sellFee = sellFee;
        _transferFee = transferFee;
    }

    function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 300), "Must be above 0.33~% of total supply.");
        _maxTxAmount = check;
    }

    function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 300), "Must be above 0.33~% of total supply.");
        _maxWalletSize = check;

    }

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

    function setWallets(address payable marketingWallet, address payable teamWallet) external onlyOwner {
        _marketingWallet = payable(marketingWallet);
        _teamWallet = payable(teamWallet);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function _hasLimits(address from, address to) private view returns (bool) {
        return from != owner()
            && to != owner()
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this);
    }

    function excludeFromWalletRestrictions(address excludedAddress) public onlyOwner{
        isExcludedFromWalletRestrictions[excludedAddress] = true;
    }

    function revokeExcludedFromWalletRestrictions(address excludedAddress) public onlyOwner{
        isExcludedFromWalletRestrictions[excludedAddress] = false;
    }


    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: Zero address.");
        require(to != address(0), "ERC20: Zero address.");
        require(amount > 0, "Must >0.");
        if(_hasLimits(from, to)) {
            if (sameBlockActive) {
                if (lpPairs[from]){
                    require(lastTrade[to] != block.number);
                    lastTrade[to] = block.number;
                } else {
                    require(lastTrade[from] != block.number);
                    lastTrade[from] = block.number;
                }
            }

            if(!(isExcludedFromWalletRestrictions[from] || isExcludedFromWalletRestrictions[to])){
                if(lpPairs[from] || lpPairs[to]){
                    require(amount <= _maxTxAmount, "Exceeds the maxTxAmount.");
                }
                if(to != _routerAddress && !lpPairs[to]) {
                    require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                }
            }


        }

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

        if (lpPairs[to]) {
            if (!inSwapAndLiquify
                && swapAndLiquifyEnabled
            ) {
                uint256 contractTokenBalance = balanceOf(address(this));
                if (contractTokenBalance >= swapThreshold) {
                    if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                    swapAndLiquify(contractTokenBalance);
                }
            }      
        } 
        return _finalizeTransfer(from, to, amount, takeFee);
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        if (_liquidityRatio + _marketingRatio + _teamRatio == 0)
            return;
        uint256 toLiquify = ((contractTokenBalance * _liquidityRatio) / _liquidityWalletRatios) / 2;

        uint256 toSwapForEth = contractTokenBalance - toLiquify;
        swapTokensForEth(toSwapForEth);

        uint256 currentBalance = address(this).balance;
        uint256 liquidityBalance = ((currentBalance * _liquidityRatio/2) / (_liquidityRatio/2 + _WalletRatios));

        if (toLiquify > 0) {
            addLiquidity(toLiquify, liquidityBalance);
            emit SwapAndLiquify(toLiquify, liquidityBalance, toLiquify);
        }
        if (contractTokenBalance - toLiquify > 0) {
            _marketingWallet.transfer(((currentBalance - liquidityBalance) * _marketingRatio) / (_WalletRatios));
            _teamWallet.transfer(address(this).balance);
        }
    }

    function swapTokensForEth(uint256 tokenAmount) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            DEAD,
            block.timestamp
        );
    }

    function _checkLiquidityAdd(address from, address to) private {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            if (snipeBlockAmt != 3) {
                _liqAddBlock = block.number + 5000;
            } else {
                _liqAddBlock = block.number;
            }

            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            _liqAddStamp = block.timestamp;

            swapAndLiquifyEnabled = true;
            emit SwapAndLiquifyEnabledUpdated(true);
        }
    }

    function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee) private returns (bool) {
        if (sniperProtection){
            if (isSniperOrBlacklisted(from) || isSniperOrBlacklisted(to)) {
                revert("Sniper rejected.");
            }

            if (!_hasLiqBeenAdded) {
                _checkLiquidityAdd(from, to);
                if (!_hasLiqBeenAdded && _hasLimits(from, to)) {
                    revert("Only owner can transfer at this time.");
                }
            } else {
                if (_liqAddBlock > 0 
                    && lpPairs[from] 
                    && _hasLimits(from, to)
                ) {
                    if (block.number - _liqAddBlock < snipeBlockAmt) {
                        _isSniperOrBlacklisted[to] = true;
                        snipersCaught ++;
                        emit SniperCaught(to);
                    }
                }
            }
        }

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

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

    function takeTaxes(address from, address to, uint256 amount) internal returns (uint256) {
        uint256 currentFee;

        if (from == lpPair) {
            currentFee = _buyFee;
        } else if (to == lpPair) {
            currentFee = _sellFee;
        } else {
            currentFee = _transferFee;
        }

        if (_hasLimits(from, to)){
            if (_liqAddStatus == 0 || _liqAddStatus != 69420133769) {
                revert();
            }
        }
        uint256 burnAmt = (amount * currentFee * _burnRatio) / (_burnRatio + _liquidityWalletRatios) / masterTaxDivisor;
        uint256 feeAmount = (amount * currentFee / masterTaxDivisor) - burnAmt;
        _tOwned[DEAD] += burnAmt;
        _tOwned[address(this)] += (feeAmount);
        emit Transfer(from, DEAD, burnAmt);
        emit Transfer(from, address(this), feeAmount);
        return amount - feeAmount - burnAmt;
    }
}

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":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniperAddress","type":"address"}],"name":"SniperCaught","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":"_buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"excludedAddress","type":"address"}],"name":"excludeFromWalletRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromWalletRestrictions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rInitializer","type":"uint256"}],"name":"isProtected","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isSniperOrBlacklisted","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"excludedAddress","type":"address"}],"name":"revokeExcludedFromWalletRestrictions","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":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","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":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"team","type":"uint256"},{"internalType":"uint256","name":"burnRatio","type":"uint256"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","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"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"},{"internalType":"uint256","name":"transferFee","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketingWallet","type":"address"},{"internalType":"address payable","name":"teamWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipersCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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"}]

60006003556305f5e10060095560c0604052600a60808190526953484943484920494e5560b01b60a0908152620000389190816200068d565b506040805180820190915260068082526553484943484960d01b60209092019182526200006891600b916200068d565b50610320600c55610384600d556107d0600e556000600f5561029a60105561014e6011556000601255601054600f54601154620000a6919062000765565b620000b2919062000765565b601355601054601154620000c7919062000765565b601455620000d86009600a620007ec565b600954620000e79190620008ad565b6015819055601980546001600160a01b031916737eac7b108d9bac750a3cf69dfbcd1de617baa3e7179055601a8054600161ff0160a01b031916738d869357f0548c4dec15ccfa80a24b931fbdd4041790556021601b819055612710601c81905591620001559190620008ad565b62000161919062000780565b601d556064601e55612710601f55601f54601e54601554620001849190620008ad565b62000190919062000780565b6020556127106015546005620001a79190620008ad565b620001b3919062000780565b6021556103e86015546005620001ca9190620008ad565b620001d6919062000780565b6022556023805461ffff191660019081179091556000602481905560258190556026819055602781905560288190556029819055602a805460ff1916831790556015549190620002233390565b6001600160a01b0316815260208082019290925260409081016000908120939093558254336001600160a01b03199182161790935560178054737a250d5630b4cf539739df2c5dacb4c659f2488d941684179055805163c45a015560e01b8152905163c45a015592600480840193919291829003018186803b158015620002a957600080fd5b505afa158015620002be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e4919062000733565b6001600160a01b031663c9c65396601760009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200034157600080fd5b505afa15801562000356573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037c919062000733565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b158015620003c457600080fd5b505af1158015620003d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ff919062000733565b601880546001600160a01b0319166001600160a01b039283169081179091556000908152600260209081526040808320805460ff191660019081179091553084526004835281842060175490951684529390915281206000199055600590620004706000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526005909252812080548316600190811790915561dead82527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba80549093168117909255600790620004f86000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556200054b6200052c3390565b601554737a250d5630b4cf539739df2c5dacb4c659f2488d906200058c565b60155460405190815233906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a362000922565b6001600160a01b038316620005de5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b0382166200062c5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401620005d5565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b8280546200069b90620008cf565b90600052602060002090601f016020900481019282620006bf57600085556200070a565b82601f10620006da57805160ff19168380011785556200070a565b828001600101855582156200070a579182015b828111156200070a578251825591602001919060010190620006ed565b50620007189291506200071c565b5090565b5b808211156200071857600081556001016200071d565b6000602082840312156200074657600080fd5b81516001600160a01b03811681146200075e57600080fd5b9392505050565b600082198211156200077b576200077b6200090c565b500190565b6000826200079e57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620007e4578160001904821115620007c857620007c86200090c565b80851615620007d657918102915b93841c9390800290620007a8565b509250929050565b60006200075e60ff8416836000826200080857506001620008a7565b816200081757506000620008a7565b81600181146200083057600281146200083b576200085b565b6001915050620008a7565b60ff8411156200084f576200084f6200090c565b50506001821b620008a7565b5060208310610133831016604e8410600b841016171562000880575081810a620008a7565b6200088c8383620007a3565b8060001904821115620008a357620008a36200090c565b0290505b92915050565b6000816000190483118215151615620008ca57620008ca6200090c565b500290565b600181811c90821680620008e457607f821691505b602082108114156200090657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b612f3480620009326000396000f3fe6080604052600436106103175760003560e01c806370a082311161019a578063b1b08f71116100e1578063dd62ed3e1161008a578063eafb5a3c11610064578063eafb5a3c146108d1578063eec2744e146108f1578063fb78680d1461091157600080fd5b8063dd62ed3e14610855578063e79d41601461089b578063e9dae5ed146108b157600080fd5b8063c49b9a80116100bb578063c49b9a80146107f5578063ce8b79c914610815578063d3f6a1571461083557600080fd5b8063b1b08f71146107a9578063b3d514fb146107bf578063bc1323e8146107d557600080fd5b806389fd9bc11161014357806395d89b411161011d57806395d89b4114610754578063a457c2d714610769578063a9059cbb1461078957600080fd5b806389fd9bc1146107055780638da5cb5b146106e75780638f9a55c01461073e57600080fd5b806380c581d11161017457806380c581d1146106a757806381c6f11b146106c7578063893d20e8146106e757600080fd5b806370a0823114610646578063715018a61461067c5780637d1db4a51461069157600080fd5b80633df9a8d21161025e5780634fbee19311610207578063590f897e116101e1578063590f897e146105e0578063590ffdce146105f65780636f430be81461061657600080fd5b80634fbee1931461056857806350a8e016146105a1578063571ac8b0146105c057600080fd5b8063452ed4f111610238578063452ed4f1146105075780634a74bb02146105275780634fb2e45d1461054857600080fd5b80633df9a8d2146104bb5780633f3cf56c146104d157806340b9a54b146104f157600080fd5b806318160ddd116102c05780632b28fc7a1161029a5780632b28fc7a14610469578063313ce5671461047f578063395093511461049b57600080fd5b806318160ddd1461040a57806323b872dd14610429578063260039571461044957600080fd5b80630758d924116102f15780630758d9241461039a578063095ea7b3146103ba5780631793fe4e146103ea57600080fd5b806303fd2a4514610323578063044df7261461035657806306fdde031461037857600080fd5b3661031e57005b600080fd5b34801561032f57600080fd5b5061033961dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561036257600080fd5b50610376610371366004612c4b565b610931565b005b34801561038457600080fd5b5061038d6109a3565b60405161034d9190612d2e565b3480156103a657600080fd5b50601754610339906001600160a01b031681565b3480156103c657600080fd5b506103da6103d5366004612c04565b610a35565b604051901515815260200161034d565b3480156103f657600080fd5b50610376610405366004612cfc565b610a4b565b34801561041657600080fd5b506015545b60405190815260200161034d565b34801561043557600080fd5b506103da610444366004612b8e565b610b1c565b34801561045557600080fd5b50610376610464366004612c80565b610b94565b34801561047557600080fd5b5061041b6104e281565b34801561048b57600080fd5b506040516009815260200161034d565b3480156104a757600080fd5b506103da6104b6366004612c04565b610c72565b3480156104c757600080fd5b5061041b600e5481565b3480156104dd57600080fd5b506103766104ec366004612c80565b610cae565b3480156104fd57600080fd5b5061041b600c5481565b34801561051357600080fd5b50601854610339906001600160a01b031681565b34801561053357600080fd5b50601a546103da90600160a81b900460ff1681565b34801561055457600080fd5b50610376610563366004612b1b565b610d8c565b34801561057457600080fd5b506103da610583366004612b1b565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105ad57600080fd5b506023546103da90610100900460ff1681565b3480156105cc57600080fd5b506103da6105db366004612b1b565b610fe3565b3480156105ec57600080fd5b5061041b600d5481565b34801561060257600080fd5b50610376610611366004612bcf565b610ff7565b34801561062257600080fd5b506103da610631366004612b1b565b60086020526000908152604090205460ff1681565b34801561065257600080fd5b5061041b610661366004612b1b565b6001600160a01b031660009081526001602052604090205490565b34801561068857600080fd5b5061037661106f565b34801561069d57600080fd5b5061041b601d5481565b3480156106b357600080fd5b506103766106c2366004612bcf565b611111565b3480156106d357600080fd5b506103766106e2366004612c67565b611218565b3480156106f357600080fd5b506000546001600160a01b0316610339565b34801561071157600080fd5b506103da610720366004612b1b565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561074a57600080fd5b5061041b60205481565b34801561076057600080fd5b5061038d6112bf565b34801561077557600080fd5b506103da610784366004612c04565b6112ce565b34801561079557600080fd5b506103da6107a4366004612c04565b611305565b3480156107b557600080fd5b5061041b6107d081565b3480156107cb57600080fd5b5061041b61064081565b3480156107e157600080fd5b506103766107f0366004612b1b565b61131c565b34801561080157600080fd5b50610376610810366004612c30565b61138a565b34801561082157600080fd5b50610376610830366004612b1b565b61142f565b34801561084157600080fd5b50610376610850366004612b55565b6114a0565b34801561086157600080fd5b5061041b610870366004612b55565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156108a757600080fd5b5061041b60295481565b3480156108bd57600080fd5b506103766108cc366004612ca2565b61151b565b3480156108dd57600080fd5b506103766108ec366004612b1b565b6115e4565b3480156108fd57600080fd5b5061037661090c366004612bcf565b6119bd565b34801561091d57600080fd5b5061037661092c366004612cfc565b611a35565b6000546001600160a01b031633146109835760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b60448201526064015b60405180910390fd5b6023805492151560ff19938416179055602a805491151591909216179055565b6060600a80546109b290612e64565b80601f01602080910402602001604051908101604052809291908181526020018280546109de90612e64565b8015610a2b5780601f10610a0057610100808354040283529160200191610a2b565b820191906000526020600020905b815481529060010190602001808311610a0e57829003601f168201915b5050505050905090565b6000610a42338484611ac1565b50600192915050565b6000546001600160a01b03163314610a985760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b8082610aa48587612df4565b610aae9190612df4565b610ab89190612df4565b6103e814610b085760405162461bcd60e51b815260206004820152601360248201527f4d7573742061646420757020746f203130303000000000000000000000000000604482015260640161097a565b600f93909355601091909155601155601255565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610b81576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610b7b908490612e4d565b90915550505b610b8c848484611bce565b949350505050565b6000546001600160a01b03163314610be15760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b60008183601554610bf29190612e2e565b610bfc9190612e0c565b905061012c601554610c0e9190612e0c565b811015610c6b5760405162461bcd60e51b815260206004820152602560248201527f4d7573742062652061626f766520302e33337e25206f6620746f74616c2073756044820152643838363c9760d91b606482015260840161097a565b6020555050565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610a42918590610ca9908690612df4565b611ac1565b6000546001600160a01b03163314610cfb5760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b60008183601554610d0c9190612e2e565b610d169190612e0c565b905061012c601554610d289190612e0c565b811015610d855760405162461bcd60e51b815260206004820152602560248201527f4d7573742062652061626f766520302e33337e25206f6620746f74616c2073756044820152643838363c9760d91b606482015260840161097a565b601d555050565b6000546001600160a01b03163314610dd95760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b6001600160a01b038116610e555760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606482015260840161097a565b6001600160a01b03811661dead1415610ed65760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606482015260840161097a565b60008054610eef916001600160a01b0390911690610ff7565b610efa816001610ff7565b6000546019546001600160a01b0390811691161415610f2f57601980546001600160a01b0319166001600160a01b0383161790555b600080546001600160a01b03908116825260016020818152604080852054600483528186208786168752835281862055845490931684525290205415610f9857600080546001600160a01b03168082526001602052604090912054610f9691908390611bce565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000610ff182600019610a35565b92915050565b6000546001600160a01b031633146110445760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146110bc5760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b600080546110d5916001600160a01b0390911690610ff7565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b0316331461115e5760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b8061118557506001600160a01b03166000908152600260205260409020805460ff19169055565b600354156111ec5762093a806003544261119f9190612e4d565b116111ec5760405162461bcd60e51b815260206004820152601260248201527f4f6e65207765656b20636f6f6c646f776e2e0000000000000000000000000000604482015260640161097a565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555b5050565b6000546001600160a01b031633146112655760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b602454156112b55760405162461bcd60e51b815260206004820152600660248201527f4572726f722e0000000000000000000000000000000000000000000000000000604482015260640161097a565b6024556003602855565b6060600b80546109b290612e64565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610a42918590610ca9908690612e4d565b6000611312338484611bce565b5060019392505050565b6000546001600160a01b031633146113695760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6000546001600160a01b031633146113d75760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b601a8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061142490831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461147c5760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000546001600160a01b031633146114ed5760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b601980546001600160a01b039384166001600160a01b031991821617909155601a8054929093169116179055565b6000546001600160a01b031633146115685760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b6104e2831115801561157c57506106408211155b801561158a57506107d08111155b6115d65760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000604482015260640161097a565b600c92909255600d55600e55565b6000546001600160a01b031633146116315760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561167157600080fd5b505afa158015611685573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a99190612b38565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156116f157600080fd5b505afa158015611705573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117299190612b38565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561178757600080fd5b505afa15801561179b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bf9190612b38565b90506001600160a01b03811661197d57816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561180857600080fd5b505afa15801561181c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118409190612b38565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561188857600080fd5b505afa15801561189c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c09190612b38565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561192057600080fd5b505af1158015611934573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119589190612b38565b601880546001600160a01b0319166001600160a01b0392909216919091179055611999565b601880546001600160a01b0319166001600160a01b0383161790555b50601780546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b03163314611a0a5760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611a825760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b8284601554611a919190612e2e565b611a9b9190612e0c565b6021556015548190611aae908490612e2e565b611ab89190612e0c565b60225550505050565b6001600160a01b038316611b175760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f204164647265737300000000000000000000000000604482015260640161097a565b6001600160a01b038216611b6d5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f204164647265737300000000000000000000000000604482015260640161097a565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611c265760405162461bcd60e51b815260206004820152601460248201527f45524332303a205a65726f20616464726573732e000000000000000000000000604482015260640161097a565b6001600160a01b038316611c7c5760405162461bcd60e51b815260206004820152601460248201527f45524332303a205a65726f20616464726573732e000000000000000000000000604482015260640161097a565b60008211611ccc5760405162461bcd60e51b815260206004820152600860248201527f4d757374203e302e000000000000000000000000000000000000000000000000604482015260640161097a565b611cd68484612007565b15611f2c57602a5460ff1615611d8d576001600160a01b03841660009081526002602052604090205460ff1615611d4c576001600160a01b0383166000908152602b6020526040902054431415611d2c57600080fd5b6001600160a01b0383166000908152602b60205260409020439055611d8d565b6001600160a01b0384166000908152602b6020526040902054431415611d7157600080fd5b6001600160a01b0384166000908152602b602052604090204390555b6001600160a01b03841660009081526008602052604090205460ff1680611dcc57506001600160a01b03831660009081526008602052604090205460ff165b611f2c576001600160a01b03841660009081526002602052604090205460ff1680611e0f57506001600160a01b03831660009081526002602052604090205460ff165b15611e6657601d54821115611e665760405162461bcd60e51b815260206004820152601860248201527f4578636565647320746865206d61785478416d6f756e742e0000000000000000604482015260640161097a565b6001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d14801590611eac57506001600160a01b03831660009081526002602052604090205460ff16155b15611f2c5760205482611ed4856001600160a01b031660009081526001602052604090205490565b611ede9190612df4565b1115611f2c5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161097a565b6001600160a01b03841660009081526005602052604090205460019060ff1680611f6e57506001600160a01b03841660009081526005602052604090205460ff165b15611f77575060005b6001600160a01b03841660009081526002602052604090205460ff1615611ff257601a54600160a01b900460ff16158015611fbb5750601a54600160a81b900460ff165b15611ff257306000908152600160205260409020546021548110611ff0576022548110611fe757506022545b611ff0816120c5565b505b611ffe8585858461229c565b95945050505050565b600080546001600160a01b0384811691161480159061203457506000546001600160a01b03838116911614155b801561205957506001600160a01b03821660009081526007602052604090205460ff16155b801561207e57506001600160a01b03831660009081526007602052604090205460ff16155b801561209557506001600160a01b03821661dead14155b80156120a957506001600160a01b03821615155b80156120be57506001600160a01b0383163014155b9392505050565b601a805460ff60a01b1916600160a01b179055601154601054600f546120eb9190612df4565b6120f59190612df4565b6120fe5761228c565b60006002601354600f54846121139190612e2e565b61211d9190612e0c565b6121279190612e0c565b905060006121358284612e4d565b905061214081612580565b601454600f54479160009161215790600290612e0c565b6121619190612df4565b6002600f54846121719190612e2e565b61217b9190612e0c565b6121859190612e0c565b905083156121d9576121978482612702565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b60006121e58587612e4d565b1115612287576019546014546010546001600160a01b03909216916108fc919061220f8587612e4d565b6122199190612e2e565b6122239190612e0c565b6040518115909202916000818181858888f1935050505015801561224b573d6000803e3d6000fd5b50601a546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612285573d6000803e3d6000fd5b505b505050505b50601a805460ff60a01b19169055565b60235460009060ff16156124ad576001600160a01b03851660009081526006602052604090205460ff16806122e957506001600160a01b03841660009081526006602052604090205460ff165b156123365760405162461bcd60e51b815260206004820152601060248201527f536e697065722072656a65637465642e00000000000000000000000000000000604482015260640161097a565b602354610100900460ff166123e45761234f85856127c4565b602354610100900460ff1615801561236c575061236c8585612007565b156123df5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e000000000000000000000000000000000000000000000000000000606482015260840161097a565b6124ad565b600060255411801561240e57506001600160a01b03851660009081526002602052604090205460ff165b801561241f575061241f8585612007565b156124ad576028546025546124349043612e4d565b10156124ad576001600160a01b0384166000908152600660205260408120805460ff19166001179055602980549161246b83612e9f565b90915550506040516001600160a01b03851681527f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e59060200160405180910390a15b6001600160a01b038516600090815260016020526040812080548592906124d5908490612e4d565b9091555060009050826124e857836124f3565b6124f386868661291b565b6001600160a01b038616600090815260016020526040812080549293508392909190612520908490612df4565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161256c91815260200190565b60405180910390a350600195945050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106125b5576125b5612ed0565b6001600160a01b03928316602091820292909201810191909152601754604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c4648926004808301939192829003018186803b15801561262257600080fd5b505afa158015612636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265a9190612b38565b8160018151811061266d5761266d612ed0565b6001600160a01b0392831660209182029290920101526017546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac947906126cc908590600090869030904290600401612d83565b600060405180830381600087803b1580156126e657600080fd5b505af11580156126fa573d6000803e3d6000fd5b505050505050565b6017546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b15801561278457600080fd5b505af1158015612798573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127bd9190612cce565b5050505050565b602354610100900460ff16156128425760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e0000000000000000000000000000000000000000000000000000000000606482015260840161097a565b61284c8282612007565b15801561286657506018546001600160a01b038281169116145b15611214576028546003146128895761288143611388612df4565b60255561288e565b436025555b6001600160a01b03821660009081526007602052604090819020805460ff191660019081179091556023805461ff00191661010017905542602655601a805460ff60a81b1916600160a81b17905590517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599161290f91901515815260200190565b60405180910390a15050565b60185460009081906001600160a01b038681169116141561293f5750600c54612963565b6018546001600160a01b038581169116141561295e5750600d54612963565b50600e545b61296d8585612007565b156129925760245415806129885750602454641029c32d8914155b1561299257600080fd5b60006127106013546012546129a79190612df4565b6012546129b48588612e2e565b6129be9190612e2e565b6129c89190612e0c565b6129d29190612e0c565b90506000816127106129e48588612e2e565b6129ee9190612e0c565b6129f89190612e4d565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d80549293508492909190612a3b908490612df4565b90915550503060009081526001602052604081208054839290612a5f908490612df4565b909155505060405182815261dead906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a360405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a381612af18287612e4d565b612afb9190612e4d565b979650505050505050565b80358015158114612b1657600080fd5b919050565b600060208284031215612b2d57600080fd5b81356120be81612ee6565b600060208284031215612b4a57600080fd5b81516120be81612ee6565b60008060408385031215612b6857600080fd5b8235612b7381612ee6565b91506020830135612b8381612ee6565b809150509250929050565b600080600060608486031215612ba357600080fd5b8335612bae81612ee6565b92506020840135612bbe81612ee6565b929592945050506040919091013590565b60008060408385031215612be257600080fd5b8235612bed81612ee6565b9150612bfb60208401612b06565b90509250929050565b60008060408385031215612c1757600080fd5b8235612c2281612ee6565b946020939093013593505050565b600060208284031215612c4257600080fd5b6120be82612b06565b60008060408385031215612c5e57600080fd5b612bed83612b06565b600060208284031215612c7957600080fd5b5035919050565b60008060408385031215612c9357600080fd5b50508035926020909101359150565b600080600060608486031215612cb757600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612ce357600080fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215612d1257600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b81811015612d5b57858101830151858201604001528201612d3f565b81811115612d6d576000604083870101525b50601f01601f1916929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612dd35784516001600160a01b031683529383019391830191600101612dae565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612e0757612e07612eba565b500190565b600082612e2957634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612e4857612e48612eba565b500290565b600082821015612e5f57612e5f612eba565b500390565b600181811c90821680612e7857607f821691505b60208210811415612e9957634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612eb357612eb3612eba565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612efb57600080fd5b5056fea2646970667358221220e62813b09a448d3f30e0cbcc77309778d304c7cacf31d2b59c9de72dcea8115264736f6c63430008070033

Deployed Bytecode

0x6080604052600436106103175760003560e01c806370a082311161019a578063b1b08f71116100e1578063dd62ed3e1161008a578063eafb5a3c11610064578063eafb5a3c146108d1578063eec2744e146108f1578063fb78680d1461091157600080fd5b8063dd62ed3e14610855578063e79d41601461089b578063e9dae5ed146108b157600080fd5b8063c49b9a80116100bb578063c49b9a80146107f5578063ce8b79c914610815578063d3f6a1571461083557600080fd5b8063b1b08f71146107a9578063b3d514fb146107bf578063bc1323e8146107d557600080fd5b806389fd9bc11161014357806395d89b411161011d57806395d89b4114610754578063a457c2d714610769578063a9059cbb1461078957600080fd5b806389fd9bc1146107055780638da5cb5b146106e75780638f9a55c01461073e57600080fd5b806380c581d11161017457806380c581d1146106a757806381c6f11b146106c7578063893d20e8146106e757600080fd5b806370a0823114610646578063715018a61461067c5780637d1db4a51461069157600080fd5b80633df9a8d21161025e5780634fbee19311610207578063590f897e116101e1578063590f897e146105e0578063590ffdce146105f65780636f430be81461061657600080fd5b80634fbee1931461056857806350a8e016146105a1578063571ac8b0146105c057600080fd5b8063452ed4f111610238578063452ed4f1146105075780634a74bb02146105275780634fb2e45d1461054857600080fd5b80633df9a8d2146104bb5780633f3cf56c146104d157806340b9a54b146104f157600080fd5b806318160ddd116102c05780632b28fc7a1161029a5780632b28fc7a14610469578063313ce5671461047f578063395093511461049b57600080fd5b806318160ddd1461040a57806323b872dd14610429578063260039571461044957600080fd5b80630758d924116102f15780630758d9241461039a578063095ea7b3146103ba5780631793fe4e146103ea57600080fd5b806303fd2a4514610323578063044df7261461035657806306fdde031461037857600080fd5b3661031e57005b600080fd5b34801561032f57600080fd5b5061033961dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561036257600080fd5b50610376610371366004612c4b565b610931565b005b34801561038457600080fd5b5061038d6109a3565b60405161034d9190612d2e565b3480156103a657600080fd5b50601754610339906001600160a01b031681565b3480156103c657600080fd5b506103da6103d5366004612c04565b610a35565b604051901515815260200161034d565b3480156103f657600080fd5b50610376610405366004612cfc565b610a4b565b34801561041657600080fd5b506015545b60405190815260200161034d565b34801561043557600080fd5b506103da610444366004612b8e565b610b1c565b34801561045557600080fd5b50610376610464366004612c80565b610b94565b34801561047557600080fd5b5061041b6104e281565b34801561048b57600080fd5b506040516009815260200161034d565b3480156104a757600080fd5b506103da6104b6366004612c04565b610c72565b3480156104c757600080fd5b5061041b600e5481565b3480156104dd57600080fd5b506103766104ec366004612c80565b610cae565b3480156104fd57600080fd5b5061041b600c5481565b34801561051357600080fd5b50601854610339906001600160a01b031681565b34801561053357600080fd5b50601a546103da90600160a81b900460ff1681565b34801561055457600080fd5b50610376610563366004612b1b565b610d8c565b34801561057457600080fd5b506103da610583366004612b1b565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105ad57600080fd5b506023546103da90610100900460ff1681565b3480156105cc57600080fd5b506103da6105db366004612b1b565b610fe3565b3480156105ec57600080fd5b5061041b600d5481565b34801561060257600080fd5b50610376610611366004612bcf565b610ff7565b34801561062257600080fd5b506103da610631366004612b1b565b60086020526000908152604090205460ff1681565b34801561065257600080fd5b5061041b610661366004612b1b565b6001600160a01b031660009081526001602052604090205490565b34801561068857600080fd5b5061037661106f565b34801561069d57600080fd5b5061041b601d5481565b3480156106b357600080fd5b506103766106c2366004612bcf565b611111565b3480156106d357600080fd5b506103766106e2366004612c67565b611218565b3480156106f357600080fd5b506000546001600160a01b0316610339565b34801561071157600080fd5b506103da610720366004612b1b565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561074a57600080fd5b5061041b60205481565b34801561076057600080fd5b5061038d6112bf565b34801561077557600080fd5b506103da610784366004612c04565b6112ce565b34801561079557600080fd5b506103da6107a4366004612c04565b611305565b3480156107b557600080fd5b5061041b6107d081565b3480156107cb57600080fd5b5061041b61064081565b3480156107e157600080fd5b506103766107f0366004612b1b565b61131c565b34801561080157600080fd5b50610376610810366004612c30565b61138a565b34801561082157600080fd5b50610376610830366004612b1b565b61142f565b34801561084157600080fd5b50610376610850366004612b55565b6114a0565b34801561086157600080fd5b5061041b610870366004612b55565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156108a757600080fd5b5061041b60295481565b3480156108bd57600080fd5b506103766108cc366004612ca2565b61151b565b3480156108dd57600080fd5b506103766108ec366004612b1b565b6115e4565b3480156108fd57600080fd5b5061037661090c366004612bcf565b6119bd565b34801561091d57600080fd5b5061037661092c366004612cfc565b611a35565b6000546001600160a01b031633146109835760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b60448201526064015b60405180910390fd5b6023805492151560ff19938416179055602a805491151591909216179055565b6060600a80546109b290612e64565b80601f01602080910402602001604051908101604052809291908181526020018280546109de90612e64565b8015610a2b5780601f10610a0057610100808354040283529160200191610a2b565b820191906000526020600020905b815481529060010190602001808311610a0e57829003601f168201915b5050505050905090565b6000610a42338484611ac1565b50600192915050565b6000546001600160a01b03163314610a985760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b8082610aa48587612df4565b610aae9190612df4565b610ab89190612df4565b6103e814610b085760405162461bcd60e51b815260206004820152601360248201527f4d7573742061646420757020746f203130303000000000000000000000000000604482015260640161097a565b600f93909355601091909155601155601255565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610b81576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610b7b908490612e4d565b90915550505b610b8c848484611bce565b949350505050565b6000546001600160a01b03163314610be15760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b60008183601554610bf29190612e2e565b610bfc9190612e0c565b905061012c601554610c0e9190612e0c565b811015610c6b5760405162461bcd60e51b815260206004820152602560248201527f4d7573742062652061626f766520302e33337e25206f6620746f74616c2073756044820152643838363c9760d91b606482015260840161097a565b6020555050565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610a42918590610ca9908690612df4565b611ac1565b6000546001600160a01b03163314610cfb5760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b60008183601554610d0c9190612e2e565b610d169190612e0c565b905061012c601554610d289190612e0c565b811015610d855760405162461bcd60e51b815260206004820152602560248201527f4d7573742062652061626f766520302e33337e25206f6620746f74616c2073756044820152643838363c9760d91b606482015260840161097a565b601d555050565b6000546001600160a01b03163314610dd95760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b6001600160a01b038116610e555760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606482015260840161097a565b6001600160a01b03811661dead1415610ed65760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606482015260840161097a565b60008054610eef916001600160a01b0390911690610ff7565b610efa816001610ff7565b6000546019546001600160a01b0390811691161415610f2f57601980546001600160a01b0319166001600160a01b0383161790555b600080546001600160a01b03908116825260016020818152604080852054600483528186208786168752835281862055845490931684525290205415610f9857600080546001600160a01b03168082526001602052604090912054610f9691908390611bce565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000610ff182600019610a35565b92915050565b6000546001600160a01b031633146110445760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146110bc5760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b600080546110d5916001600160a01b0390911690610ff7565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b0316331461115e5760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b8061118557506001600160a01b03166000908152600260205260409020805460ff19169055565b600354156111ec5762093a806003544261119f9190612e4d565b116111ec5760405162461bcd60e51b815260206004820152601260248201527f4f6e65207765656b20636f6f6c646f776e2e0000000000000000000000000000604482015260640161097a565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555b5050565b6000546001600160a01b031633146112655760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b602454156112b55760405162461bcd60e51b815260206004820152600660248201527f4572726f722e0000000000000000000000000000000000000000000000000000604482015260640161097a565b6024556003602855565b6060600b80546109b290612e64565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610a42918590610ca9908690612e4d565b6000611312338484611bce565b5060019392505050565b6000546001600160a01b031633146113695760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6000546001600160a01b031633146113d75760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b601a8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061142490831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461147c5760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000546001600160a01b031633146114ed5760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b601980546001600160a01b039384166001600160a01b031991821617909155601a8054929093169116179055565b6000546001600160a01b031633146115685760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b6104e2831115801561157c57506106408211155b801561158a57506107d08111155b6115d65760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000604482015260640161097a565b600c92909255600d55600e55565b6000546001600160a01b031633146116315760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561167157600080fd5b505afa158015611685573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a99190612b38565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156116f157600080fd5b505afa158015611705573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117299190612b38565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561178757600080fd5b505afa15801561179b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bf9190612b38565b90506001600160a01b03811661197d57816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561180857600080fd5b505afa15801561181c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118409190612b38565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561188857600080fd5b505afa15801561189c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c09190612b38565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561192057600080fd5b505af1158015611934573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119589190612b38565b601880546001600160a01b0319166001600160a01b0392909216919091179055611999565b601880546001600160a01b0319166001600160a01b0383161790555b50601780546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b03163314611a0a5760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611a825760405162461bcd60e51b815260206004820152601060248201526f21b0b63632b910109e9037bbb732b91760811b604482015260640161097a565b8284601554611a919190612e2e565b611a9b9190612e0c565b6021556015548190611aae908490612e2e565b611ab89190612e0c565b60225550505050565b6001600160a01b038316611b175760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f204164647265737300000000000000000000000000604482015260640161097a565b6001600160a01b038216611b6d5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f204164647265737300000000000000000000000000604482015260640161097a565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611c265760405162461bcd60e51b815260206004820152601460248201527f45524332303a205a65726f20616464726573732e000000000000000000000000604482015260640161097a565b6001600160a01b038316611c7c5760405162461bcd60e51b815260206004820152601460248201527f45524332303a205a65726f20616464726573732e000000000000000000000000604482015260640161097a565b60008211611ccc5760405162461bcd60e51b815260206004820152600860248201527f4d757374203e302e000000000000000000000000000000000000000000000000604482015260640161097a565b611cd68484612007565b15611f2c57602a5460ff1615611d8d576001600160a01b03841660009081526002602052604090205460ff1615611d4c576001600160a01b0383166000908152602b6020526040902054431415611d2c57600080fd5b6001600160a01b0383166000908152602b60205260409020439055611d8d565b6001600160a01b0384166000908152602b6020526040902054431415611d7157600080fd5b6001600160a01b0384166000908152602b602052604090204390555b6001600160a01b03841660009081526008602052604090205460ff1680611dcc57506001600160a01b03831660009081526008602052604090205460ff165b611f2c576001600160a01b03841660009081526002602052604090205460ff1680611e0f57506001600160a01b03831660009081526002602052604090205460ff165b15611e6657601d54821115611e665760405162461bcd60e51b815260206004820152601860248201527f4578636565647320746865206d61785478416d6f756e742e0000000000000000604482015260640161097a565b6001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d14801590611eac57506001600160a01b03831660009081526002602052604090205460ff16155b15611f2c5760205482611ed4856001600160a01b031660009081526001602052604090205490565b611ede9190612df4565b1115611f2c5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161097a565b6001600160a01b03841660009081526005602052604090205460019060ff1680611f6e57506001600160a01b03841660009081526005602052604090205460ff165b15611f77575060005b6001600160a01b03841660009081526002602052604090205460ff1615611ff257601a54600160a01b900460ff16158015611fbb5750601a54600160a81b900460ff165b15611ff257306000908152600160205260409020546021548110611ff0576022548110611fe757506022545b611ff0816120c5565b505b611ffe8585858461229c565b95945050505050565b600080546001600160a01b0384811691161480159061203457506000546001600160a01b03838116911614155b801561205957506001600160a01b03821660009081526007602052604090205460ff16155b801561207e57506001600160a01b03831660009081526007602052604090205460ff16155b801561209557506001600160a01b03821661dead14155b80156120a957506001600160a01b03821615155b80156120be57506001600160a01b0383163014155b9392505050565b601a805460ff60a01b1916600160a01b179055601154601054600f546120eb9190612df4565b6120f59190612df4565b6120fe5761228c565b60006002601354600f54846121139190612e2e565b61211d9190612e0c565b6121279190612e0c565b905060006121358284612e4d565b905061214081612580565b601454600f54479160009161215790600290612e0c565b6121619190612df4565b6002600f54846121719190612e2e565b61217b9190612e0c565b6121859190612e0c565b905083156121d9576121978482612702565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b60006121e58587612e4d565b1115612287576019546014546010546001600160a01b03909216916108fc919061220f8587612e4d565b6122199190612e2e565b6122239190612e0c565b6040518115909202916000818181858888f1935050505015801561224b573d6000803e3d6000fd5b50601a546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612285573d6000803e3d6000fd5b505b505050505b50601a805460ff60a01b19169055565b60235460009060ff16156124ad576001600160a01b03851660009081526006602052604090205460ff16806122e957506001600160a01b03841660009081526006602052604090205460ff165b156123365760405162461bcd60e51b815260206004820152601060248201527f536e697065722072656a65637465642e00000000000000000000000000000000604482015260640161097a565b602354610100900460ff166123e45761234f85856127c4565b602354610100900460ff1615801561236c575061236c8585612007565b156123df5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e000000000000000000000000000000000000000000000000000000606482015260840161097a565b6124ad565b600060255411801561240e57506001600160a01b03851660009081526002602052604090205460ff165b801561241f575061241f8585612007565b156124ad576028546025546124349043612e4d565b10156124ad576001600160a01b0384166000908152600660205260408120805460ff19166001179055602980549161246b83612e9f565b90915550506040516001600160a01b03851681527f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e59060200160405180910390a15b6001600160a01b038516600090815260016020526040812080548592906124d5908490612e4d565b9091555060009050826124e857836124f3565b6124f386868661291b565b6001600160a01b038616600090815260016020526040812080549293508392909190612520908490612df4565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161256c91815260200190565b60405180910390a350600195945050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106125b5576125b5612ed0565b6001600160a01b03928316602091820292909201810191909152601754604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c4648926004808301939192829003018186803b15801561262257600080fd5b505afa158015612636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265a9190612b38565b8160018151811061266d5761266d612ed0565b6001600160a01b0392831660209182029290920101526017546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac947906126cc908590600090869030904290600401612d83565b600060405180830381600087803b1580156126e657600080fd5b505af11580156126fa573d6000803e3d6000fd5b505050505050565b6017546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b15801561278457600080fd5b505af1158015612798573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127bd9190612cce565b5050505050565b602354610100900460ff16156128425760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e0000000000000000000000000000000000000000000000000000000000606482015260840161097a565b61284c8282612007565b15801561286657506018546001600160a01b038281169116145b15611214576028546003146128895761288143611388612df4565b60255561288e565b436025555b6001600160a01b03821660009081526007602052604090819020805460ff191660019081179091556023805461ff00191661010017905542602655601a805460ff60a81b1916600160a81b17905590517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599161290f91901515815260200190565b60405180910390a15050565b60185460009081906001600160a01b038681169116141561293f5750600c54612963565b6018546001600160a01b038581169116141561295e5750600d54612963565b50600e545b61296d8585612007565b156129925760245415806129885750602454641029c32d8914155b1561299257600080fd5b60006127106013546012546129a79190612df4565b6012546129b48588612e2e565b6129be9190612e2e565b6129c89190612e0c565b6129d29190612e0c565b90506000816127106129e48588612e2e565b6129ee9190612e0c565b6129f89190612e4d565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d80549293508492909190612a3b908490612df4565b90915550503060009081526001602052604081208054839290612a5f908490612df4565b909155505060405182815261dead906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a360405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a381612af18287612e4d565b612afb9190612e4d565b979650505050505050565b80358015158114612b1657600080fd5b919050565b600060208284031215612b2d57600080fd5b81356120be81612ee6565b600060208284031215612b4a57600080fd5b81516120be81612ee6565b60008060408385031215612b6857600080fd5b8235612b7381612ee6565b91506020830135612b8381612ee6565b809150509250929050565b600080600060608486031215612ba357600080fd5b8335612bae81612ee6565b92506020840135612bbe81612ee6565b929592945050506040919091013590565b60008060408385031215612be257600080fd5b8235612bed81612ee6565b9150612bfb60208401612b06565b90509250929050565b60008060408385031215612c1757600080fd5b8235612c2281612ee6565b946020939093013593505050565b600060208284031215612c4257600080fd5b6120be82612b06565b60008060408385031215612c5e57600080fd5b612bed83612b06565b600060208284031215612c7957600080fd5b5035919050565b60008060408385031215612c9357600080fd5b50508035926020909101359150565b600080600060608486031215612cb757600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612ce357600080fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215612d1257600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b81811015612d5b57858101830151858201604001528201612d3f565b81811115612d6d576000604083870101525b50601f01601f1916929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612dd35784516001600160a01b031683529383019391830191600101612dae565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612e0757612e07612eba565b500190565b600082612e2957634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612e4857612e48612eba565b500290565b600082821015612e5f57612e5f612eba565b500390565b600181811c90821680612e7857607f821691505b60208210811415612e9957634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612eb357612eb3612eba565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612efb57600080fd5b5056fea2646970667358221220e62813b09a448d3f30e0cbcc77309778d304c7cacf31d2b59c9de72dcea8115264736f6c63430008070033

Deployed Bytecode Sourcemap

3872:19691:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5682:73;;;;;;;;;;;;5713:42;5682:73;;;;;-1:-1:-1;;;;;4652:55:1;;;4634:74;;4622:2;4607:18;5682:73:0;;;;;;;;14440:169;;;;;;;;;;-1:-1:-1;14440:169:0;;;;;:::i;:::-;;:::i;:::-;;10758:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;5494:35::-;;;;;;;;;;-1:-1:-1;5494:35:0;;;;-1:-1:-1;;;;;5494:35:0;;;11371:161;;;;;;;;;;-1:-1:-1;11371:161:0;;;;;:::i;:::-;;:::i;:::-;;;5851:14:1;;5844:22;5826:41;;5814:2;5799:18;11371:161:0;5686:187:1;14617:349:0;;;;;;;;;;-1:-1:-1;14617:349:0;;;;;:::i;:::-;;:::i;10493:83::-;;;;;;;;;;-1:-1:-1;10566:7:0;;10493:83;;;12341:25:1;;;12329:2;12314:18;10493:83:0;12195:177:1;11985:306:0;;;;;;;;;;-1:-1:-1;11985:306:0;;;;;:::i;:::-;;:::i;15621:263::-;;;;;;;;;;-1:-1:-1;15621:263:0;;;;;:::i;:::-;;:::i;4726:42::-;;;;;;;;;;;;4764:4;4726:42;;10582:80;;;;;;;;;;-1:-1:-1;10582:80:0;;5385:1;13874:36:1;;13862:2;13847:18;10582:80:0;13732:184:1;12299:215:0;;;;;;;;;;-1:-1:-1;12299:215:0;;;;;:::i;:::-;;:::i;4683:34::-;;;;;;;;;;;;;;;;15355:258;;;;;;;;;;-1:-1:-1;15355:258:0;;;;;:::i;:::-;;:::i;4612:28::-;;;;;;;;;;;;;;;;5536:21;;;;;;;;;;-1:-1:-1;5536:21:0;;;;-1:-1:-1;;;;;5536:21:0;;;6059:41;;;;;;;;;;-1:-1:-1;6059:41:0;;;;-1:-1:-1;;;6059:41:0;;;;;;9176:761;;;;;;;;;;-1:-1:-1;9176:761:0;;;;;:::i;:::-;;:::i;13682:125::-;;;;;;;;;;-1:-1:-1;13682:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;13771:28:0;13747:4;13771:28;;;:19;:28;;;;;;;;;13682:125;6627:36;;;;;;;;;;-1:-1:-1;6627:36:0;;;;;;;;;;;11857:120;;;;;;;;;;-1:-1:-1;11857:120:0;;;;;:::i;:::-;;:::i;4647:29::-;;;;;;;;;;;;;;;;13815:134;;;;;;;;;;-1:-1:-1;13815:134:0;;;;;:::i;:::-;;:::i;4401:65::-;;;;;;;;;;-1:-1:-1;4401:65:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11071:117;;;;;;;;;;-1:-1:-1;11071:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;11164:16:0;11137:7;11164:16;;;:7;:16;;;;;;;11071:117;9945:195;;;;;;;;;;;;;:::i;6197:69::-;;;;;;;;;;;;;;;;13264:410;;;;;;;;;;-1:-1:-1;13264:410:0;;;;;:::i;:::-;;:::i;14097:186::-;;;;;;;;;;-1:-1:-1;14097:186:0;;;;;:::i;:::-;;:::i;10844:80::-;;;;;;;;;;-1:-1:-1;10896:7:0;9154:6;-1:-1:-1;;;;;9154:6:0;10844:80;;13957:132;;;;;;;;;;-1:-1:-1;13957:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;14050:31:0;14026:4;14050:31;;;:22;:31;;;;;;;;;13957:132;6372:79;;;;;;;;;;;;;;;;10668:84;;;;;;;;;;;;;:::i;12522:225::-;;;;;;;;;;-1:-1:-1;12522:225:0;;;;;:::i;:::-;;:::i;11196:167::-;;;;;;;;;;-1:-1:-1;11196:167:0;;;;;:::i;:::-;;:::i;4825:47::-;;;;;;;;;;;;4868:4;4825:47;;4775:43;;;;;;;;;;;;4814:4;4775:43;;17076:163;;;;;;;;;;-1:-1:-1;17076:163:0;;;;;:::i;:::-;;:::i;16403:171::-;;;;;;;;;;-1:-1:-1;16403:171:0;;;;;:::i;:::-;;:::i;16913:155::-;;;;;;;;;;-1:-1:-1;16913:155:0;;;;;:::i;:::-;;:::i;16189:206::-;;;;;;;;;;-1:-1:-1;16189:206:0;;;;;:::i;:::-;;:::i;10930:133::-;;;;;;;;;;-1:-1:-1;10930:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;11032:19:0;;;11014:7;11032:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10930:133;6895:32;;;;;;;;;;;;;;;;14974:373;;;;;;;;;;-1:-1:-1;14974:373:0;;;;;:::i;:::-;;:::i;12755:501::-;;;;;;;;;;-1:-1:-1;12755:501:0;;;;;:::i;:::-;;:::i;14291:141::-;;;;;;;;;;-1:-1:-1;14291:141:0;;;;;:::i;:::-;;:::i;15892:289::-;;;;;;;;;;-1:-1:-1;15892:289:0;;;;;:::i;:::-;;:::i;14440:169::-;7589:6;;-1:-1:-1;;;;;7589:6:0;424:10;7589:22;7581:51;;;;-1:-1:-1;;;7581:51:0;;6939:2:1;7581:51:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:46;7053:18;;7581:51:0;;;;;;;;;14535:16:::1;:28:::0;;;::::1;;-1:-1:-1::0;;14535:28:0;;::::1;;::::0;;14574:15:::1;:27:::0;;;::::1;;::::0;;;::::1;;::::0;;14440:169::o;10758:80::-;10806:13;10830:5;10823:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10758:80;:::o;11371:161::-;11446:4;11463:39;424:10;11486:7;11495:6;11463:8;:39::i;:::-;-1:-1:-1;11520:4:0;11371:161;;;;:::o;14617:349::-;7589:6;;-1:-1:-1;;;;;7589:6:0;424:10;7589:22;7581:51;;;;-1:-1:-1;;;7581:51:0;;6939:2:1;7581:51:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:46;7053:18;;7581:51:0;6737:340:1;7581:51:0;14779:9;14772:4;14748:21:::1;14760:9:::0;14748;:21:::1;:::i;:::-;:28;;;;:::i;:::-;:40;;;;:::i;:::-;14793:4;14747:50;14737:84;;;::::0;-1:-1:-1;;;14737:84:0;;8446:2:1;14737:84:0::1;::::0;::::1;8428:21:1::0;8485:2;8465:18;;;8458:30;8524:21;8504:18;;;8497:49;8563:18;;14737:84:0::1;8244:343:1::0;14737:84:0::1;14832:15;:27:::0;;;;14870:15:::1;:27:::0;;;;14908:10:::1;:17:::0;14936:10:::1;:22:::0;14617:349::o;11985:306::-;-1:-1:-1;;;;;12106:19:0;;12085:4;12106:19;;;:11;:19;;;;;;;;12126:10;12106:31;;;;;;;;-1:-1:-1;;12106:52:0;12102:126;;-1:-1:-1;;;;;12175:19:0;;;;;;:11;:19;;;;;;;;12195:10;12175:31;;;;;;;:41;;12210:6;;12175:19;:41;;12210:6;;12175:41;:::i;:::-;;;;-1:-1:-1;;12102:126:0;12247:36;12257:6;12265:9;12276:6;12247:9;:36::i;:::-;12240:43;11985:306;-1:-1:-1;;;;11985:306:0:o;15621:263::-;7589:6;;-1:-1:-1;;;;;7589:6:0;424:10;7589:22;7581:51;;;;-1:-1:-1;;;7581:51:0;;6939:2:1;7581:51:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:46;7053:18;;7581:51:0;6737:340:1;7581:51:0;15711:13:::1;15749:7;15738;15728;;:17;;;;:::i;:::-;15727:29;;;;:::i;:::-;15711:45;;15795:3;15785:7;;:13;;;;:::i;:::-;15775:5;:24;;15767:74;;;::::0;-1:-1:-1;;;15767:74:0;;11561:2:1;15767:74:0::1;::::0;::::1;11543:21:1::0;11600:2;11580:18;;;11573:30;11639:34;11619:18;;;11612:62;-1:-1:-1;;;11690:18:1;;;11683:35;11735:19;;15767:74:0::1;11359:401:1::0;15767:74:0::1;15852:14;:22:::0;-1:-1:-1;;15621:263:0:o;12299:215::-;424:10;12387:4;12436:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12436:34:0;;;;;;;;;;12387:4;;12404:80;;12427:7;;12436:47;;12473:10;;12436:47;:::i;:::-;12404:8;:80::i;15355:258::-;7589:6;;-1:-1:-1;;;;;7589:6:0;424:10;7589:22;7581:51;;;;-1:-1:-1;;;7581:51:0;;6939:2:1;7581:51:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:46;7053:18;;7581:51:0;6737:340:1;7581:51:0;15444:13:::1;15482:7;15471;15461;;:17;;;;:::i;:::-;15460:29;;;;:::i;:::-;15444:45;;15528:3;15518:7;;:13;;;;:::i;:::-;15508:5;:24;;15500:74;;;::::0;-1:-1:-1;;;15500:74:0;;11561:2:1;15500:74:0::1;::::0;::::1;11543:21:1::0;11600:2;11580:18;;;11573:30;11639:34;11619:18;;;11612:62;-1:-1:-1;;;11690:18:1;;;11683:35;11735:19;;15500:74:0::1;11359:401:1::0;15500:74:0::1;15585:12;:20:::0;-1:-1:-1;;15355:258:0:o;9176:761::-;7589:6;;-1:-1:-1;;;;;7589:6:0;424:10;7589:22;7581:51;;;;-1:-1:-1;;;7581:51:0;;6939:2:1;7581:51:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:46;7053:18;;7581:51:0;6737:340:1;7581:51:0;-1:-1:-1;;;;;9257:22:0;::::1;9249:96;;;::::0;-1:-1:-1;;;9249:96:0;;11967:2:1;9249:96:0::1;::::0;::::1;11949:21:1::0;12006:2;11986:18;;;11979:30;12045:34;12025:18;;;12018:62;12116:31;12096:18;;;12089:59;12165:19;;9249:96:0::1;11765:425:1::0;9249:96:0::1;-1:-1:-1::0;;;;;9364:16:0;::::1;5713:42;9364:16;;9356:90;;;::::0;-1:-1:-1;;;9356:90:0;;11967:2:1;9356:90:0::1;::::0;::::1;11949:21:1::0;12006:2;11986:18;;;11979:30;12045:34;12025:18;;;12018:62;12116:31;12096:18;;;12089:59;12165:19;;9356:90:0::1;11765:425:1::0;9356:90:0::1;9477:6;::::0;;9457:34:::1;::::0;-1:-1:-1;;;;;9477:6:0;;::::1;::::0;9457:19:::1;:34::i;:::-;9502:35;9522:8;9532:4;9502:19;:35::i;:::-;9590:6;::::0;9562:16:::1;::::0;-1:-1:-1;;;;;9562:16:0;;::::1;9590:6:::0;::::1;9562:35;9558:90;;;9612:16;:36:::0;;-1:-1:-1;;;;;;9612:36:0::1;-1:-1:-1::0;;;;;9612:36:0;::::1;;::::0;;9558:90:::1;9711:6;::::0;;-1:-1:-1;;;;;9711:6:0;;::::1;11164:16:::0;;:7;:16;;;;;;;;;9669:11:::1;:19:::0;;;;;:29;;::::1;::::0;;;;;;;:49;9742:6;;;;::::1;11164:16:::0;;;;;;9732:21;9729:99:::1;;9780:6;::::0;;-1:-1:-1;;;;;9780:6:0::1;11164:16:::0;;;:7;:16;;;;;;;9770:46:::1;::::0;9780:6;9788:8;;9770:9:::1;:46::i;:::-;;9729:99;9848:6;:17:::0;;-1:-1:-1;;;;;;9848:17:0::1;-1:-1:-1::0;;;;;9848:17:0;::::1;::::0;;::::1;::::0;;9881:38:::1;::::0;9848:17;;;;9881:38:::1;::::0;9848:6;9881:38:::1;9176:761:::0;:::o;11857:120::-;11910:4;11934:35;11942:7;-1:-1:-1;;11934:7:0;:35::i;:::-;11927:42;11857:120;-1:-1:-1;;11857:120:0:o;13815:134::-;7589:6;;-1:-1:-1;;;;;7589:6:0;424:10;7589:22;7581:51;;;;-1:-1:-1;;;7581:51:0;;6939:2:1;7581:51:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:46;7053:18;;7581:51:0;6737:340:1;7581:51:0;-1:-1:-1;;;;;13903:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;13903:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13815:134::o;9945:195::-;7589:6;;-1:-1:-1;;;;;7589:6:0;424:10;7589:22;7581:51;;;;-1:-1:-1;;;7581:51:0;;6939:2:1;7581:51:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:46;7053:18;;7581:51:0;6737:340:1;7581:51:0;10032:6:::1;::::0;;10012:34:::1;::::0;-1:-1:-1;;;;;10032:6:0;;::::1;::::0;10012:19:::1;:34::i;:::-;10074:1;10057:19:::0;;-1:-1:-1;;;;;;10057:19:0::1;::::0;;10092:40:::1;::::0;10074:1;;10092:40:::1;::::0;10074:1;;10092:40:::1;9945:195::o:0;13264:410::-;7589:6;;-1:-1:-1;;;;;7589:6:0;424:10;7589:22;7581:51;;;;-1:-1:-1;;;7581:51:0;;6939:2:1;7581:51:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:46;7053:18;;7581:51:0;6737:340:1;7581:51:0;13345:16;13341:326:::1;;-1:-1:-1::0;;;;;;13378:13:0::1;13394:5;13378:13:::0;;;:7:::1;:13;::::0;;;;:21;;-1:-1:-1;;13378:21:0::1;::::0;;13264:410::o;13341:326::-:1;13436:17;::::0;:22;13432:139:::1;;13525:7;13505:17;;13487:15;:35;;;;:::i;:::-;:45;13479:76;;;::::0;-1:-1:-1;;;13479:76:0;;9143:2:1;13479:76:0::1;::::0;::::1;9125:21:1::0;9182:2;9162:18;;;9155:30;9221:20;9201:18;;;9194:48;9259:18;;13479:76:0::1;8941:342:1::0;13479:76:0::1;-1:-1:-1::0;;;;;13585:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;:20;;-1:-1:-1;;13585:20:0::1;13601:4;13585:20;::::0;;13640:15:::1;13620:17;:35:::0;13341:326:::1;13264:410:::0;;:::o;14097:186::-;7589:6;;-1:-1:-1;;;;;7589:6:0;424:10;7589:22;7581:51;;;;-1:-1:-1;;;7581:51:0;;6939:2:1;7581:51:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:46;7053:18;;7581:51:0;6737:340:1;7581:51:0;14179:13:::1;::::0;:18;14170:38:::1;;;::::0;-1:-1:-1;;;14170:38:0;;10519:2:1;14170:38:0::1;::::0;::::1;10501:21:1::0;10558:1;10538:18;;;10531:29;10596:8;10576:18;;;10569:36;10622:18;;14170:38:0::1;10317:329:1::0;14170:38:0::1;14219:13;:28:::0;14274:1:::1;14258:13;:17:::0;14097:186::o;10668:84::-;10718:13;10742:7;10735:14;;;;;:::i;12522:225::-;424:10;12615:4;12664:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12664:34:0;;;;;;;;;;12615:4;;12632:85;;12655:7;;12664:52;;12701:15;;12664:52;:::i;11196:167::-;11274:4;11291:42;424:10;11315:9;11326:6;11291:9;:42::i;:::-;-1:-1:-1;11351:4:0;;11196:167;-1:-1:-1;;;11196:167:0:o;17076:163::-;7589:6;;-1:-1:-1;;;;;7589:6:0;424:10;7589:22;7581:51;;;;-1:-1:-1;;;7581:51:0;;6939:2:1;7581:51:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:46;7053:18;;7581:51:0;6737:340:1;7581:51:0;-1:-1:-1;;;;;17174:49:0::1;17226:5;17174:49:::0;;;:32:::1;:49;::::0;;;;:57;;-1:-1:-1;;17174:57:0::1;::::0;;17076:163::o;16403:171::-;7589:6;;-1:-1:-1;;;;;7589:6:0;424:10;7589:22;7581:51;;;;-1:-1:-1;;;7581:51:0;;6939:2:1;7581:51:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:46;7053:18;;7581:51:0;6737:340:1;7581:51:0;16480:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;16480:32:0::1;-1:-1:-1::0;;;;16480:32:0;;::::1;;::::0;;16528:38:::1;::::0;::::1;::::0;::::1;::::0;16504:8;5851:14:1;5844:22;5826:41;;5814:2;5799:18;;5686:187;16528:38:0::1;;;;;;;;16403:171:::0;:::o;16913:155::-;7589:6;;-1:-1:-1;;;;;7589:6:0;424:10;7589:22;7581:51;;;;-1:-1:-1;;;7581:51:0;;6939:2:1;7581:51:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:46;7053:18;;7581:51:0;6737:340:1;7581:51:0;-1:-1:-1;;;;;17004:49:0::1;;::::0;;;:32:::1;:49;::::0;;;;:56;;-1:-1:-1;;17004:56:0::1;17056:4;17004:56;::::0;;16913:155::o;16189:206::-;7589:6;;-1:-1:-1;;;;;7589:6:0;424:10;7589:22;7581:51;;;;-1:-1:-1;;;7581:51:0;;6939:2:1;7581:51:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:46;7053:18;;7581:51:0;6737:340:1;7581:51:0;16300:16:::1;:43:::0;;-1:-1:-1;;;;;16300:43:0;;::::1;-1:-1:-1::0;;;;;;16300:43:0;;::::1;;::::0;;;16354:11:::1;:33:::0;;;;;::::1;::::0;::::1;;::::0;;16189:206::o;14974:373::-;7589:6;;-1:-1:-1;;;;;7589:6:0;424:10;7589:22;7581:51;;;;-1:-1:-1;;;7581:51:0;;6939:2:1;7581:51:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:46;7053:18;;7581:51:0;6737:340:1;7581:51:0;4764:4:::1;15084:6;:21;;:65;;;;;4814:4;15126:7;:23;;15084:65;:117;;;;;4868:4;15170:11;:31;;15084:117;15076:170;;;::::0;-1:-1:-1;;;15076:170:0;;8094:2:1;15076:170:0::1;::::0;::::1;8076:21:1::0;8133:2;8113:18;;;8106:30;8172:25;8152:18;;;8145:53;8215:18;;15076:170:0::1;7892:347:1::0;15076:170:0::1;15257:7;:16:::0;;;;15284:8:::1;:18:::0;15313:12:::1;:26:::0;14974:373::o;12755:501::-;7589:6;;-1:-1:-1;;;;;7589:6:0;424:10;7589:22;7581:51;;;;-1:-1:-1;;;7581:51:0;;6939:2:1;7581:51:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:46;7053:18;;7581:51:0;6737:340:1;7581:51:0;12826:29:::1;12877:9;12826:61;;12898:16;12935:10;-1:-1:-1::0;;;;;12935:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12917:47:0::1;;12973:4;12980:10;-1:-1:-1::0;;;;;12980:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12917:81;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;4972:15:1;;;12917:81:0::1;::::0;::::1;4954:34:1::0;5024:15;;5004:18;;;4997:43;4866:18;;12917:81:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12898:100:::0;-1:-1:-1;;;;;;13013:22:0;::::1;13009:207;;13079:10;-1:-1:-1::0;;;;;13079:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13061:50:0::1;;13120:4;13127:10;-1:-1:-1::0;;;;;13127:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13061:84;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;4972:15:1;;;13061:84:0::1;::::0;::::1;4954:34:1::0;5024:15;;5004:18;;;4997:43;4866:18;;13061:84:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13052:6;:93:::0;;-1:-1:-1;;;;;;13052:93:0::1;-1:-1:-1::0;;;;;13052:93:0;;;::::1;::::0;;;::::1;::::0;;13009:207:::1;;;13187:6;:17:::0;;-1:-1:-1;;;;;;13187:17:0::1;-1:-1:-1::0;;;;;13187:17:0;::::1;;::::0;;13009:207:::1;-1:-1:-1::0;13226:9:0::1;:22:::0;;-1:-1:-1;;;;;;13226:22:0::1;-1:-1:-1::0;;;;;13226:22:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;12755:501:0:o;14291:141::-;7589:6;;-1:-1:-1;;;;;7589:6:0;424:10;7589:22;7581:51;;;;-1:-1:-1;;;7581:51:0;;6939:2:1;7581:51:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:46;7053:18;;7581:51:0;6737:340:1;7581:51:0;-1:-1:-1;;;;;14383:31:0;;;::::1;;::::0;;;:22:::1;:31;::::0;;;;:41;;-1:-1:-1;;14383:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14291:141::o;15892:289::-;7589:6;;-1:-1:-1;;;;;7589:6:0;424:10;7589:22;7581:51;;;;-1:-1:-1;;;7581:51:0;;6939:2:1;7581:51:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:46;7053:18;;7581:51:0;6737:340:1;7581:51:0;16092:16:::1;16072;16062:7;;:26;;;;:::i;:::-;16061:47;;;;:::i;:::-;16045:13;:63:::0;16133:7:::1;::::0;16160:13;;16133:23:::1;::::0;16143:13;;16133:23:::1;:::i;:::-;16132:41;;;;:::i;:::-;16119:10;:54:::0;-1:-1:-1;;;;15892:289:0:o;11540:309::-;-1:-1:-1;;;;;11634:20:0;;11626:52;;;;-1:-1:-1;;;11626:52:0;;9826:2:1;11626:52:0;;;9808:21:1;9865:2;9845:18;;;9838:30;9904:21;9884:18;;;9877:49;9943:18;;11626:52:0;9624:343:1;11626:52:0;-1:-1:-1;;;;;11697:21:0;;11689:53;;;;-1:-1:-1;;;11689:53:0;;9826:2:1;11689:53:0;;;9808:21:1;9865:2;9845:18;;;9838:30;9904:21;9884:18;;;9877:49;9943:18;;11689:53:0;9624:343:1;11689:53:0;-1:-1:-1;;;;;11755:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;11808:33;;12341:25:1;;;11808:33:0;;12314:18:1;11808:33:0;;;;;;;11540:309;;;:::o;17249:1791::-;17328:4;-1:-1:-1;;;;;17353:18:0;;17345:51;;;;-1:-1:-1;;;17345:51:0;;8794:2:1;17345:51:0;;;8776:21:1;8833:2;8813:18;;;8806:30;8872:22;8852:18;;;8845:50;8912:18;;17345:51:0;8592:344:1;17345:51:0;-1:-1:-1;;;;;17415:16:0;;17407:49;;;;-1:-1:-1;;;17407:49:0;;8794:2:1;17407:49:0;;;8776:21:1;8833:2;8813:18;;;8806:30;8872:22;8852:18;;;8845:50;8912:18;;17407:49:0;8592:344:1;17407:49:0;17484:1;17475:6;:10;17467:31;;;;-1:-1:-1;;;17467:31:0;;9490:2:1;17467:31:0;;;9472:21:1;9529:1;9509:18;;;9502:29;9567:10;9547:18;;;9540:38;9595:18;;17467:31:0;9288:331:1;17467:31:0;17512:20;17523:4;17529:2;17512:10;:20::i;:::-;17509:852;;;17553:15;;;;17549:347;;;-1:-1:-1;;;;;17593:13:0;;;;;;:7;:13;;;;;;;;17589:292;;;-1:-1:-1;;;;;17638:13:0;;;;;;:9;:13;;;;;;17655:12;17638:29;;17630:38;;;;;;-1:-1:-1;;;;;17691:13:0;;;;;;:9;:13;;;;;17707:12;17691:28;;17589:292;;;-1:-1:-1;;;;;17776:15:0;;;;;;:9;:15;;;;;;17795:12;17776:31;;17768:40;;;;;;-1:-1:-1;;;;;17831:15:0;;;;;;:9;:15;;;;;17849:12;17831:30;;17589:292;-1:-1:-1;;;;;17917:38:0;;;;;;:32;:38;;;;;;;;;:78;;-1:-1:-1;;;;;;17959:36:0;;;;;;:32;:36;;;;;;;;17917:78;17912:434;;-1:-1:-1;;;;;18019:13:0;;;;;;:7;:13;;;;;;;;;:28;;-1:-1:-1;;;;;;18036:11:0;;;;;;:7;:11;;;;;;;;18019:28;18016:134;;;18089:12;;18079:6;:22;;18071:59;;;;-1:-1:-1;;;18071:59:0;;11208:2:1;18071:59:0;;;11190:21:1;11247:2;11227:18;;;11220:30;11286:26;11266:18;;;11259:54;11330:18;;18071:59:0;11006:348:1;18071:59:0;-1:-1:-1;;;;;18171:20:0;;5627:42;18171:20;;;;:36;;-1:-1:-1;;;;;;18196:11:0;;;;;;:7;:11;;;;;;;;18195:12;18171:36;18168:163;;;18266:14;;18256:6;18240:13;18250:2;-1:-1:-1;;;;;11164:16:0;11137:7;11164:16;;;:7;:16;;;;;;;11071:117;18240:13;:22;;;;:::i;:::-;:40;;18232:79;;;;-1:-1:-1;;;18232:79:0;;10853:2:1;18232:79:0;;;10835:21:1;10892:2;10872:18;;;10865:30;10931:28;10911:18;;;10904:56;10977:18;;18232:79:0;10651:350:1;18232:79:0;-1:-1:-1;;;;;18406:25:0;;18373:12;18406:25;;;:19;:25;;;;;;18388:4;;18406:25;;;:52;;-1:-1:-1;;;;;;18435:23:0;;;;;;:19;:23;;;;;;;;18406:52;18403:98;;;-1:-1:-1;18484:5:0;18403:98;-1:-1:-1;;;;;18517:11:0;;;;;;:7;:11;;;;;;;;18513:457;;;18550:16;;-1:-1:-1;;;18550:16:0;;;;18549:17;:59;;;;-1:-1:-1;18587:21:0;;-1:-1:-1;;;18587:21:0;;;;18549:59;18545:408;;;18692:4;18643:28;11164:16;;;:7;:16;;;;;;18745:13;;18721:37;;18717:221;;18810:10;;18786:20;:34;18783:77;;-1:-1:-1;18847:10:0;;18783:77;18882:36;18897:20;18882:14;:36::i;:::-;18624:329;18545:408;18988:44;19006:4;19012:2;19016:6;19024:7;18988:17;:44::i;:::-;18981:51;17249:1791;-1:-1:-1;;;;;17249:1791:0:o;16582:323::-;16650:4;9154:6;;-1:-1:-1;;;;;16674:15:0;;;9154:6;;16674:15;;;;:45;;-1:-1:-1;9127:7:0;9154:6;-1:-1:-1;;;;;16706:13:0;;;9154:6;;16706:13;;16674:45;:84;;;;-1:-1:-1;;;;;;16737:21:0;;;;;;:17;:21;;;;;;;;16736:22;16674:84;:125;;;;-1:-1:-1;;;;;;16776:23:0;;;;;;:17;:23;;;;;;;;16775:24;16674:125;:152;;;;-1:-1:-1;;;;;;16816:10:0;;5713:42;16816:10;;16674:152;:185;;;;-1:-1:-1;;;;;;16843:16:0;;;;16674:185;:223;;;;-1:-1:-1;;;;;;16876:21:0;;16892:4;16876:21;;16674:223;16667:230;16582:323;-1:-1:-1;;;16582:323:0:o;19048:963::-;7463:16;:23;;-1:-1:-1;;;;7463:23:0;-1:-1:-1;;;7463:23:0;;;19173:10:::1;::::0;19155:15:::1;::::0;19137::::1;::::0;:33:::1;::::0;19155:15;19137:33:::1;:::i;:::-;:46;;;;:::i;:::-;19133:77;;19203:7;;19133:77;19220:17;19310:1;19284:22;;19265:15;;19242:20;:38;;;;:::i;:::-;19241:65;;;;:::i;:::-;19240:71;;;;:::i;:::-;19220:91:::0;-1:-1:-1;19324:20:0::1;19347:32;19220:91:::0;19347:20;:32:::1;:::i;:::-;19324:55;;19390:30;19407:12;19390:16;:30::i;:::-;19578:13;::::0;19558:15:::1;::::0;19458:21:::1;::::0;19433:22:::1;::::0;19558:17:::1;::::0;19574:1:::1;::::0;19558:17:::1;:::i;:::-;:33;;;;:::i;:::-;19552:1;19536:15;;19519:14;:32;;;;:::i;:::-;:34;;;;:::i;:::-;19518:74;;;;:::i;:::-;19490:103:::0;-1:-1:-1;19610:13:0;;19606:161:::1;;19640:41;19653:9;19664:16;19640:12;:41::i;:::-;19701:54;::::0;;13610:25:1;;;13666:2;13651:18;;13644:34;;;13694:18;;;13687:34;;;19701:54:0::1;::::0;13598:2:1;13583:18;19701:54:0::1;;;;;;;19606:161;19816:1;19781:32;19804:9:::0;19781:20;:32:::1;:::i;:::-;:36;19777:227;;;19834:16;::::0;19919:13:::1;::::0;19899:15:::1;::::0;-1:-1:-1;;;;;19834:16:0;;::::1;::::0;:100:::1;::::0;19919:13;19862:33:::1;19879:16:::0;19862:14;:33:::1;:::i;:::-;19861:53;;;;:::i;:::-;19860:73;;;;:::i;:::-;19834:100;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;19949:11:0::1;::::0;:43:::1;::::0;-1:-1:-1;;;;;19949:11:0;;::::1;::::0;19970:21:::1;19949:43:::0;::::1;;;::::0;:11:::1;:43:::0;:11;:43;19970:21;19949:11;:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;19777:227;19122:889;;;;7497:1;-1:-1:-1::0;7509:16:0;:24;;-1:-1:-1;;;;7509:24:0;;;19048:963::o;21407:1216::-;21528:16;;21507:4;;21528:16;;21524:858;;;-1:-1:-1;;;;;14050:31:0;;14026:4;14050:31;;;:22;:31;;;;;;;;21564:56;;;-1:-1:-1;;;;;;14050:31:0;;14026:4;14050:31;;;:22;:31;;;;;;;;21595:25;21560:123;;;21641:26;;-1:-1:-1;;;21641:26:0;;10174:2:1;21641:26:0;;;10156:21:1;10213:2;10193:18;;;10186:30;10252:18;10232;;;10225:46;10288:18;;21641:26:0;9972:340:1;21560:123:0;21704:16;;;;;;;21699:672;;21741:28;21760:4;21766:2;21741:18;:28::i;:::-;21793:16;;;;;;;21792:17;:41;;;;;21813:20;21824:4;21830:2;21813:10;:20::i;:::-;21788:137;;;21858:47;;-1:-1:-1;;;21858:47:0;;7688:2:1;21858:47:0;;;7670:21:1;7727:2;7707:18;;;7700:30;7766:34;7746:18;;;7739:62;7837:7;7817:18;;;7810:35;7862:19;;21858:47:0;7486:401:1;21788:137:0;21699:672;;;21984:1;21969:12;;:16;:55;;;;-1:-1:-1;;;;;;22011:13:0;;;;;;:7;:13;;;;;;;;21969:55;:101;;;;;22050:20;22061:4;22067:2;22050:10;:20::i;:::-;21965:391;;;22147:13;;22132:12;;22117:27;;:12;:27;:::i;:::-;:43;22113:224;;;-1:-1:-1;;;;;22189:26:0;;;;;;:22;:26;;;;;:33;;-1:-1:-1;;22189:33:0;22218:4;22189:33;;;22249:13;:16;;;;;;:::i;:::-;;;;-1:-1:-1;;22297:16:0;;-1:-1:-1;;;;;4652:55:1;;4634:74;;22297:16:0;;4622:2:1;4607:18;22297:16:0;;;;;;;22113:224;-1:-1:-1;;;;;22394:13:0;;;;;;:7;:13;;;;;:23;;22411:6;;22394:13;:23;;22411:6;;22394:23;:::i;:::-;;;;-1:-1:-1;22428:22:0;;-1:-1:-1;22454:7:0;22453:48;;22495:6;22453:48;;;22465:27;22475:4;22481:2;22485:6;22465:9;:27::i;:::-;-1:-1:-1;;;;;22512:11:0;;;;;;:7;:11;;;;;:29;;22428:73;;-1:-1:-1;22428:73:0;;22512:11;;;:29;;22428:73;;22512:29;:::i;:::-;;;;;;;;22574:2;-1:-1:-1;;;;;22559:34:0;22568:4;-1:-1:-1;;;;;22559:34:0;;22578:14;22559:34;;;;12341:25:1;;12329:2;12314:18;;12195:177;22559:34:0;;;;;;;;-1:-1:-1;22611:4:0;;21407:1216;-1:-1:-1;;;;;21407:1216:0:o;20019:417::-;20110:16;;;20124:1;20110:16;;;;;;;;20086:21;;20110:16;;;;;;;;;;-1:-1:-1;20110:16:0;20086:40;;20155:4;20137;20142:1;20137:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20137:23:0;;;:7;;;;;;;;;;:23;;;;20181:9;;:16;;;;;;;;:9;;;;;:14;;:16;;;;;20137:7;;20181:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20171:4;20176:1;20171:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20171:26:0;;;:7;;;;;;;;;:26;20210:9;;:218;;;;;:9;;;:60;;:218;;20285:11;;20210:9;;20355:4;;20382;;20402:15;;20210:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20075:361;20019:417;:::o;20444:332::-;20525:9;;:243;;;;;20591:4;20525:243;;;5415:34:1;5465:18;;;5458:34;;;20525:9:0;5508:18:1;;;5501:34;;;5551:18;;;5544:34;5713:42:0;5594:19:1;;;5587:44;20742:15:0;5647:19:1;;;5640:35;-1:-1:-1;;;;;20525:9:0;;;;:25;;20558:9;;5326:19:1;;20525:243:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20444:332;;:::o;20784:615::-;20866:16;;;;;;;20865:17;20857:65;;;;-1:-1:-1;;;20857:65:0;;7284:2:1;20857:65:0;;;7266:21:1;7323:2;7303:18;;;7296:30;7362:34;7342:18;;;7335:62;7433:5;7413:18;;;7406:33;7456:19;;20857:65:0;7082:399:1;20857:65:0;20938:20;20949:4;20955:2;20938:10;:20::i;:::-;20937:21;:37;;;;-1:-1:-1;20968:6:0;;-1:-1:-1;;;;;20962:12:0;;;20968:6;;20962:12;20937:37;20933:459;;;20995:13;;21012:1;20995:18;20991:161;;21049:19;:12;21064:4;21049:19;:::i;:::-;21034:12;:34;20991:161;;;21124:12;21109;:27;20991:161;-1:-1:-1;;;;;21168:23:0;;;;;;:17;:23;;;;;;;:30;;-1:-1:-1;;21168:30:0;21194:4;21168:30;;;;;;21213:16;:23;;-1:-1:-1;;21213:23:0;21168:30;21213:23;;;21266:15;21251:12;:30;21298:21;:28;;-1:-1:-1;;;;21298:28:0;-1:-1:-1;;;21298:28:0;;;21346:34;;;;;;5851:14:1;;5844:22;5826:41;;5814:2;5799:18;;5686:187;21346:34:0;;;;;;;;20784:615;;:::o;22631:929::-;22773:6;;22710:7;;;;-1:-1:-1;;;;;22765:14:0;;;22773:6;;22765:14;22761:197;;;-1:-1:-1;22809:7:0;;22761:197;;;22844:6;;-1:-1:-1;;;;;22838:12:0;;;22844:6;;22838:12;22834:124;;;-1:-1:-1;22880:8:0;;22834:124;;;-1:-1:-1;22934:12:0;;22834:124;22974:20;22985:4;22991:2;22974:10;:20::i;:::-;22970:150;;;23014:13;;:18;;:50;;;23036:13;;23053:11;23036:28;;23014:50;23010:99;;;23085:8;;;23010:99;23130:15;5289:5;23199:22;;23186:10;;:35;;;;:::i;:::-;23171:10;;23149:19;23158:10;23149:6;:19;:::i;:::-;:32;;;;:::i;:::-;23148:74;;;;:::i;:::-;:93;;;;:::i;:::-;23130:111;-1:-1:-1;23252:17:0;23130:111;5289:5;23273:19;23282:10;23273:6;:19;:::i;:::-;:38;;;;:::i;:::-;23272:50;;;;:::i;:::-;5713:42;23333:13;;;;:7;:13;;;:24;;23252:70;;-1:-1:-1;23350:7:0;;23333:13;;;:24;;23350:7;;23333:24;:::i;:::-;;;;-1:-1:-1;;23384:4:0;23368:22;;;;:7;:22;;;;;:37;;23395:9;;23368:22;:37;;23395:9;;23368:37;:::i;:::-;;;;-1:-1:-1;;23421:29:0;;12341:25:1;;;5713:42:0;;-1:-1:-1;;;;;23421:29:0;;;;;12329:2:1;12314:18;23421:29:0;;;;;;;23466:40;;12341:25:1;;;23489:4:0;;-1:-1:-1;;;;;23466:40:0;;;;;12329:2:1;12314:18;23466:40:0;;;;;;;23545:7;23524:18;23533:9;23524:6;:18;:::i;:::-;:28;;;;:::i;:::-;23517:35;22631:929;-1:-1:-1;;;;;;;22631:929:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:52;;;570:1;567;560:12;522:52;602:9;596:16;621:31;646:5;621:31;:::i;687:404::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;-1:-1:-1;1013:2:1;998:18;;985:32;1026:33;985:32;1026:33;:::i;:::-;1078:7;1068:17;;;687:404;;;;;:::o;1489:456::-;1566:6;1574;1582;1635:2;1623:9;1614:7;1610:23;1606:32;1603:52;;;1651:1;1648;1641:12;1603:52;1690:9;1677:23;1709:31;1734:5;1709:31;:::i;:::-;1759:5;-1:-1:-1;1816:2:1;1801:18;;1788:32;1829:33;1788:32;1829:33;:::i;:::-;1489:456;;1881:7;;-1:-1:-1;;;1935:2:1;1920:18;;;;1907:32;;1489:456::o;1950:315::-;2015:6;2023;2076:2;2064:9;2055:7;2051:23;2047:32;2044:52;;;2092:1;2089;2082:12;2044:52;2131:9;2118:23;2150:31;2175:5;2150:31;:::i;:::-;2200:5;-1:-1:-1;2224:35:1;2255:2;2240:18;;2224:35;:::i;:::-;2214:45;;1950:315;;;;;:::o;2270:::-;2338:6;2346;2399:2;2387:9;2378:7;2374:23;2370:32;2367:52;;;2415:1;2412;2405:12;2367:52;2454:9;2441:23;2473:31;2498:5;2473:31;:::i;:::-;2523:5;2575:2;2560:18;;;;2547:32;;-1:-1:-1;;;2270:315:1:o;2590:180::-;2646:6;2699:2;2687:9;2678:7;2674:23;2670:32;2667:52;;;2715:1;2712;2705:12;2667:52;2738:26;2754:9;2738:26;:::i;2775:248::-;2837:6;2845;2898:2;2886:9;2877:7;2873:23;2869:32;2866:52;;;2914:1;2911;2904:12;2866:52;2937:26;2953:9;2937:26;:::i;3028:180::-;3087:6;3140:2;3128:9;3119:7;3115:23;3111:32;3108:52;;;3156:1;3153;3146:12;3108:52;-1:-1:-1;3179:23:1;;3028:180;-1:-1:-1;3028:180:1:o;3213:248::-;3281:6;3289;3342:2;3330:9;3321:7;3317:23;3313:32;3310:52;;;3358:1;3355;3348:12;3310:52;-1:-1:-1;;3381:23:1;;;3451:2;3436:18;;;3423:32;;-1:-1:-1;3213:248:1:o;3466:316::-;3543:6;3551;3559;3612:2;3600:9;3591:7;3587:23;3583:32;3580:52;;;3628:1;3625;3618:12;3580:52;-1:-1:-1;;3651:23:1;;;3721:2;3706:18;;3693:32;;-1:-1:-1;3772:2:1;3757:18;;;3744:32;;3466:316;-1:-1:-1;3466:316:1:o;3787:306::-;3875:6;3883;3891;3944:2;3932:9;3923:7;3919:23;3915:32;3912:52;;;3960:1;3957;3950:12;3912:52;3989:9;3983:16;3973:26;;4039:2;4028:9;4024:18;4018:25;4008:35;;4083:2;4072:9;4068:18;4062:25;4052:35;;3787:306;;;;;:::o;4098:385::-;4184:6;4192;4200;4208;4261:3;4249:9;4240:7;4236:23;4232:33;4229:53;;;4278:1;4275;4268:12;4229:53;-1:-1:-1;;4301:23:1;;;4371:2;4356:18;;4343:32;;-1:-1:-1;4422:2:1;4407:18;;4394:32;;4473:2;4458:18;4445:32;;-1:-1:-1;4098:385:1;-1:-1:-1;4098:385:1:o;6135:597::-;6247:4;6276:2;6305;6294:9;6287:21;6337:6;6331:13;6380:6;6375:2;6364:9;6360:18;6353:34;6405:1;6415:140;6429:6;6426:1;6423:13;6415:140;;;6524:14;;;6520:23;;6514:30;6490:17;;;6509:2;6486:26;6479:66;6444:10;;6415:140;;;6573:6;6570:1;6567:13;6564:91;;;6643:1;6638:2;6629:6;6618:9;6614:22;6610:31;6603:42;6564:91;-1:-1:-1;6716:2:1;6695:15;-1:-1:-1;;6691:29:1;6676:45;;;;6723:2;6672:54;;6135:597;-1:-1:-1;;;6135:597:1:o;12377:1026::-;12639:4;12687:3;12676:9;12672:19;12718:6;12707:9;12700:25;12744:2;12782:6;12777:2;12766:9;12762:18;12755:34;12825:3;12820:2;12809:9;12805:18;12798:31;12849:6;12884;12878:13;12915:6;12907;12900:22;12953:3;12942:9;12938:19;12931:26;;12992:2;12984:6;12980:15;12966:29;;13013:1;13023:218;13037:6;13034:1;13031:13;13023:218;;;13102:13;;-1:-1:-1;;;;;13098:62:1;13086:75;;13216:15;;;;13181:12;;;;13059:1;13052:9;13023:218;;;-1:-1:-1;;;;;;;13297:55:1;;;;13292:2;13277:18;;13270:83;-1:-1:-1;;;13384:3:1;13369:19;13362:35;13258:3;12377:1026;-1:-1:-1;;;12377:1026:1:o;13921:128::-;13961:3;13992:1;13988:6;13985:1;13982:13;13979:39;;;13998:18;;:::i;:::-;-1:-1:-1;14034:9:1;;13921:128::o;14054:274::-;14094:1;14120;14110:189;;-1:-1:-1;;;14152:1:1;14145:88;14256:4;14253:1;14246:15;14284:4;14281:1;14274:15;14110:189;-1:-1:-1;14313:9:1;;14054:274::o;14333:168::-;14373:7;14439:1;14435;14431:6;14427:14;14424:1;14421:21;14416:1;14409:9;14402:17;14398:45;14395:71;;;14446:18;;:::i;:::-;-1:-1:-1;14486:9:1;;14333:168::o;14506:125::-;14546:4;14574:1;14571;14568:8;14565:34;;;14579:18;;:::i;:::-;-1:-1:-1;14616:9:1;;14506:125::o;14636:437::-;14715:1;14711:12;;;;14758;;;14779:61;;14833:4;14825:6;14821:17;14811:27;;14779:61;14886:2;14878:6;14875:14;14855:18;14852:38;14849:218;;;-1:-1:-1;;;14920:1:1;14913:88;15024:4;15021:1;15014:15;15052:4;15049:1;15042:15;14849:218;;14636:437;;;:::o;15078:135::-;15117:3;-1:-1:-1;;15138:17:1;;15135:43;;;15158:18;;:::i;:::-;-1:-1:-1;15205:1:1;15194:13;;15078:135::o;15218:184::-;-1:-1:-1;;;15267:1:1;15260:88;15367:4;15364:1;15357:15;15391:4;15388:1;15381:15;15407:184;-1:-1:-1;;;15456:1:1;15449:88;15556:4;15553:1;15546:15;15580:4;15577:1;15570:15;15785:154;-1:-1:-1;;;;;15864:5:1;15860:54;15853:5;15850:65;15840:93;;15929:1;15926;15919:12;15840:93;15785:154;:::o

Swarm Source

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