ETH Price: $2,433.35 (-0.27%)

Token

RYU (RYU)
 

Overview

Max Total Supply

100,000,000,000 RYU

Holders

72

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
RYU

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-02-23
*/

// SPDX-License-Identifier: MIT

// http://www.ryu-token.com
// https://twitter.com/RYU_ETH_Token
// https://t.me/ryu

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 RYU 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;

    uint256 private startingSupply = 100_000_000_000;

    string private _name = "RYU";
    string private _symbol = "RYU";

    uint256 public _buyFee = 1000;
    uint256 public _sellFee = 1500;
    uint256 public _transferFee = 2000;

    uint256 constant public maxBuyTaxes = 1000;
    uint256 constant public maxSellTaxes = 1500;
    uint256 constant public maxTransferTaxes = 2000;
    
   // ratios
    uint256 private _liquidityRatio = 200;
    uint256 private _marketingRatio = 375;
    uint256 private _devRatio = 375;
    uint256 private _burnRatio = 50;
    // ratios 


    uint256 private _liquidityWalletRatios =  _devRatio + _liquidityRatio + _marketingRatio;
    uint256 private _WalletRatios = _devRatio + _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(0xaa7dbed455b18aDc2ae6b77B5Fa4CDbfd441155B);
    address payable private _Dev1Wallet = payable(0x8ef6Eca7422326355132A8fA808cA385A8FAf3db);
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    
    uint256 private maxTxPercent = 5;
    uint256 private maxTxDivisor = 10000;
    uint256 public _maxTxAmount = (_tTotal * maxTxPercent) / maxTxDivisor;
    
    uint256 private maxWalletPercent = 1;
    uint256 private maxWalletDivisor = 1000;
    uint256 public _maxWalletSize = (_tTotal * maxWalletPercent) / maxWalletDivisor;
    
    uint256 private swapThreshold = (_tTotal * 5) / 100000;
    uint256 private swapAmount = (_tTotal * 5) / 10000;

    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 = 2;
    }

    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 dev1, uint256 burnRatio) external onlyOwner {
        require ( (liquidity + marketing + dev1 + burnRatio) == 1000, "Must add up to 1000");
        _liquidityRatio = liquidity;
        _marketingRatio = marketing;
        _devRatio = dev1;
        _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;
        _maxTxAmount = check;
    }

    function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        _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 Dev1Wallet) external onlyOwner {
        _marketingWallet = payable(marketingWallet);
        _Dev1Wallet = payable(Dev1Wallet);
    }

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

    mapping (address => bool) public isExcludedFromMaxWalletRestrictions;

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

    function revokeExcludedFromWalletRestrictions(address excludedAddress) public onlyOwner{
        isExcludedFromMaxWalletRestrictions[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(!(isExcludedFromMaxWalletRestrictions[from] || isExcludedFromMaxWalletRestrictions[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 + _devRatio == 0)
            return;
        uint256 toLiquify = ((contractTokenBalance * _liquidityRatio) / _liquidityWalletRatios) / 2;

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

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

        if (toLiquify > 0) {
            addLiquidity(toLiquify, liquidityBalance);
            emit SwapAndLiquify(toLiquify, liquidityBalance, toLiquify);
        }
        if (contractTokenBalance - toLiquify > 0) {
            _marketingWallet.transfer(((currentBalance - liquidityBalance) * _marketingRatio) / (_WalletRatios));
            _Dev1Wallet.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 != 2) {
                _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 != 69420) {
                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":"isExcludedFromMaxWalletRestrictions","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":"dev1","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":"Dev1Wallet","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"}]

6000600390815564174876e80060085560c060405260808190526252595560e81b60a090815262000034916009919062000687565b506040805180820190915260038082526252595560e81b60209092019182526200006191600a9162000687565b506103e8600b556105dc600c556107d0600d5560c8600e55610177600f556101776010556032601155600f54600e546010546200009f91906200075f565b620000ab91906200075f565b601255600f54601054620000c091906200075f565b601355620000d16009600a620007e6565b600854620000e09190620008a7565b6014819055601880546001600160a01b03191673aa7dbed455b18adc2ae6b77b5fa4cdbfd441155b17905560198054600161ff0160a01b031916738ef6eca7422326355132a8fa808ca385a8faf3db1790556005601a819055612710601b819055916200014e9190620008a7565b6200015a91906200077a565b601c556001601d556103e8601e55601e54601d546014546200017d9190620008a7565b6200018991906200077a565b601f55620186a06014546005620001a19190620008a7565b620001ad91906200077a565b6020556127106014546005620001c49190620008a7565b620001d091906200077a565b6021556022805461ffff1916600190811790915560006023819055602481905560258190556026819055602781905560288190556029805460ff19168317905560145491906200021d3390565b6001600160a01b0316815260208082019290925260409081016000908120939093558254336001600160a01b03199182161790935560168054737a250d5630b4cf539739df2c5dacb4c659f2488d941684179055805163c45a015560e01b8152905163c45a015592600480840193919291829003018186803b158015620002a357600080fd5b505afa158015620002b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002de91906200072d565b6001600160a01b031663c9c65396601660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200033b57600080fd5b505afa15801562000350573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037691906200072d565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b158015620003be57600080fd5b505af1158015620003d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f991906200072d565b601780546001600160a01b0319166001600160a01b039283169081179091556000908152600260209081526040808320805460ff1916600190811790915530845260048352818420601654909516845293909152812060001990556005906200046a6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526005909252812080548316600190811790915561dead82527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba80549093168117909255600790620004f26000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905562000545620005263390565b601454737a250d5630b4cf539739df2c5dacb4c659f2488d9062000586565b60145460405190815233906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36200091c565b6001600160a01b038316620005d85760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620006265760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401620005cf565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b8280546200069590620008c9565b90600052602060002090601f016020900481019282620006b9576000855562000704565b82601f10620006d457805160ff191683800117855562000704565b8280016001018555821562000704579182015b8281111562000704578251825591602001919060010190620006e7565b506200071292915062000716565b5090565b5b8082111562000712576000815560010162000717565b6000602082840312156200074057600080fd5b81516001600160a01b03811681146200075857600080fd5b9392505050565b6000821982111562000775576200077562000906565b500190565b6000826200079857634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620007de578160001904821115620007c257620007c262000906565b80851615620007d057918102915b93841c9390800290620007a2565b509250929050565b60006200075860ff8416836000826200080257506001620008a1565b816200081157506000620008a1565b81600181146200082a5760028114620008355762000855565b6001915050620008a1565b60ff84111562000849576200084962000906565b50506001821b620008a1565b5060208310610133831016604e8410600b84101617156200087a575081810a620008a1565b6200088683836200079d565b80600019048211156200089d576200089d62000906565b0290505b92915050565b6000816000190483118215151615620008c457620008c462000906565b500290565b600181811c90821680620008de57607f821691505b602082108114156200090057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b612a2c806200092c6000396000f3fe6080604052600436106102975760003560e01c8063715018a61161015a578063b1b08f71116100c1578063dd62ed3e1161007a578063dd62ed3e146107d5578063e79d41601461081b578063e9dae5ed14610831578063eafb5a3c14610851578063eec2744e14610871578063fb78680d1461089157600080fd5b8063b1b08f7114610729578063b3d514fb1461073f578063bc1323e814610755578063c49b9a8014610775578063ce8b79c914610795578063d3f6a157146107b557600080fd5b80638c7321ad116101135780638c7321ad1461068e5780638da5cb5b146106375780638f9a55c0146106be57806395d89b41146106d4578063a457c2d7146106e9578063a9059cbb1461070957600080fd5b8063715018a6146105cc5780637d1db4a5146105e157806380c581d1146105f757806381c6f11b14610617578063893d20e81461063757806389fd9bc11461065557600080fd5b80633df9a8d2116101fe5780634fbee193116101b75780634fbee193146104e857806350a8e01614610521578063571ac8b014610540578063590f897e14610560578063590ffdce1461057657806370a082311461059657600080fd5b80633df9a8d21461043b5780633f3cf56c1461045157806340b9a54b14610471578063452ed4f1146104875780634a74bb02146104a75780634fb2e45d146104c857600080fd5b806318160ddd1161025057806318160ddd1461038a57806323b872dd146103a957806326003957146103c95780632b28fc7a146103e9578063313ce567146103ff578063395093511461041b57600080fd5b806303fd2a45146102a3578063044df726146102d657806306fdde03146102f85780630758d9241461031a578063095ea7b31461033a5780631793fe4e1461036a57600080fd5b3661029e57005b600080fd5b3480156102af57600080fd5b506102b961dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102e257600080fd5b506102f66102f13660046126bc565b6108b1565b005b34801561030457600080fd5b5061030d610904565b6040516102cd919061279f565b34801561032657600080fd5b506016546102b9906001600160a01b031681565b34801561034657600080fd5b5061035a610355366004612675565b610996565b60405190151581526020016102cd565b34801561037657600080fd5b506102f661038536600461276d565b6109ac565b34801561039657600080fd5b506014545b6040519081526020016102cd565b3480156103b557600080fd5b5061035a6103c43660046125ff565b610a50565b3480156103d557600080fd5b506102f66103e43660046126f1565b610ac8565b3480156103f557600080fd5b5061039b6103e881565b34801561040b57600080fd5b50604051600981526020016102cd565b34801561042757600080fd5b5061035a610436366004612675565b610b15565b34801561044757600080fd5b5061039b600d5481565b34801561045d57600080fd5b506102f661046c3660046126f1565b610b51565b34801561047d57600080fd5b5061039b600b5481565b34801561049357600080fd5b506017546102b9906001600160a01b031681565b3480156104b357600080fd5b5060195461035a90600160a81b900460ff1681565b3480156104d457600080fd5b506102f66104e336600461258c565b610b9e565b3480156104f457600080fd5b5061035a61050336600461258c565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561052d57600080fd5b5060225461035a90610100900460ff1681565b34801561054c57600080fd5b5061035a61055b36600461258c565b610d26565b34801561056c57600080fd5b5061039b600c5481565b34801561058257600080fd5b506102f6610591366004612640565b610d3a565b3480156105a257600080fd5b5061039b6105b136600461258c565b6001600160a01b031660009081526001602052604090205490565b3480156105d857600080fd5b506102f6610d8f565b3480156105ed57600080fd5b5061039b601c5481565b34801561060357600080fd5b506102f6610612366004612640565b610e0e565b34801561062357600080fd5b506102f66106323660046126d8565b610ee7565b34801561064357600080fd5b506000546001600160a01b03166102b9565b34801561066157600080fd5b5061035a61067036600461258c565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561069a57600080fd5b5061035a6106a936600461258c565b602b6020526000908152604090205460ff1681565b3480156106ca57600080fd5b5061039b601f5481565b3480156106e057600080fd5b5061030d610f54565b3480156106f557600080fd5b5061035a610704366004612675565b610f63565b34801561071557600080fd5b5061035a610724366004612675565b610f9a565b34801561073557600080fd5b5061039b6107d081565b34801561074b57600080fd5b5061039b6105dc81565b34801561076157600080fd5b506102f661077036600461258c565b610fb1565b34801561078157600080fd5b506102f66107903660046126a1565b610ffc565b3480156107a157600080fd5b506102f66107b036600461258c565b61107e565b3480156107c157600080fd5b506102f66107d03660046125c6565b6110cc565b3480156107e157600080fd5b5061039b6107f03660046125c6565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561082757600080fd5b5061039b60285481565b34801561083d57600080fd5b506102f661084c366004612713565b611124565b34801561085d57600080fd5b506102f661086c36600461258c565b6111ca565b34801561087d57600080fd5b506102f661088c366004612640565b611550565b34801561089d57600080fd5b506102f66108ac36600461276d565b6115a5565b6000546001600160a01b031633146108e45760405162461bcd60e51b81526004016108db906127f4565b60405180910390fd5b6022805492151560ff199384161790556029805491151591909216179055565b6060600980546109139061295c565b80601f016020809104026020016040519081016040528092919081815260200182805461093f9061295c565b801561098c5780601f106109615761010080835404028352916020019161098c565b820191906000526020600020905b81548152906001019060200180831161096f57829003601f168201915b5050505050905090565b60006109a333848461160e565b50600192915050565b6000546001600160a01b031633146109d65760405162461bcd60e51b81526004016108db906127f4565b80826109e285876128ec565b6109ec91906128ec565b6109f691906128ec565b6103e814610a3c5760405162461bcd60e51b815260206004820152601360248201527204d7573742061646420757020746f203130303606c1b60448201526064016108db565b600e93909355600f91909155601055601155565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610ab5576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610aaf908490612945565b90915550505b610ac0848484611707565b949350505050565b6000546001600160a01b03163314610af25760405162461bcd60e51b81526004016108db906127f4565b60008183601454610b039190612926565b610b0d9190612904565b601f55505050565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916109a3918590610b4c9086906128ec565b61160e565b6000546001600160a01b03163314610b7b5760405162461bcd60e51b81526004016108db906127f4565b60008183601454610b8c9190612926565b610b969190612904565b601c55505050565b6000546001600160a01b03163314610bc85760405162461bcd60e51b81526004016108db906127f4565b6001600160a01b038116610bee5760405162461bcd60e51b81526004016108db9061281e565b6001600160a01b03811661dead1415610c195760405162461bcd60e51b81526004016108db9061281e565b60008054610c32916001600160a01b0390911690610d3a565b610c3d816001610d3a565b6000546018546001600160a01b0390811691161415610c7257601880546001600160a01b0319166001600160a01b0383161790555b600080546001600160a01b03908116825260016020818152604080852054600483528186208786168752835281862055845490931684525290205415610cdb57600080546001600160a01b03168082526001602052604090912054610cd991908390611707565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000610d3482600019610996565b92915050565b6000546001600160a01b03163314610d645760405162461bcd60e51b81526004016108db906127f4565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610db95760405162461bcd60e51b81526004016108db906127f4565b60008054610dd2916001600160a01b0390911690610d3a565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314610e385760405162461bcd60e51b81526004016108db906127f4565b80610e5f57506001600160a01b03166000908152600260205260409020805460ff19169055565b60035415610ebb5762093a8060035442610e799190612945565b11610ebb5760405162461bcd60e51b815260206004820152601260248201527127b732903bb2b2b59031b7b7b63237bbb71760711b60448201526064016108db565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555b5050565b6000546001600160a01b03163314610f115760405162461bcd60e51b81526004016108db906127f4565b60235415610f4a5760405162461bcd60e51b815260206004820152600660248201526522b93937b91760d11b60448201526064016108db565b6023556002602755565b6060600a80546109139061295c565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916109a3918590610b4c908690612945565b6000610fa7338484611707565b5060019392505050565b6000546001600160a01b03163314610fdb5760405162461bcd60e51b81526004016108db906127f4565b6001600160a01b03166000908152602b60205260409020805460ff19169055565b6000546001600160a01b031633146110265760405162461bcd60e51b81526004016108db906127f4565b60198054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061107390831515815260200190565b60405180910390a150565b6000546001600160a01b031633146110a85760405162461bcd60e51b81526004016108db906127f4565b6001600160a01b03166000908152602b60205260409020805460ff19166001179055565b6000546001600160a01b031633146110f65760405162461bcd60e51b81526004016108db906127f4565b601880546001600160a01b039384166001600160a01b03199182161790915560198054929093169116179055565b6000546001600160a01b0316331461114e5760405162461bcd60e51b81526004016108db906127f4565b6103e8831115801561116257506105dc8211155b801561117057506107d08111155b6111bc5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e00000000000000000060448201526064016108db565b600b92909255600c55600d55565b6000546001600160a01b031633146111f45760405162461bcd60e51b81526004016108db906127f4565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561123457600080fd5b505afa158015611248573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126c91906125a9565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156112b457600080fd5b505afa1580156112c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ec91906125a9565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561133257600080fd5b505afa158015611346573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136a91906125a9565b90506001600160a01b03811661151057816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156113b357600080fd5b505afa1580156113c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113eb91906125a9565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561143357600080fd5b505afa158015611447573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146b91906125a9565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156114b357600080fd5b505af11580156114c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114eb91906125a9565b601780546001600160a01b0319166001600160a01b039290921691909117905561152c565b601780546001600160a01b0319166001600160a01b0383161790555b50601680546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b0316331461157a5760405162461bcd60e51b81526004016108db906127f4565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146115cf5760405162461bcd60e51b81526004016108db906127f4565b82846014546115de9190612926565b6115e89190612904565b60205560145481906115fb908490612926565b6116059190612904565b60215550505050565b6001600160a01b03831661165a5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016108db565b6001600160a01b0382166116a65760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016108db565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166117565760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b60448201526064016108db565b6001600160a01b0383166117a35760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b60448201526064016108db565b600082116117de5760405162461bcd60e51b815260206004820152600860248201526726bab9ba101f181760c11b60448201526064016108db565b6117e88484611b1b565b15611a3e5760295460ff161561189f576001600160a01b03841660009081526002602052604090205460ff161561185e576001600160a01b0383166000908152602a602052604090205443141561183e57600080fd5b6001600160a01b0383166000908152602a6020526040902043905561189f565b6001600160a01b0384166000908152602a602052604090205443141561188357600080fd5b6001600160a01b0384166000908152602a602052604090204390555b6001600160a01b0384166000908152602b602052604090205460ff16806118de57506001600160a01b0383166000908152602b602052604090205460ff165b611a3e576001600160a01b03841660009081526002602052604090205460ff168061192157506001600160a01b03831660009081526002602052604090205460ff165b1561197857601c548211156119785760405162461bcd60e51b815260206004820152601860248201527f4578636565647320746865206d61785478416d6f756e742e000000000000000060448201526064016108db565b6001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d148015906119be57506001600160a01b03831660009081526002602052604090205460ff16155b15611a3e57601f54826119e6856001600160a01b031660009081526001602052604090205490565b6119f091906128ec565b1115611a3e5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016108db565b6001600160a01b03841660009081526005602052604090205460019060ff1680611a8057506001600160a01b03841660009081526005602052604090205460ff165b15611a89575060005b6001600160a01b03841660009081526002602052604090205460ff1615611b0657601954600160a01b900460ff16158015611acd5750601954600160a81b900460ff165b15611b06573060009081526001602052604081205490506020548110611b04576021548110611afb57506021545b611b0481611bd9565b505b611b1285858584611d99565b95945050505050565b600080546001600160a01b03848116911614801590611b4857506000546001600160a01b03838116911614155b8015611b6d57506001600160a01b03821660009081526007602052604090205460ff16155b8015611b9257506001600160a01b03831660009081526007602052604090205460ff16155b8015611ba957506001600160a01b03821661dead14155b8015611bbd57506001600160a01b03821615155b8015611bd257506001600160a01b0383163014155b9392505050565b6019805460ff60a01b1916600160a01b179055601054600f54600e54611bff91906128ec565b611c0991906128ec565b611c1257611d89565b60006002601254600e5484611c279190612926565b611c319190612904565b611c3b9190612904565b90506000611c498284612945565b9050611c5481612058565b600047905060006002601254600e5484611c6e9190612926565b611c789190612904565b611c829190612904565b90508315611cd657611c9484826121a8565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b6000611ce28587612945565b1115611d8457601854601354600f546001600160a01b03909216916108fc9190611d0c8587612945565b611d169190612926565b611d209190612904565b6040518115909202916000818181858888f19350505050158015611d48573d6000803e3d6000fd5b506019546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611d82573d6000803e3d6000fd5b505b505050505b506019805460ff60a01b19169055565b60225460009060ff1615611f85576001600160a01b03851660009081526006602052604090205460ff1680611de657506001600160a01b03841660009081526006602052604090205460ff165b15611e265760405162461bcd60e51b815260206004820152601060248201526f29b734b832b9103932b532b1ba32b21760811b60448201526064016108db565b602254610100900460ff16611ebc57611e3f8585612251565b602254610100900460ff16158015611e5c5750611e5c8585611b1b565b15611eb75760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b60648201526084016108db565b611f85565b6000602454118015611ee657506001600160a01b03851660009081526002602052604090205460ff165b8015611ef75750611ef78585611b1b565b15611f8557602754602454611f0c9043612945565b1015611f85576001600160a01b0384166000908152600660205260408120805460ff191660011790556028805491611f4383612997565b90915550506040516001600160a01b03851681527f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e59060200160405180910390a15b6001600160a01b03851660009081526001602052604081208054859290611fad908490612945565b909155506000905082611fc05783611fcb565b611fcb86868661238e565b6001600160a01b038616600090815260016020526040812080549293508392909190611ff89084906128ec565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161204491815260200190565b60405180910390a350600195945050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061208d5761208d6129c8565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156120e157600080fd5b505afa1580156120f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211991906125a9565b8160018151811061212c5761212c6129c8565b6001600160a01b03928316602091820292909201015260165460405163791ac94760e01b815291169063791ac9479061217290859060009086903090429060040161287b565b600060405180830381600087803b15801561218c57600080fd5b505af11580156121a0573d6000803e3d6000fd5b505050505050565b60165460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b15801561221157600080fd5b505af1158015612225573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061224a919061273f565b5050505050565b602254610100900460ff16156122b55760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016108db565b6122bf8282611b1b565b1580156122d957506017546001600160a01b038281169116145b15610ee3576027546002146122fc576122f4436113886128ec565b602455612301565b436024555b6001600160a01b03821660009081526007602052604090819020805460ff191660019081179091556022805461ff001916610100179055426025556019805460ff60a81b1916600160a81b17905590517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599161238291901515815260200190565b60405180910390a15050565b60175460009081906001600160a01b03868116911614156123b25750600b546123d6565b6017546001600160a01b03858116911614156123d15750600c546123d6565b50600d545b6123e08585611b1b565b156124035760235415806123f9575060235462010f2c14155b1561240357600080fd5b600061271060125460115461241891906128ec565b6011546124258588612926565b61242f9190612926565b6124399190612904565b6124439190612904565b90506000816127106124558588612926565b61245f9190612904565b6124699190612945565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d805492935084929091906124ac9084906128ec565b909155505030600090815260016020526040812080548392906124d09084906128ec565b909155505060405182815261dead906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a360405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3816125628287612945565b61256c9190612945565b979650505050505050565b8035801515811461258757600080fd5b919050565b60006020828403121561259e57600080fd5b8135611bd2816129de565b6000602082840312156125bb57600080fd5b8151611bd2816129de565b600080604083850312156125d957600080fd5b82356125e4816129de565b915060208301356125f4816129de565b809150509250929050565b60008060006060848603121561261457600080fd5b833561261f816129de565b9250602084013561262f816129de565b929592945050506040919091013590565b6000806040838503121561265357600080fd5b823561265e816129de565b915061266c60208401612577565b90509250929050565b6000806040838503121561268857600080fd5b8235612693816129de565b946020939093013593505050565b6000602082840312156126b357600080fd5b611bd282612577565b600080604083850312156126cf57600080fd5b61265e83612577565b6000602082840312156126ea57600080fd5b5035919050565b6000806040838503121561270457600080fd5b50508035926020909101359150565b60008060006060848603121561272857600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561275457600080fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561278357600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b818110156127cc578581018301518582016040015282016127b0565b818111156127de576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526010908201526f21b0b63632b910109e9037bbb732b91760811b604082015260600190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156128cb5784516001600160a01b0316835293830193918301916001016128a6565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156128ff576128ff6129b2565b500190565b60008261292157634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612940576129406129b2565b500290565b600082821015612957576129576129b2565b500390565b600181811c9082168061297057607f821691505b6020821081141561299157634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156129ab576129ab6129b2565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146129f357600080fd5b5056fea2646970667358221220bcc0d688f271c85eeba698dde716b4752804d6db6d54cc0795b25e578f7ce9d364736f6c63430008070033

Deployed Bytecode

0x6080604052600436106102975760003560e01c8063715018a61161015a578063b1b08f71116100c1578063dd62ed3e1161007a578063dd62ed3e146107d5578063e79d41601461081b578063e9dae5ed14610831578063eafb5a3c14610851578063eec2744e14610871578063fb78680d1461089157600080fd5b8063b1b08f7114610729578063b3d514fb1461073f578063bc1323e814610755578063c49b9a8014610775578063ce8b79c914610795578063d3f6a157146107b557600080fd5b80638c7321ad116101135780638c7321ad1461068e5780638da5cb5b146106375780638f9a55c0146106be57806395d89b41146106d4578063a457c2d7146106e9578063a9059cbb1461070957600080fd5b8063715018a6146105cc5780637d1db4a5146105e157806380c581d1146105f757806381c6f11b14610617578063893d20e81461063757806389fd9bc11461065557600080fd5b80633df9a8d2116101fe5780634fbee193116101b75780634fbee193146104e857806350a8e01614610521578063571ac8b014610540578063590f897e14610560578063590ffdce1461057657806370a082311461059657600080fd5b80633df9a8d21461043b5780633f3cf56c1461045157806340b9a54b14610471578063452ed4f1146104875780634a74bb02146104a75780634fb2e45d146104c857600080fd5b806318160ddd1161025057806318160ddd1461038a57806323b872dd146103a957806326003957146103c95780632b28fc7a146103e9578063313ce567146103ff578063395093511461041b57600080fd5b806303fd2a45146102a3578063044df726146102d657806306fdde03146102f85780630758d9241461031a578063095ea7b31461033a5780631793fe4e1461036a57600080fd5b3661029e57005b600080fd5b3480156102af57600080fd5b506102b961dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102e257600080fd5b506102f66102f13660046126bc565b6108b1565b005b34801561030457600080fd5b5061030d610904565b6040516102cd919061279f565b34801561032657600080fd5b506016546102b9906001600160a01b031681565b34801561034657600080fd5b5061035a610355366004612675565b610996565b60405190151581526020016102cd565b34801561037657600080fd5b506102f661038536600461276d565b6109ac565b34801561039657600080fd5b506014545b6040519081526020016102cd565b3480156103b557600080fd5b5061035a6103c43660046125ff565b610a50565b3480156103d557600080fd5b506102f66103e43660046126f1565b610ac8565b3480156103f557600080fd5b5061039b6103e881565b34801561040b57600080fd5b50604051600981526020016102cd565b34801561042757600080fd5b5061035a610436366004612675565b610b15565b34801561044757600080fd5b5061039b600d5481565b34801561045d57600080fd5b506102f661046c3660046126f1565b610b51565b34801561047d57600080fd5b5061039b600b5481565b34801561049357600080fd5b506017546102b9906001600160a01b031681565b3480156104b357600080fd5b5060195461035a90600160a81b900460ff1681565b3480156104d457600080fd5b506102f66104e336600461258c565b610b9e565b3480156104f457600080fd5b5061035a61050336600461258c565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561052d57600080fd5b5060225461035a90610100900460ff1681565b34801561054c57600080fd5b5061035a61055b36600461258c565b610d26565b34801561056c57600080fd5b5061039b600c5481565b34801561058257600080fd5b506102f6610591366004612640565b610d3a565b3480156105a257600080fd5b5061039b6105b136600461258c565b6001600160a01b031660009081526001602052604090205490565b3480156105d857600080fd5b506102f6610d8f565b3480156105ed57600080fd5b5061039b601c5481565b34801561060357600080fd5b506102f6610612366004612640565b610e0e565b34801561062357600080fd5b506102f66106323660046126d8565b610ee7565b34801561064357600080fd5b506000546001600160a01b03166102b9565b34801561066157600080fd5b5061035a61067036600461258c565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561069a57600080fd5b5061035a6106a936600461258c565b602b6020526000908152604090205460ff1681565b3480156106ca57600080fd5b5061039b601f5481565b3480156106e057600080fd5b5061030d610f54565b3480156106f557600080fd5b5061035a610704366004612675565b610f63565b34801561071557600080fd5b5061035a610724366004612675565b610f9a565b34801561073557600080fd5b5061039b6107d081565b34801561074b57600080fd5b5061039b6105dc81565b34801561076157600080fd5b506102f661077036600461258c565b610fb1565b34801561078157600080fd5b506102f66107903660046126a1565b610ffc565b3480156107a157600080fd5b506102f66107b036600461258c565b61107e565b3480156107c157600080fd5b506102f66107d03660046125c6565b6110cc565b3480156107e157600080fd5b5061039b6107f03660046125c6565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561082757600080fd5b5061039b60285481565b34801561083d57600080fd5b506102f661084c366004612713565b611124565b34801561085d57600080fd5b506102f661086c36600461258c565b6111ca565b34801561087d57600080fd5b506102f661088c366004612640565b611550565b34801561089d57600080fd5b506102f66108ac36600461276d565b6115a5565b6000546001600160a01b031633146108e45760405162461bcd60e51b81526004016108db906127f4565b60405180910390fd5b6022805492151560ff199384161790556029805491151591909216179055565b6060600980546109139061295c565b80601f016020809104026020016040519081016040528092919081815260200182805461093f9061295c565b801561098c5780601f106109615761010080835404028352916020019161098c565b820191906000526020600020905b81548152906001019060200180831161096f57829003601f168201915b5050505050905090565b60006109a333848461160e565b50600192915050565b6000546001600160a01b031633146109d65760405162461bcd60e51b81526004016108db906127f4565b80826109e285876128ec565b6109ec91906128ec565b6109f691906128ec565b6103e814610a3c5760405162461bcd60e51b815260206004820152601360248201527204d7573742061646420757020746f203130303606c1b60448201526064016108db565b600e93909355600f91909155601055601155565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610ab5576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610aaf908490612945565b90915550505b610ac0848484611707565b949350505050565b6000546001600160a01b03163314610af25760405162461bcd60e51b81526004016108db906127f4565b60008183601454610b039190612926565b610b0d9190612904565b601f55505050565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916109a3918590610b4c9086906128ec565b61160e565b6000546001600160a01b03163314610b7b5760405162461bcd60e51b81526004016108db906127f4565b60008183601454610b8c9190612926565b610b969190612904565b601c55505050565b6000546001600160a01b03163314610bc85760405162461bcd60e51b81526004016108db906127f4565b6001600160a01b038116610bee5760405162461bcd60e51b81526004016108db9061281e565b6001600160a01b03811661dead1415610c195760405162461bcd60e51b81526004016108db9061281e565b60008054610c32916001600160a01b0390911690610d3a565b610c3d816001610d3a565b6000546018546001600160a01b0390811691161415610c7257601880546001600160a01b0319166001600160a01b0383161790555b600080546001600160a01b03908116825260016020818152604080852054600483528186208786168752835281862055845490931684525290205415610cdb57600080546001600160a01b03168082526001602052604090912054610cd991908390611707565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000610d3482600019610996565b92915050565b6000546001600160a01b03163314610d645760405162461bcd60e51b81526004016108db906127f4565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610db95760405162461bcd60e51b81526004016108db906127f4565b60008054610dd2916001600160a01b0390911690610d3a565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314610e385760405162461bcd60e51b81526004016108db906127f4565b80610e5f57506001600160a01b03166000908152600260205260409020805460ff19169055565b60035415610ebb5762093a8060035442610e799190612945565b11610ebb5760405162461bcd60e51b815260206004820152601260248201527127b732903bb2b2b59031b7b7b63237bbb71760711b60448201526064016108db565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555b5050565b6000546001600160a01b03163314610f115760405162461bcd60e51b81526004016108db906127f4565b60235415610f4a5760405162461bcd60e51b815260206004820152600660248201526522b93937b91760d11b60448201526064016108db565b6023556002602755565b6060600a80546109139061295c565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916109a3918590610b4c908690612945565b6000610fa7338484611707565b5060019392505050565b6000546001600160a01b03163314610fdb5760405162461bcd60e51b81526004016108db906127f4565b6001600160a01b03166000908152602b60205260409020805460ff19169055565b6000546001600160a01b031633146110265760405162461bcd60e51b81526004016108db906127f4565b60198054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061107390831515815260200190565b60405180910390a150565b6000546001600160a01b031633146110a85760405162461bcd60e51b81526004016108db906127f4565b6001600160a01b03166000908152602b60205260409020805460ff19166001179055565b6000546001600160a01b031633146110f65760405162461bcd60e51b81526004016108db906127f4565b601880546001600160a01b039384166001600160a01b03199182161790915560198054929093169116179055565b6000546001600160a01b0316331461114e5760405162461bcd60e51b81526004016108db906127f4565b6103e8831115801561116257506105dc8211155b801561117057506107d08111155b6111bc5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e00000000000000000060448201526064016108db565b600b92909255600c55600d55565b6000546001600160a01b031633146111f45760405162461bcd60e51b81526004016108db906127f4565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561123457600080fd5b505afa158015611248573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126c91906125a9565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156112b457600080fd5b505afa1580156112c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ec91906125a9565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561133257600080fd5b505afa158015611346573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136a91906125a9565b90506001600160a01b03811661151057816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156113b357600080fd5b505afa1580156113c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113eb91906125a9565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561143357600080fd5b505afa158015611447573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146b91906125a9565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156114b357600080fd5b505af11580156114c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114eb91906125a9565b601780546001600160a01b0319166001600160a01b039290921691909117905561152c565b601780546001600160a01b0319166001600160a01b0383161790555b50601680546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b0316331461157a5760405162461bcd60e51b81526004016108db906127f4565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146115cf5760405162461bcd60e51b81526004016108db906127f4565b82846014546115de9190612926565b6115e89190612904565b60205560145481906115fb908490612926565b6116059190612904565b60215550505050565b6001600160a01b03831661165a5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016108db565b6001600160a01b0382166116a65760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016108db565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166117565760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b60448201526064016108db565b6001600160a01b0383166117a35760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b60448201526064016108db565b600082116117de5760405162461bcd60e51b815260206004820152600860248201526726bab9ba101f181760c11b60448201526064016108db565b6117e88484611b1b565b15611a3e5760295460ff161561189f576001600160a01b03841660009081526002602052604090205460ff161561185e576001600160a01b0383166000908152602a602052604090205443141561183e57600080fd5b6001600160a01b0383166000908152602a6020526040902043905561189f565b6001600160a01b0384166000908152602a602052604090205443141561188357600080fd5b6001600160a01b0384166000908152602a602052604090204390555b6001600160a01b0384166000908152602b602052604090205460ff16806118de57506001600160a01b0383166000908152602b602052604090205460ff165b611a3e576001600160a01b03841660009081526002602052604090205460ff168061192157506001600160a01b03831660009081526002602052604090205460ff165b1561197857601c548211156119785760405162461bcd60e51b815260206004820152601860248201527f4578636565647320746865206d61785478416d6f756e742e000000000000000060448201526064016108db565b6001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d148015906119be57506001600160a01b03831660009081526002602052604090205460ff16155b15611a3e57601f54826119e6856001600160a01b031660009081526001602052604090205490565b6119f091906128ec565b1115611a3e5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016108db565b6001600160a01b03841660009081526005602052604090205460019060ff1680611a8057506001600160a01b03841660009081526005602052604090205460ff165b15611a89575060005b6001600160a01b03841660009081526002602052604090205460ff1615611b0657601954600160a01b900460ff16158015611acd5750601954600160a81b900460ff165b15611b06573060009081526001602052604081205490506020548110611b04576021548110611afb57506021545b611b0481611bd9565b505b611b1285858584611d99565b95945050505050565b600080546001600160a01b03848116911614801590611b4857506000546001600160a01b03838116911614155b8015611b6d57506001600160a01b03821660009081526007602052604090205460ff16155b8015611b9257506001600160a01b03831660009081526007602052604090205460ff16155b8015611ba957506001600160a01b03821661dead14155b8015611bbd57506001600160a01b03821615155b8015611bd257506001600160a01b0383163014155b9392505050565b6019805460ff60a01b1916600160a01b179055601054600f54600e54611bff91906128ec565b611c0991906128ec565b611c1257611d89565b60006002601254600e5484611c279190612926565b611c319190612904565b611c3b9190612904565b90506000611c498284612945565b9050611c5481612058565b600047905060006002601254600e5484611c6e9190612926565b611c789190612904565b611c829190612904565b90508315611cd657611c9484826121a8565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b6000611ce28587612945565b1115611d8457601854601354600f546001600160a01b03909216916108fc9190611d0c8587612945565b611d169190612926565b611d209190612904565b6040518115909202916000818181858888f19350505050158015611d48573d6000803e3d6000fd5b506019546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611d82573d6000803e3d6000fd5b505b505050505b506019805460ff60a01b19169055565b60225460009060ff1615611f85576001600160a01b03851660009081526006602052604090205460ff1680611de657506001600160a01b03841660009081526006602052604090205460ff165b15611e265760405162461bcd60e51b815260206004820152601060248201526f29b734b832b9103932b532b1ba32b21760811b60448201526064016108db565b602254610100900460ff16611ebc57611e3f8585612251565b602254610100900460ff16158015611e5c5750611e5c8585611b1b565b15611eb75760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b60648201526084016108db565b611f85565b6000602454118015611ee657506001600160a01b03851660009081526002602052604090205460ff165b8015611ef75750611ef78585611b1b565b15611f8557602754602454611f0c9043612945565b1015611f85576001600160a01b0384166000908152600660205260408120805460ff191660011790556028805491611f4383612997565b90915550506040516001600160a01b03851681527f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e59060200160405180910390a15b6001600160a01b03851660009081526001602052604081208054859290611fad908490612945565b909155506000905082611fc05783611fcb565b611fcb86868661238e565b6001600160a01b038616600090815260016020526040812080549293508392909190611ff89084906128ec565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161204491815260200190565b60405180910390a350600195945050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061208d5761208d6129c8565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156120e157600080fd5b505afa1580156120f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211991906125a9565b8160018151811061212c5761212c6129c8565b6001600160a01b03928316602091820292909201015260165460405163791ac94760e01b815291169063791ac9479061217290859060009086903090429060040161287b565b600060405180830381600087803b15801561218c57600080fd5b505af11580156121a0573d6000803e3d6000fd5b505050505050565b60165460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b15801561221157600080fd5b505af1158015612225573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061224a919061273f565b5050505050565b602254610100900460ff16156122b55760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016108db565b6122bf8282611b1b565b1580156122d957506017546001600160a01b038281169116145b15610ee3576027546002146122fc576122f4436113886128ec565b602455612301565b436024555b6001600160a01b03821660009081526007602052604090819020805460ff191660019081179091556022805461ff001916610100179055426025556019805460ff60a81b1916600160a81b17905590517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599161238291901515815260200190565b60405180910390a15050565b60175460009081906001600160a01b03868116911614156123b25750600b546123d6565b6017546001600160a01b03858116911614156123d15750600c546123d6565b50600d545b6123e08585611b1b565b156124035760235415806123f9575060235462010f2c14155b1561240357600080fd5b600061271060125460115461241891906128ec565b6011546124258588612926565b61242f9190612926565b6124399190612904565b6124439190612904565b90506000816127106124558588612926565b61245f9190612904565b6124699190612945565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d805492935084929091906124ac9084906128ec565b909155505030600090815260016020526040812080548392906124d09084906128ec565b909155505060405182815261dead906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a360405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3816125628287612945565b61256c9190612945565b979650505050505050565b8035801515811461258757600080fd5b919050565b60006020828403121561259e57600080fd5b8135611bd2816129de565b6000602082840312156125bb57600080fd5b8151611bd2816129de565b600080604083850312156125d957600080fd5b82356125e4816129de565b915060208301356125f4816129de565b809150509250929050565b60008060006060848603121561261457600080fd5b833561261f816129de565b9250602084013561262f816129de565b929592945050506040919091013590565b6000806040838503121561265357600080fd5b823561265e816129de565b915061266c60208401612577565b90509250929050565b6000806040838503121561268857600080fd5b8235612693816129de565b946020939093013593505050565b6000602082840312156126b357600080fd5b611bd282612577565b600080604083850312156126cf57600080fd5b61265e83612577565b6000602082840312156126ea57600080fd5b5035919050565b6000806040838503121561270457600080fd5b50508035926020909101359150565b60008060006060848603121561272857600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561275457600080fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561278357600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b818110156127cc578581018301518582016040015282016127b0565b818111156127de576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526010908201526f21b0b63632b910109e9037bbb732b91760811b604082015260600190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156128cb5784516001600160a01b0316835293830193918301916001016128a6565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156128ff576128ff6129b2565b500190565b60008261292157634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612940576129406129b2565b500290565b600082821015612957576129576129b2565b500390565b600181811c9082168061297057607f821691505b6020821081141561299157634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156129ab576129ab6129b2565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146129f357600080fd5b5056fea2646970667358221220bcc0d688f271c85eeba698dde716b4752804d6db6d54cc0795b25e578f7ce9d364736f6c63430008070033

Deployed Bytecode Sourcemap

3720:19504:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5449:73;;;;;;;;;;;;5480:42;5449:73;;;;;-1:-1:-1;;;;;4652:32:1;;;4634:51;;4622:2;4607:18;5449:73:0;;;;;;;;14201:169;;;;;;;;;;-1:-1:-1;14201:169:0;;;;;:::i;:::-;;:::i;:::-;;10519:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;5261:35::-;;;;;;;;;;-1:-1:-1;5261:35:0;;;;-1:-1:-1;;;;;5261:35:0;;;11132:161;;;;;;;;;;-1:-1:-1;11132:161:0;;;;;:::i;:::-;;:::i;:::-;;;5782:14:1;;5775:22;5757:41;;5745:2;5730:18;11132:161:0;5617:187:1;14378:348:0;;;;;;;;;;-1:-1:-1;14378:348:0;;;;;:::i;:::-;;:::i;10254:83::-;;;;;;;;;;-1:-1:-1;10327:7:0;;10254:83;;;11843:25:1;;;11831:2;11816:18;10254:83:0;11697:177:1;11746:306:0;;;;;;;;;;-1:-1:-1;11746:306:0;;;;;:::i;:::-;;:::i;15296:178::-;;;;;;;;;;-1:-1:-1;15296:178:0;;;;;:::i;:::-;;:::i;4493:42::-;;;;;;;;;;;;4531:4;4493:42;;10343:80;;;;;;;;;;-1:-1:-1;10343:80:0;;5152:1;13330:36:1;;13318:2;13303:18;10343:80:0;13188:184:1;12060:215:0;;;;;;;;;;-1:-1:-1;12060:215:0;;;;;:::i;:::-;;:::i;4450:34::-;;;;;;;;;;;;;;;;15115:173;;;;;;;;;;-1:-1:-1;15115:173:0;;;;;:::i;:::-;;:::i;4377:29::-;;;;;;;;;;;;;;;;5303:21;;;;;;;;;;-1:-1:-1;5303:21:0;;;;-1:-1:-1;;;;;5303:21:0;;;5826:41;;;;;;;;;;-1:-1:-1;5826:41:0;;;;-1:-1:-1;;;5826:41:0;;;;;;8937:761;;;;;;;;;;-1:-1:-1;8937:761:0;;;;;:::i;:::-;;:::i;13443:125::-;;;;;;;;;;-1:-1:-1;13443:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;13532:28:0;13508:4;13532:28;;;:19;:28;;;;;;;;;13443:125;6388:36;;;;;;;;;;-1:-1:-1;6388:36:0;;;;;;;;;;;11618:120;;;;;;;;;;-1:-1:-1;11618:120:0;;;;;:::i;:::-;;:::i;4413:30::-;;;;;;;;;;;;;;;;13576:134;;;;;;;;;;-1:-1:-1;13576:134:0;;;;;:::i;:::-;;:::i;10832:117::-;;;;;;;;;;-1:-1:-1;10832:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;10925:16:0;10898:7;10925:16;;;:7;:16;;;;;;;10832:117;9706:195;;;;;;;;;;;;;:::i;5962:69::-;;;;;;;;;;;;;;;;13025:410;;;;;;;;;;-1:-1:-1;13025:410:0;;;;;:::i;:::-;;:::i;13858:186::-;;;;;;;;;;-1:-1:-1;13858:186:0;;;;;:::i;:::-;;:::i;10605:80::-;;;;;;;;;;-1:-1:-1;10657:7:0;8915:6;-1:-1:-1;;;;;8915:6:0;10605:80;;13718:132;;;;;;;;;;-1:-1:-1;13718:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;13811:31:0;13787:4;13811:31;;;:22;:31;;;;;;;;;13718:132;16503:68;;;;;;;;;;-1:-1:-1;16503:68:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6133:79;;;;;;;;;;;;;;;;10429:84;;;;;;;;;;;;;:::i;12283:225::-;;;;;;;;;;-1:-1:-1;12283:225:0;;;;;:::i;:::-;;:::i;10957:167::-;;;;;;;;;;-1:-1:-1;10957:167:0;;;;;:::i;:::-;;:::i;4592:47::-;;;;;;;;;;;;4635:4;4592:47;;4542:43;;;;;;;;;;;;4581:4;4542:43;;16746:166;;;;;;;;;;-1:-1:-1;16746:166:0;;;;;:::i;:::-;;:::i;15993:171::-;;;;;;;;;;-1:-1:-1;15993:171:0;;;;;:::i;:::-;;:::i;16580:158::-;;;;;;;;;;-1:-1:-1;16580:158:0;;;;;:::i;:::-;;:::i;15779:206::-;;;;;;;;;;-1:-1:-1;15779:206:0;;;;;:::i;:::-;;:::i;10691:133::-;;;;;;;;;;-1:-1:-1;10691:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10793:19:0;;;10775:7;10793:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10691:133;6656:32;;;;;;;;;;;;;;;;14734:373;;;;;;;;;;-1:-1:-1;14734:373:0;;;;;:::i;:::-;;:::i;12516:501::-;;;;;;;;;;-1:-1:-1;12516:501:0;;;;;:::i;:::-;;:::i;14052:141::-;;;;;;;;;;-1:-1:-1;14052:141:0;;;;;:::i;:::-;;:::i;15482:289::-;;;;;;;;;;-1:-1:-1;15482:289:0;;;;;:::i;:::-;;:::i;14201:169::-;7350:6;;-1:-1:-1;;;;;7350:6:0;272:10;7350:22;7342:51;;;;-1:-1:-1;;;7342:51:0;;;;;;;:::i;:::-;;;;;;;;;14296:16:::1;:28:::0;;;::::1;;-1:-1:-1::0;;14296:28:0;;::::1;;::::0;;14335:15:::1;:27:::0;;;::::1;;::::0;;;::::1;;::::0;;14201:169::o;10519:80::-;10567:13;10591:5;10584:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10519:80;:::o;11132:161::-;11207:4;11224:39;272:10;11247:7;11256:6;11224:8;:39::i;:::-;-1:-1:-1;11281:4:0;11132:161;;;;:::o;14378:348::-;7350:6;;-1:-1:-1;;;;;7350:6:0;272:10;7350:22;7342:51;;;;-1:-1:-1;;;7342:51:0;;;;;;;:::i;:::-;14540:9;14533:4;14509:21:::1;14521:9:::0;14509;:21:::1;:::i;:::-;:28;;;;:::i;:::-;:40;;;;:::i;:::-;14554:4;14508:50;14498:84;;;::::0;-1:-1:-1;;;14498:84:0;;8354:2:1;14498:84:0::1;::::0;::::1;8336:21:1::0;8393:2;8373:18;;;8366:30;-1:-1:-1;;;8412:18:1;;;8405:49;8471:18;;14498:84:0::1;8152:343:1::0;14498:84:0::1;14593:15;:27:::0;;;;14631:15:::1;:27:::0;;;;14669:9:::1;:16:::0;14696:10:::1;:22:::0;14378:348::o;11746:306::-;-1:-1:-1;;;;;11867:19:0;;11846:4;11867:19;;;:11;:19;;;;;;;;11887:10;11867:31;;;;;;;;-1:-1:-1;;11867:52:0;11863:126;;-1:-1:-1;;;;;11936:19:0;;;;;;:11;:19;;;;;;;;11956:10;11936:31;;;;;;;:41;;11971:6;;11936:19;:41;;11971:6;;11936:41;:::i;:::-;;;;-1:-1:-1;;11863:126:0;12008:36;12018:6;12026:9;12037:6;12008:9;:36::i;:::-;12001:43;11746:306;-1:-1:-1;;;;11746:306:0:o;15296:178::-;7350:6;;-1:-1:-1;;;;;7350:6:0;272:10;7350:22;7342:51;;;;-1:-1:-1;;;7342:51:0;;;;;;;:::i;:::-;15386:13:::1;15424:7;15413;15403;;:17;;;;:::i;:::-;15402:29;;;;:::i;:::-;15442:14;:22:::0;-1:-1:-1;;;15296:178:0:o;12060:215::-;272:10;12148:4;12197:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12197:34:0;;;;;;;;;;12148:4;;12165:80;;12188:7;;12197:47;;12234:10;;12197:47;:::i;:::-;12165:8;:80::i;15115:173::-;7350:6;;-1:-1:-1;;;;;7350:6:0;272:10;7350:22;7342:51;;;;-1:-1:-1;;;7342:51:0;;;;;;;:::i;:::-;15204:13:::1;15242:7;15231;15221;;:17;;;;:::i;:::-;15220:29;;;;:::i;:::-;15260:12;:20:::0;-1:-1:-1;;;15115:173:0:o;8937:761::-;7350:6;;-1:-1:-1;;;;;7350:6:0;272:10;7350:22;7342:51;;;;-1:-1:-1;;;7342:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9018:22:0;::::1;9010:96;;;;-1:-1:-1::0;;;9010:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9125:16:0;::::1;5480:42;9125:16;;9117:90;;;;-1:-1:-1::0;;;9117:90:0::1;;;;;;;:::i;:::-;9238:6;::::0;;9218:34:::1;::::0;-1:-1:-1;;;;;9238:6:0;;::::1;::::0;9218:19:::1;:34::i;:::-;9263:35;9283:8;9293:4;9263:19;:35::i;:::-;9351:6;::::0;9323:16:::1;::::0;-1:-1:-1;;;;;9323:16:0;;::::1;9351:6:::0;::::1;9323:35;9319:90;;;9373:16;:36:::0;;-1:-1:-1;;;;;;9373:36:0::1;-1:-1:-1::0;;;;;9373:36:0;::::1;;::::0;;9319:90:::1;9472:6;::::0;;-1:-1:-1;;;;;9472:6:0;;::::1;10925:16:::0;;:7;:16;;;;;;;;;9430:11:::1;:19:::0;;;;;:29;;::::1;::::0;;;;;;;:49;9503:6;;;;::::1;10925:16:::0;;;;;;9493:21;9490:99:::1;;9541:6;::::0;;-1:-1:-1;;;;;9541:6:0::1;10925:16:::0;;;:7;:16;;;;;;;9531:46:::1;::::0;9541:6;9549:8;;9531:9:::1;:46::i;:::-;;9490:99;9609:6;:17:::0;;-1:-1:-1;;;;;;9609:17:0::1;-1:-1:-1::0;;;;;9609:17:0;::::1;::::0;;::::1;::::0;;9642:38:::1;::::0;9609:17;;;;9642:38:::1;::::0;9609:6;9642:38:::1;8937:761:::0;:::o;11618:120::-;11671:4;11695:35;11703:7;-1:-1:-1;;11695:7:0;:35::i;:::-;11688:42;11618:120;-1:-1:-1;;11618:120:0:o;13576:134::-;7350:6;;-1:-1:-1;;;;;7350:6:0;272:10;7350:22;7342:51;;;;-1:-1:-1;;;7342:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13664:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;13664:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13576:134::o;9706:195::-;7350:6;;-1:-1:-1;;;;;7350:6:0;272:10;7350:22;7342:51;;;;-1:-1:-1;;;7342:51:0;;;;;;;:::i;:::-;9793:6:::1;::::0;;9773:34:::1;::::0;-1:-1:-1;;;;;9793:6:0;;::::1;::::0;9773:19:::1;:34::i;:::-;9835:1;9818:19:::0;;-1:-1:-1;;;;;;9818:19:0::1;::::0;;9853:40:::1;::::0;9835:1;;9853:40:::1;::::0;9835:1;;9853:40:::1;9706:195::o:0;13025:410::-;7350:6;;-1:-1:-1;;;;;7350:6:0;272:10;7350:22;7342:51;;;;-1:-1:-1;;;7342:51:0;;;;;;;:::i;:::-;13106:16;13102:326:::1;;-1:-1:-1::0;;;;;;13139:13:0::1;13155:5;13139:13:::0;;;:7:::1;:13;::::0;;;;:21;;-1:-1:-1;;13139:21:0::1;::::0;;13025:410::o;13102:326::-:1;13197:17;::::0;:22;13193:139:::1;;13286:7;13266:17;;13248:15;:35;;;;:::i;:::-;:45;13240:76;;;::::0;-1:-1:-1;;;13240:76:0;;9051:2:1;13240:76:0::1;::::0;::::1;9033:21:1::0;9090:2;9070:18;;;9063:30;-1:-1:-1;;;9109:18:1;;;9102:48;9167:18;;13240:76:0::1;8849:342:1::0;13240:76:0::1;-1:-1:-1::0;;;;;13346:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;:20;;-1:-1:-1;;13346:20:0::1;13362:4;13346:20;::::0;;13401:15:::1;13381:17;:35:::0;13102:326:::1;13025:410:::0;;:::o;13858:186::-;7350:6;;-1:-1:-1;;;;;7350:6:0;272:10;7350:22;7342:51;;;;-1:-1:-1;;;7342:51:0;;;;;;;:::i;:::-;13940:13:::1;::::0;:18;13931:38:::1;;;::::0;-1:-1:-1;;;13931:38:0;;10427:2:1;13931:38:0::1;::::0;::::1;10409:21:1::0;10466:1;10446:18;;;10439:29;-1:-1:-1;;;10484:18:1;;;10477:36;10530:18;;13931:38:0::1;10225:329:1::0;13931:38:0::1;13980:13;:28:::0;14035:1:::1;14019:13;:17:::0;13858:186::o;10429:84::-;10479:13;10503:7;10496:14;;;;;:::i;12283:225::-;272:10;12376:4;12425:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12425:34:0;;;;;;;;;;12376:4;;12393:85;;12416:7;;12425:52;;12462:15;;12425:52;:::i;10957:167::-;11035:4;11052:42;272:10;11076:9;11087:6;11052:9;:42::i;:::-;-1:-1:-1;11112:4:0;;10957:167;-1:-1:-1;;;10957:167:0:o;16746:166::-;7350:6;;-1:-1:-1;;;;;7350:6:0;272:10;7350:22;7342:51;;;;-1:-1:-1;;;7342:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16844:52:0::1;16899:5;16844:52:::0;;;:35:::1;:52;::::0;;;;:60;;-1:-1:-1;;16844:60:0::1;::::0;;16746:166::o;15993:171::-;7350:6;;-1:-1:-1;;;;;7350:6:0;272:10;7350:22;7342:51;;;;-1:-1:-1;;;7342:51:0;;;;;;;:::i;:::-;16070:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;16070:32:0::1;-1:-1:-1::0;;;;16070:32:0;;::::1;;::::0;;16118:38:::1;::::0;::::1;::::0;::::1;::::0;16094:8;5782:14:1;5775:22;5757:41;;5745:2;5730:18;;5617:187;16118:38:0::1;;;;;;;;15993:171:::0;:::o;16580:158::-;7350:6;;-1:-1:-1;;;;;7350:6:0;272:10;7350:22;7342:51;;;;-1:-1:-1;;;7342:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16671:52:0::1;;::::0;;;:35:::1;:52;::::0;;;;:59;;-1:-1:-1;;16671:59:0::1;16726:4;16671:59;::::0;;16580:158::o;15779:206::-;7350:6;;-1:-1:-1;;;;;7350:6:0;272:10;7350:22;7342:51;;;;-1:-1:-1;;;7342:51:0;;;;;;;:::i;:::-;15890:16:::1;:43:::0;;-1:-1:-1;;;;;15890:43:0;;::::1;-1:-1:-1::0;;;;;;15890:43:0;;::::1;;::::0;;;15944:11:::1;:33:::0;;;;;::::1;::::0;::::1;;::::0;;15779:206::o;14734:373::-;7350:6;;-1:-1:-1;;;;;7350:6:0;272:10;7350:22;7342:51;;;;-1:-1:-1;;;7342:51:0;;;;;;;:::i;:::-;4531:4:::1;14844:6;:21;;:65;;;;;4581:4;14886:7;:23;;14844:65;:117;;;;;4635:4;14930:11;:31;;14844:117;14836:170;;;::::0;-1:-1:-1;;;14836:170:0;;8002:2:1;14836:170:0::1;::::0;::::1;7984:21:1::0;8041:2;8021:18;;;8014:30;8080:25;8060:18;;;8053:53;8123:18;;14836:170:0::1;7800:347:1::0;14836:170:0::1;15017:7;:16:::0;;;;15044:8:::1;:18:::0;15073:12:::1;:26:::0;14734:373::o;12516:501::-;7350:6;;-1:-1:-1;;;;;7350:6:0;272:10;7350:22;7342:51;;;;-1:-1:-1;;;7342:51:0;;;;;;;:::i;:::-;12587:29:::1;12638:9;12587:61;;12659:16;12696:10;-1:-1:-1::0;;;;;12696:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12678:47:0::1;;12734:4;12741:10;-1:-1:-1::0;;;;;12741:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12678:81;::::0;-1:-1:-1;;;;;;12678:81:0::1;::::0;;;;;;-1:-1:-1;;;;;4926:15:1;;;12678:81:0::1;::::0;::::1;4908:34:1::0;4978:15;;4958:18;;;4951:43;4843:18;;12678:81:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12659:100:::0;-1:-1:-1;;;;;;12774:22:0;::::1;12770:207;;12840:10;-1:-1:-1::0;;;;;12840:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12822:50:0::1;;12881:4;12888:10;-1:-1:-1::0;;;;;12888:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12822:84;::::0;-1:-1:-1;;;;;;12822:84:0::1;::::0;;;;;;-1:-1:-1;;;;;4926:15:1;;;12822:84:0::1;::::0;::::1;4908:34:1::0;4978:15;;4958:18;;;4951:43;4843:18;;12822:84:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12813:6;:93:::0;;-1:-1:-1;;;;;;12813:93:0::1;-1:-1:-1::0;;;;;12813:93:0;;;::::1;::::0;;;::::1;::::0;;12770:207:::1;;;12948:6;:17:::0;;-1:-1:-1;;;;;;12948:17:0::1;-1:-1:-1::0;;;;;12948:17:0;::::1;;::::0;;12770:207:::1;-1:-1:-1::0;12987:9:0::1;:22:::0;;-1:-1:-1;;;;;;12987:22:0::1;-1:-1:-1::0;;;;;12987:22:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;12516:501:0:o;14052:141::-;7350:6;;-1:-1:-1;;;;;7350:6:0;272:10;7350:22;7342:51;;;;-1:-1:-1;;;7342:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14144:31:0;;;::::1;;::::0;;;:22:::1;:31;::::0;;;;:41;;-1:-1:-1;;14144:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14052:141::o;15482:289::-;7350:6;;-1:-1:-1;;;;;7350:6:0;272:10;7350:22;7342:51;;;;-1:-1:-1;;;7342:51:0;;;;;;;:::i;:::-;15682:16:::1;15662;15652:7;;:26;;;;:::i;:::-;15651:47;;;;:::i;:::-;15635:13;:63:::0;15723:7:::1;::::0;15750:13;;15723:23:::1;::::0;15733:13;;15723:23:::1;:::i;:::-;15722:41;;;;:::i;:::-;15709:10;:54:::0;-1:-1:-1;;;;15482:289:0:o;11301:309::-;-1:-1:-1;;;;;11395:20:0;;11387:52;;;;-1:-1:-1;;;11387:52:0;;9734:2:1;11387:52:0;;;9716:21:1;9773:2;9753:18;;;9746:30;-1:-1:-1;;;9792:18:1;;;9785:49;9851:18;;11387:52:0;9532:343:1;11387:52:0;-1:-1:-1;;;;;11458:21:0;;11450:53;;;;-1:-1:-1;;;11450:53:0;;9734:2:1;11450:53:0;;;9716:21:1;9773:2;9753:18;;;9746:30;-1:-1:-1;;;9792:18:1;;;9785:49;9851:18;;11450:53:0;9532:343:1;11450:53:0;-1:-1:-1;;;;;11516:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;11569:33;;11843:25:1;;;11569:33:0;;11816:18:1;11569:33:0;;;;;;;11301:309;;;:::o;16922:1797::-;17001:4;-1:-1:-1;;;;;17026:18:0;;17018:51;;;;-1:-1:-1;;;17018:51:0;;8702:2:1;17018:51:0;;;8684:21:1;8741:2;8721:18;;;8714:30;-1:-1:-1;;;8760:18:1;;;8753:50;8820:18;;17018:51:0;8500:344:1;17018:51:0;-1:-1:-1;;;;;17088:16:0;;17080:49;;;;-1:-1:-1;;;17080:49:0;;8702:2:1;17080:49:0;;;8684:21:1;8741:2;8721:18;;;8714:30;-1:-1:-1;;;8760:18:1;;;8753:50;8820:18;;17080:49:0;8500:344:1;17080:49:0;17157:1;17148:6;:10;17140:31;;;;-1:-1:-1;;;17140:31:0;;9398:2:1;17140:31:0;;;9380:21:1;9437:1;9417:18;;;9410:29;-1:-1:-1;;;9455:18:1;;;9448:38;9503:18;;17140:31:0;9196:331:1;17140:31:0;17185:20;17196:4;17202:2;17185:10;:20::i;:::-;17182:858;;;17226:15;;;;17222:347;;;-1:-1:-1;;;;;17266:13:0;;;;;;:7;:13;;;;;;;;17262:292;;;-1:-1:-1;;;;;17311:13:0;;;;;;:9;:13;;;;;;17328:12;17311:29;;17303:38;;;;;;-1:-1:-1;;;;;17364:13:0;;;;;;:9;:13;;;;;17380:12;17364:28;;17262:292;;;-1:-1:-1;;;;;17449:15:0;;;;;;:9;:15;;;;;;17468:12;17449:31;;17441:40;;;;;;-1:-1:-1;;;;;17504:15:0;;;;;;:9;:15;;;;;17522:12;17504:30;;17262:292;-1:-1:-1;;;;;17590:41:0;;;;;;:35;:41;;;;;;;;;:84;;-1:-1:-1;;;;;;17635:39:0;;;;;;:35;:39;;;;;;;;17590:84;17585:440;;-1:-1:-1;;;;;17698:13:0;;;;;;:7;:13;;;;;;;;;:28;;-1:-1:-1;;;;;;17715:11:0;;;;;;:7;:11;;;;;;;;17698:28;17695:134;;;17768:12;;17758:6;:22;;17750:59;;;;-1:-1:-1;;;17750:59:0;;11116:2:1;17750:59:0;;;11098:21:1;11155:2;11135:18;;;11128:30;11194:26;11174:18;;;11167:54;11238:18;;17750:59:0;10914:348:1;17750:59:0;-1:-1:-1;;;;;17850:20:0;;5394:42;17850:20;;;;:36;;-1:-1:-1;;;;;;17875:11:0;;;;;;:7;:11;;;;;;;;17874:12;17850:36;17847:163;;;17945:14;;17935:6;17919:13;17929:2;-1:-1:-1;;;;;10925:16:0;10898:7;10925:16;;;:7;:16;;;;;;;10832:117;17919:13;:22;;;;:::i;:::-;:40;;17911:79;;;;-1:-1:-1;;;17911:79:0;;10761:2:1;17911:79:0;;;10743:21:1;10800:2;10780:18;;;10773:30;10839:28;10819:18;;;10812:56;10885:18;;17911:79:0;10559:350:1;17911:79:0;-1:-1:-1;;;;;18085:25:0;;18052:12;18085:25;;;:19;:25;;;;;;18067:4;;18085:25;;;:52;;-1:-1:-1;;;;;;18114:23:0;;;;;;:19;:23;;;;;;;;18085:52;18082:98;;;-1:-1:-1;18163:5:0;18082:98;-1:-1:-1;;;;;18196:11:0;;;;;;:7;:11;;;;;;;;18192:457;;;18229:16;;-1:-1:-1;;;18229:16:0;;;;18228:17;:59;;;;-1:-1:-1;18266:21:0;;-1:-1:-1;;;18266:21:0;;;;18228:59;18224:408;;;18371:4;18322:28;10925:16;;;:7;:16;;;;;;18322:55;;18424:13;;18400:20;:37;18396:221;;18489:10;;18465:20;:34;18462:77;;-1:-1:-1;18526:10:0;;18462:77;18561:36;18576:20;18561:14;:36::i;:::-;18303:329;18224:408;18667:44;18685:4;18691:2;18695:6;18703:7;18667:17;:44::i;:::-;18660:51;16922:1797;-1:-1:-1;;;;;16922:1797:0:o;16172:323::-;16240:4;8915:6;;-1:-1:-1;;;;;16264:15:0;;;8915:6;;16264:15;;;;:45;;-1:-1:-1;8888:7:0;8915:6;-1:-1:-1;;;;;16296:13:0;;;8915:6;;16296:13;;16264:45;:84;;;;-1:-1:-1;;;;;;16327:21:0;;;;;;:17;:21;;;;;;;;16326:22;16264:84;:125;;;;-1:-1:-1;;;;;;16366:23:0;;;;;;:17;:23;;;;;;;;16365:24;16264:125;:152;;;;-1:-1:-1;;;;;;16406:10:0;;5480:42;16406:10;;16264:152;:185;;;;-1:-1:-1;;;;;;16433:16:0;;;;16264:185;:223;;;;-1:-1:-1;;;;;;16466:21:0;;16482:4;16466:21;;16264:223;16257:230;16172:323;-1:-1:-1;;;16172:323:0:o;18727:951::-;7224:16;:23;;-1:-1:-1;;;;7224:23:0;-1:-1:-1;;;7224:23:0;;;18852:9:::1;::::0;18834:15:::1;::::0;18816::::1;::::0;:33:::1;::::0;18834:15;18816:33:::1;:::i;:::-;:45;;;;:::i;:::-;18812:76;;18881:7;;18812:76;18898:17;18988:1;18962:22;;18943:15;;18920:20;:38;;;;:::i;:::-;18919:65;;;;:::i;:::-;18918:71;;;;:::i;:::-;18898:91:::0;-1:-1:-1;19002:20:0::1;19025:32;18898:91:::0;19025:20;:32:::1;:::i;:::-;19002:55;;19068:30;19085:12;19068:16;:30::i;:::-;19111:22;19136:21;19111:46;;19168:24;19259:1;19233:22;;19214:15;;19197:14;:32;;;;:::i;:::-;19196:59;;;;:::i;:::-;19195:65;;;;:::i;:::-;19168:92:::0;-1:-1:-1;19277:13:0;;19273:161:::1;;19307:41;19320:9;19331:16;19307:12;:41::i;:::-;19368:54;::::0;;13066:25:1;;;13122:2;13107:18;;13100:34;;;13150:18;;;13143:34;;;19368:54:0::1;::::0;13054:2:1;13039:18;19368:54:0::1;;;;;;;19273:161;19483:1;19448:32;19471:9:::0;19448:20;:32:::1;:::i;:::-;:36;19444:227;;;19501:16;::::0;19586:13:::1;::::0;19566:15:::1;::::0;-1:-1:-1;;;;;19501:16:0;;::::1;::::0;:100:::1;::::0;19586:13;19529:33:::1;19546:16:::0;19529:14;:33:::1;:::i;:::-;19528:53;;;;:::i;:::-;19527:73;;;;:::i;:::-;19501:100;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;19616:11:0::1;::::0;:43:::1;::::0;-1:-1:-1;;;;;19616:11:0;;::::1;::::0;19637:21:::1;19616:43:::0;::::1;;;::::0;:11:::1;:43:::0;:11;:43;19637:21;19616:11;:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;19444:227;18801:877;;;;7258:1;-1:-1:-1::0;7270:16:0;:24;;-1:-1:-1;;;;7270:24:0;;;18727:951::o;21074:1216::-;21195:16;;21174:4;;21195:16;;21191:858;;;-1:-1:-1;;;;;13811:31:0;;13787:4;13811:31;;;:22;:31;;;;;;;;21231:56;;;-1:-1:-1;;;;;;13811:31:0;;13787:4;13811:31;;;:22;:31;;;;;;;;21262:25;21227:123;;;21308:26;;-1:-1:-1;;;21308:26:0;;10082:2:1;21308:26:0;;;10064:21:1;10121:2;10101:18;;;10094:30;-1:-1:-1;;;10140:18:1;;;10133:46;10196:18;;21308:26:0;9880:340:1;21227:123:0;21371:16;;;;;;;21366:672;;21408:28;21427:4;21433:2;21408:18;:28::i;:::-;21460:16;;;;;;;21459:17;:41;;;;;21480:20;21491:4;21497:2;21480:10;:20::i;:::-;21455:137;;;21525:47;;-1:-1:-1;;;21525:47:0;;7596:2:1;21525:47:0;;;7578:21:1;7635:2;7615:18;;;7608:30;7674:34;7654:18;;;7647:62;-1:-1:-1;;;7725:18:1;;;7718:35;7770:19;;21525:47:0;7394:401:1;21455:137:0;21366:672;;;21651:1;21636:12;;:16;:55;;;;-1:-1:-1;;;;;;21678:13:0;;;;;;:7;:13;;;;;;;;21636:55;:101;;;;;21717:20;21728:4;21734:2;21717:10;:20::i;:::-;21632:391;;;21814:13;;21799:12;;21784:27;;:12;:27;:::i;:::-;:43;21780:224;;;-1:-1:-1;;;;;21856:26:0;;;;;;:22;:26;;;;;:33;;-1:-1:-1;;21856:33:0;21885:4;21856:33;;;21916:13;:16;;;;;;:::i;:::-;;;;-1:-1:-1;;21964:16:0;;-1:-1:-1;;;;;4652:32:1;;4634:51;;21964:16:0;;4622:2:1;4607:18;21964:16:0;;;;;;;21780:224;-1:-1:-1;;;;;22061:13:0;;;;;;:7;:13;;;;;:23;;22078:6;;22061:13;:23;;22078:6;;22061:23;:::i;:::-;;;;-1:-1:-1;22095:22:0;;-1:-1:-1;22121:7:0;22120:48;;22162:6;22120:48;;;22132:27;22142:4;22148:2;22152:6;22132:9;:27::i;:::-;-1:-1:-1;;;;;22179:11:0;;;;;;:7;:11;;;;;:29;;22095:73;;-1:-1:-1;22095:73:0;;22179:11;;;:29;;22095:73;;22179:29;:::i;:::-;;;;;;;;22241:2;-1:-1:-1;;;;;22226:34:0;22235:4;-1:-1:-1;;;;;22226:34:0;;22245:14;22226:34;;;;11843:25:1;;11831:2;11816:18;;11697:177;22226:34:0;;;;;;;;-1:-1:-1;22278:4:0;;21074:1216;-1:-1:-1;;;;;21074:1216:0:o;19686:417::-;19777:16;;;19791:1;19777:16;;;;;;;;19753:21;;19777:16;;;;;;;;;;-1:-1:-1;19777:16:0;19753:40;;19822:4;19804;19809:1;19804:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19804:23:0;;;:7;;;;;;;;;;:23;;;;19848:9;;:16;;;-1:-1:-1;;;19848:16:0;;;;:9;;;;;:14;;:16;;;;;19804:7;;19848:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19838:4;19843:1;19838:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19838:26:0;;;:7;;;;;;;;;:26;19877:9;;:218;;-1:-1:-1;;;19877:218:0;;:9;;;:60;;:218;;19952:11;;19877:9;;20022:4;;20049;;20069:15;;19877:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19742:361;19686:417;:::o;20111:332::-;20192:9;;:243;;-1:-1:-1;;;20192:243:0;;20258:4;20192:243;;;5346:34:1;5396:18;;;5389:34;;;20192:9:0;5439:18:1;;;5432:34;;;5482:18;;;5475:34;5480:42:0;5525:19:1;;;5518:44;20409:15:0;5578:19:1;;;5571:35;-1:-1:-1;;;;;20192:9:0;;;;:25;;20225:9;;5280:19:1;;20192:243:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20111:332;;:::o;20451:615::-;20533:16;;;;;;;20532:17;20524:65;;;;-1:-1:-1;;;20524:65:0;;7192:2:1;20524:65:0;;;7174:21:1;7231:2;7211:18;;;7204:30;7270:34;7250:18;;;7243:62;-1:-1:-1;;;7321:18:1;;;7314:33;7364:19;;20524:65:0;6990:399:1;20524:65:0;20605:20;20616:4;20622:2;20605:10;:20::i;:::-;20604:21;:37;;;;-1:-1:-1;20635:6:0;;-1:-1:-1;;;;;20629:12:0;;;20635:6;;20629:12;20604:37;20600:459;;;20662:13;;20679:1;20662:18;20658:161;;20716:19;:12;20731:4;20716:19;:::i;:::-;20701:12;:34;20658:161;;;20791:12;20776;:27;20658:161;-1:-1:-1;;;;;20835:23:0;;;;;;:17;:23;;;;;;;:30;;-1:-1:-1;;20835:30:0;20861:4;20835:30;;;;;;20880:16;:23;;-1:-1:-1;;20880:23:0;20835:30;20880:23;;;20933:15;20918:12;:30;20965:21;:28;;-1:-1:-1;;;;20965:28:0;-1:-1:-1;;;20965:28:0;;;21013:34;;;;;;5782:14:1;;5775:22;5757:41;;5745:2;5730:18;;5617:187;21013:34:0;;;;;;;;20451:615;;:::o;22298:923::-;22440:6;;22377:7;;;;-1:-1:-1;;;;;22432:14:0;;;22440:6;;22432:14;22428:197;;;-1:-1:-1;22476:7:0;;22428:197;;;22511:6;;-1:-1:-1;;;;;22505:12:0;;;22511:6;;22505:12;22501:124;;;-1:-1:-1;22547:8:0;;22501:124;;;-1:-1:-1;22601:12:0;;22501:124;22641:20;22652:4;22658:2;22641:10;:20::i;:::-;22637:144;;;22681:13;;:18;;:44;;;22703:13;;22720:5;22703:22;;22681:44;22677:93;;;22746:8;;;22677:93;22791:15;5056:5;22860:22;;22847:10;;:35;;;;:::i;:::-;22832:10;;22810:19;22819:10;22810:6;:19;:::i;:::-;:32;;;;:::i;:::-;22809:74;;;;:::i;:::-;:93;;;;:::i;:::-;22791:111;-1:-1:-1;22913:17:0;22791:111;5056:5;22934:19;22943:10;22934:6;:19;:::i;:::-;:38;;;;:::i;:::-;22933:50;;;;:::i;:::-;5480:42;22994:13;;;;:7;:13;;;:24;;22913:70;;-1:-1:-1;23011:7:0;;22994:13;;;:24;;23011:7;;22994:24;:::i;:::-;;;;-1:-1:-1;;23045:4:0;23029:22;;;;:7;:22;;;;;:37;;23056:9;;23029:22;:37;;23056:9;;23029:37;:::i;:::-;;;;-1:-1:-1;;23082:29:0;;11843:25:1;;;5480:42:0;;-1:-1:-1;;;;;23082:29:0;;;;;11831:2:1;11816:18;23082:29:0;;;;;;;23127:40;;11843:25:1;;;23150:4:0;;-1:-1:-1;;;;;23127:40:0;;;;;11831:2:1;11816:18;23127:40:0;;;;;;;23206:7;23185:18;23194:9;23185:6;:18;:::i;:::-;:28;;;;:::i;:::-;23178:35;22298:923;-1:-1:-1;;;;;;;22298:923: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;6043:597::-;6155:4;6184:2;6213;6202:9;6195:21;6245:6;6239:13;6288:6;6283:2;6272:9;6268:18;6261:34;6313:1;6323:140;6337:6;6334:1;6331:13;6323:140;;;6432:14;;;6428:23;;6422:30;6398:17;;;6417:2;6394:26;6387:66;6352:10;;6323:140;;;6481:6;6478:1;6475:13;6472:91;;;6551:1;6546:2;6537:6;6526:9;6522:22;6518:31;6511:42;6472:91;-1:-1:-1;6624:2:1;6603:15;-1:-1:-1;;6599:29:1;6584:45;;;;6631:2;6580:54;;6043:597;-1:-1:-1;;;6043:597:1:o;6645:340::-;6847:2;6829:21;;;6886:2;6866:18;;;6859:30;-1:-1:-1;;;6920:2:1;6905:18;;6898:46;6976:2;6961:18;;6645:340::o;11267:425::-;11469:2;11451:21;;;11508:2;11488:18;;;11481:30;11547:34;11542:2;11527:18;;11520:62;11618:31;11613:2;11598:18;;11591:59;11682:3;11667:19;;11267:425::o;11879:980::-;12141:4;12189:3;12178:9;12174:19;12220:6;12209:9;12202:25;12246:2;12284:6;12279:2;12268:9;12264:18;12257:34;12327:3;12322:2;12311:9;12307:18;12300:31;12351:6;12386;12380:13;12417:6;12409;12402:22;12455:3;12444:9;12440:19;12433:26;;12494:2;12486:6;12482:15;12468:29;;12515:1;12525:195;12539:6;12536:1;12533:13;12525:195;;;12604:13;;-1:-1:-1;;;;;12600:39:1;12588:52;;12695:15;;;;12660:12;;;;12636:1;12554:9;12525:195;;;-1:-1:-1;;;;;;;12776:32:1;;;;12771:2;12756:18;;12749:60;-1:-1:-1;;;12840:3:1;12825:19;12818:35;12737:3;11879:980;-1:-1:-1;;;11879:980:1:o;13377:128::-;13417:3;13448:1;13444:6;13441:1;13438:13;13435:39;;;13454:18;;:::i;:::-;-1:-1:-1;13490:9:1;;13377:128::o;13510:217::-;13550:1;13576;13566:132;;13620:10;13615:3;13611:20;13608:1;13601:31;13655:4;13652:1;13645:15;13683:4;13680:1;13673:15;13566:132;-1:-1:-1;13712:9:1;;13510:217::o;13732:168::-;13772:7;13838:1;13834;13830:6;13826:14;13823:1;13820:21;13815:1;13808:9;13801:17;13797:45;13794:71;;;13845:18;;:::i;:::-;-1:-1:-1;13885:9:1;;13732:168::o;13905:125::-;13945:4;13973:1;13970;13967:8;13964:34;;;13978:18;;:::i;:::-;-1:-1:-1;14015:9:1;;13905:125::o;14035:380::-;14114:1;14110:12;;;;14157;;;14178:61;;14232:4;14224:6;14220:17;14210:27;;14178:61;14285:2;14277:6;14274:14;14254:18;14251:38;14248:161;;;14331:10;14326:3;14322:20;14319:1;14312:31;14366:4;14363:1;14356:15;14394:4;14391:1;14384:15;14248:161;;14035:380;;;:::o;14420:135::-;14459:3;-1:-1:-1;;14480:17:1;;14477:43;;;14500:18;;:::i;:::-;-1:-1:-1;14547:1:1;14536:13;;14420:135::o;14560:127::-;14621:10;14616:3;14612:20;14609:1;14602:31;14652:4;14649:1;14642:15;14676:4;14673:1;14666:15;14692:127;14753:10;14748:3;14744:20;14741:1;14734:31;14784:4;14781:1;14774:15;14808:4;14805:1;14798:15;14956:131;-1:-1:-1;;;;;15031:31:1;;15021:42;;15011:70;;15077:1;15074;15067:12;15011:70;14956:131;:::o

Swarm Source

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