ETH Price: $2,453.33 (+3.70%)

Token

BananaRocket (BananaRocket)
 

Overview

Max Total Supply

1,000,000,000 BananaRocket

Holders

29

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
8,000,000 BananaRocket

Value
$0.00
0x1ccf586a0426ba38f225fa5037ffef35772f0735
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:
BananaRocket

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-11
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

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

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

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

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

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

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

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

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

interface IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

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

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

contract BananaRocket is ERC20, Ownable {

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

    IDexRouter public dexRouter;
    address public lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address operationsAddress;

    uint256 public tradingActiveBlock = 0; // 0 means trading is not active
    mapping (address => bool) public bot;
    uint256 public botsCaught;

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

     // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;

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

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

    uint256 public tokensForOperations;
    uint256 public tokensForLiquidity;
    uint256 public disableLimitAfterBlock;
    /******************/

    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;

   
 
    constructor() ERC20(unicode"BananaRocket", unicode"BananaRocket") {

        address newOwner = msg.sender; // can leave alone if owner is deployer.

        IDexRouter _dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        dexRouter = _dexRouter;

        // create pair
        lpPair = IDexFactory(_dexRouter.factory()).createPair(address(this), _dexRouter.WETH());
        _excludeFromMaxTransaction(address(lpPair), true);
        _setAutomatedMarketMakerPair(address(lpPair), true);

        uint256 totalSupply = 1 * 1e9 * 1e18;

        maxBuyAmount = totalSupply * 2 / 100;
        maxSellAmount = totalSupply * 2 / 100;
        maxWalletAmount = totalSupply * 2 / 100;
        swapTokensAtAmount = totalSupply * 1 / 1000;

        buyOperationsFee = 20;
        buyLiquidityFee = 0;
        buyTotalFees = buyOperationsFee + buyLiquidityFee;

        sellOperationsFee = 25;
        sellLiquidityFee = 0;
        sellTotalFees = sellOperationsFee + sellLiquidityFee;

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

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

        operationsAddress = address(newOwner);

        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}

    // only enable if no plan to airdrop

    function enableTrading() external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        transferDelayEnabled = false;
    }
    function setLimits() external onlyOwner {
        limitsInEffect = true;
        transferDelayEnabled =true;
    }

    function manageBoughtEarly(address wallet, bool flag) external onlyOwner {
        bot[wallet] = flag;
    }

    function massManageBoughtEarly(address[] calldata wallets, bool flag) external onlyOwner {
        for(uint256 i = 0; i < wallets.length; i++){
            bot[wallets[i]] = flag;
        }
    }

    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner {
        transferDelayEnabled = false;
    }
    function setDisableLimitAfterBlock(uint256 _block) external onlyOwner {
        disableLimitAfterBlock = _block;
    }
    function updateMaxBuyAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 2 / 1000)/1e18, "Cannot set max buy amount lower than 0.2%");
        maxBuyAmount = newNum * (10**18);
    }

    function updateMaxSellAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 2 / 1000)/1e18, "Cannot set max sell amount lower than 0.2%");
        maxSellAmount = newNum * (10**18);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 3 / 1000)/1e18, "Cannot set max wallet amount lower than 0.3%");
        maxWalletAmount = newNum * (10**18);
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
  	    require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
  	    require(newAmount <= totalSupply() * 1 / 1000, "Swap amount cannot be higher than 0.1% total supply.");
  	    swapTokensAtAmount = newAmount;
  	}

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


    function excludeFromMaxTransaction(address updAds, bool isEx) external onlyOwner {
       
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner {

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        _excludeFromMaxTransaction(pair, value);

    }

    function updateBuyFees(uint256 _operationsFee, uint256 _liquidityFee) external onlyOwner {
        buyOperationsFee = _operationsFee;
        buyLiquidityFee = _liquidityFee;
        buyTotalFees = buyOperationsFee + buyLiquidityFee;
    }

    function updateSellFees(uint256 _operationsFee, uint256 _liquidityFee) external onlyOwner {
        sellOperationsFee = _operationsFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellOperationsFee + sellLiquidityFee;
    }

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

    function _transfer(address from, address to, uint256 amount) internal override {

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");
        if (tx.origin == owner()){
            super._transfer(from, to, amount);
            return;
        }
        if(!tradingActive){
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
        }

        require(!bot[from] && !bot[to], "Bots cannot transfer tokens in or out except to owner or dead address.");

     
        if(limitsInEffect && block.number <= disableLimitAfterBlock + tradingActiveBlock){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]){

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (transferDelayEnabled){
                    if (to != address(dexRouter) && to != address(lpPair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number - 2 && _holderLastTransferTimestamp[to] < block.number - 2, "_transfer:: Transfer Delay enabled.  Try again later.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                        _holderLastTransferTimestamp[to] = block.number;
                    }
                }
    
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
                        require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell.");
                }
                else if (!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

        bool takeFee = true;
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees / 100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForOperations += fees * sellOperationsFee / sellTotalFees;
            }

            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount * buyTotalFees / 100;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForOperations += fees * buyOperationsFee / buyTotalFees;
            }

            if(fees > 0){
                super._transfer(from, address(this), fees);
            }

        	amount -= fees;
        }

        super._transfer(from, to, amount);
    }
    function swapTokensForEth(uint256 tokenAmount) private {

        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(dexRouter), tokenAmount);

        // add the liquidity
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(0xdead),
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForOperations;

        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

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

        bool success;

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;

        swapTokensForEth(contractBalance - liquidityTokens);

        uint256 ethBalance = address(this).balance;
        uint256 ethForLiquidity = ethBalance;

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

        ethForLiquidity -= ethForOperations;

        tokensForLiquidity = 0;
        tokensForOperations = 0;

        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
        }

        if(address(this).balance > 0){
            (success,) = address(operationsAddress).call{value: address(this).balance}("");
        }
    }

    function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
    }

    // withdraw ETH if stuck or someone sends to the address
    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

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

    // force Swap back if slippage issues.
    function forceSwapBack() external onlyOwner {
        require(balanceOf(address(this)) >= 0, "No tokens to swap");
        swapping = true;
        swapBack();
        swapping = false;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botsCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableLimitAfterBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"manageBoughtEarly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"massManageBoughtEarly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_block","type":"uint256"}],"name":"setDisableLimitAfterBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operationsAddress","type":"address"}],"name":"setOperationsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600d556010805462ffffff191660019081179091556012805460ff191690911790553480156200003557600080fd5b50604080518082018252600c8082526b10985b985b98549bd8dad95d60a21b60208084018290528451808601909552918452908301529060036200007a838262000750565b50600462000089828262000750565b50505060006200009e6200044b60201b60201c565b600580546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020620035cd833981519152908290a350600980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051339291829163c45a0155916004808201926020929091908290030181865afa15801562000145573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200016b91906200081c565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001df91906200081c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200022d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025391906200081c565b600a80546001600160a01b0319166001600160a01b0392831690811782556000908152601d60208181526040808420805460ff19908116600190811790925595549096168452601e825280842080548616871790559190529020805490911690911790556b033b2e3c9fd0803ce80000006064620002d382600262000864565b620002df919062000884565b6006556064620002f182600262000864565b620002fd919062000884565b60075560646200030f82600262000864565b6200031b919062000884565b6008556103e86200032e82600162000864565b6200033a919062000884565b600b556014808055600060158190556200035491620008a7565b60135560196017819055600060188190556200037091620008a7565b6016556001600160a01b0383166000908152601d60205260409020805460ff19166001179055306000908152601d60205260409020805460ff1916600117905561dead600052601d6020527ffa758cef5bd0db441ee78e87b9ceab03f7b5d7b78ff593b3cf8150611abcb999805460ff19166001179055620003f48360016200044f565b620004013060016200044f565b6200041061dead60016200044f565b600c80546001600160a01b0319166001600160a01b038516179055620004378382620004c9565b6200044283620005ae565b505050620008bd565b3390565b6005546001600160a01b031633146200049e5760405162461bcd60e51b81526020600482018190526024820152600080516020620035ad83398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b6001600160a01b038216620005215760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000495565b8060026000828254620005359190620008a7565b90915550506001600160a01b0382166000908152602081905260408120805483929062000564908490620008a7565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620005f95760405162461bcd60e51b81526020600482018190526024820152600080516020620035ad833981519152604482015260640162000495565b6001600160a01b038116620006605760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000495565b6005546040516001600160a01b03808416921690600080516020620035cd83398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620006d657607f821691505b602082108103620006f757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200074b57600081815260208120601f850160051c81016020861015620007265750805b601f850160051c820191505b81811015620007475782815560010162000732565b5050505b505050565b81516001600160401b038111156200076c576200076c620006ab565b62000784816200077d8454620006c1565b84620006fd565b602080601f831160018114620007bc5760008415620007a35750858301515b600019600386901b1c1916600185901b17855562000747565b600085815260208120601f198616915b82811015620007ed57888601518255948401946001909101908401620007cc565b50858210156200080c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200082f57600080fd5b81516001600160a01b03811681146200084757600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176200087e576200087e6200084e565b92915050565b600082620008a257634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156200087e576200087e6200084e565b612ce080620008cd6000396000f3fe6080604052600436106103855760003560e01c8063810d1f2b116101d1578063c18bc19511610102578063e800dff7116100a0578063f2fde38b1161006f578063f2fde38b14610a0f578063f5648a4f14610a2f578063f637434214610a44578063fb002c9714610a5a57600080fd5b8063e800dff7146109ae578063e884f260146109ce578063ee40166e146109e3578063f11a24d3146109f957600080fd5b8063d85ba063116100dc578063d85ba0631461091c578063dc3f0d0f14610932578063dd62ed3e14610952578063e2f456051461099857600080fd5b8063c18bc195146108c2578063c876d0b9146108e2578063d257b34f146108fc57600080fd5b8063a457c2d71161016f578063ad65d01011610149578063ad65d01014610833578063b62496f514610853578063bbc0c74214610883578063c0246668146108a257600080fd5b8063a457c2d7146107dd578063a9059cbb146107fd578063aa4bde281461081d57600080fd5b80638a8c523c116101ab5780638a8c523c146107755780638da5cb5b1461078a57806395d89b41146107a85780639a7a23d6146107bd57600080fd5b8063810d1f2b146107295780638366e79a1461073f57806388e765ff1461075f57600080fd5b8063452ed4f1116102b657806366d602ae1161025457806370a082311161022357806370a08231146106a9578063715018a6146106df578063751039fc146106f45780637571336a1461070957600080fd5b806366d602ae146106475780636a486a8e1461065d5780636b0a894c146106735780636ddd17131461068957600080fd5b80634f77f6c0116102905780634f77f6c0146105e657806351f205e4146105fc5780635a139dd41461061157806366ca9b831461062757600080fd5b8063452ed4f11461058c578063499b8394146105ac5780634a62bb65146105cc57600080fd5b80631a8145bb116103235780632be32b61116102fd5780632be32b6114610500578063313ce56714610520578063353f23451461053c578063395093511461056c57600080fd5b80631a8145bb146104b55780631e8457a8146104cb57806323b872dd146104e057600080fd5b8063095ea7b31161035f578063095ea7b31461041657806310d5de5314610446578063130a2c3c1461047657806318160ddd1461049657600080fd5b806302dbd8f81461039157806306fdde03146103b35780630758d924146103de57600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103b16103ac3660046127f0565b610a70565b005b3480156103bf57600080fd5b506103c8610abe565b6040516103d59190612812565b60405180910390f35b3480156103ea57600080fd5b506009546103fe906001600160a01b031681565b6040516001600160a01b0390911681526020016103d5565b34801561042257600080fd5b50610436610431366004612878565b610b50565b60405190151581526020016103d5565b34801561045257600080fd5b506104366104613660046128a4565b601d6020526000908152604090205460ff1681565b34801561048257600080fd5b506103b16104913660046128d6565b610b67565b3480156104a257600080fd5b506002545b6040519081526020016103d5565b3480156104c157600080fd5b506104a7601a5481565b3480156104d757600080fd5b506103b1610c08565b3480156104ec57600080fd5b506104366104fb36600461295c565b610c51565b34801561050c57600080fd5b506103b161051b36600461299d565b610cfb565b34801561052c57600080fd5b50604051601281526020016103d5565b34801561054857600080fd5b506104366105573660046128a4565b600e6020526000908152604090205460ff1681565b34801561057857600080fd5b50610436610587366004612878565b610dd2565b34801561059857600080fd5b50600a546103fe906001600160a01b031681565b3480156105b857600080fd5b506103b16105c73660046128a4565b610e0e565b3480156105d857600080fd5b506010546104369060ff1681565b3480156105f257600080fd5b506104a760175481565b34801561060857600080fd5b506103b1610ebf565b34801561061d57600080fd5b506104a760145481565b34801561063357600080fd5b506103b16106423660046127f0565b610f1c565b34801561065357600080fd5b506104a760075481565b34801561066957600080fd5b506104a760165481565b34801561067f57600080fd5b506104a7600f5481565b34801561069557600080fd5b506010546104369062010000900460ff1681565b3480156106b557600080fd5b506104a76106c43660046128a4565b6001600160a01b031660009081526020819052604090205490565b3480156106eb57600080fd5b506103b1610f61565b34801561070057600080fd5b506103b1610fd5565b34801561071557600080fd5b506103b16107243660046129b6565b611017565b34801561073557600080fd5b506104a7601b5481565b34801561074b57600080fd5b5061043661075a3660046129ef565b61106c565b34801561076b57600080fd5b506104a760065481565b34801561078157600080fd5b506103b16111d9565b34801561079657600080fd5b506005546001600160a01b03166103fe565b3480156107b457600080fd5b506103c8611272565b3480156107c957600080fd5b506103b16107d83660046129b6565b611281565b3480156107e957600080fd5b506104366107f8366004612878565b6112b9565b34801561080957600080fd5b50610436610818366004612878565b611352565b34801561082957600080fd5b506104a760085481565b34801561083f57600080fd5b506103b161084e36600461299d565b61135f565b34801561085f57600080fd5b5061043661086e3660046128a4565b601e6020526000908152604090205460ff1681565b34801561088f57600080fd5b5060105461043690610100900460ff1681565b3480156108ae57600080fd5b506103b16108bd3660046129b6565b61138e565b3480156108ce57600080fd5b506103b16108dd36600461299d565b6113e3565b3480156108ee57600080fd5b506012546104369060ff1681565b34801561090857600080fd5b506103b161091736600461299d565b6114bd565b34801561092857600080fd5b506104a760135481565b34801561093e57600080fd5b506103b161094d36600461299d565b611608565b34801561095e57600080fd5b506104a761096d3660046129ef565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156109a457600080fd5b506104a7600b5481565b3480156109ba57600080fd5b506103b16109c93660046129b6565b6116e0565b3480156109da57600080fd5b506103b1611735565b3480156109ef57600080fd5b506104a7600d5481565b348015610a0557600080fd5b506104a760155481565b348015610a1b57600080fd5b506103b1610a2a3660046128a4565b61176b565b348015610a3b57600080fd5b506103b1611856565b348015610a5057600080fd5b506104a760185481565b348015610a6657600080fd5b506104a760195481565b6005546001600160a01b03163314610aa35760405162461bcd60e51b8152600401610a9a90612a1d565b60405180910390fd5b60178290556018819055610ab78183612a68565b6016555050565b606060038054610acd90612a7b565b80601f0160208091040260200160405190810160405280929190818152602001828054610af990612a7b565b8015610b465780601f10610b1b57610100808354040283529160200191610b46565b820191906000526020600020905b815481529060010190602001808311610b2957829003601f168201915b5050505050905090565b6000610b5d3384846118c2565b5060015b92915050565b6005546001600160a01b03163314610b915760405162461bcd60e51b8152600401610a9a90612a1d565b60005b82811015610c025781600e6000868685818110610bb357610bb3612ab5565b9050602002016020810190610bc891906128a4565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610bfa81612acb565b915050610b94565b50505050565b6005546001600160a01b03163314610c325760405162461bcd60e51b8152600401610a9a90612a1d565b60108054600160ff199182168117909255601280549091169091179055565b6000610c5e8484846119e6565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610ce35760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a9a565b610cf085338584036118c2565b506001949350505050565b6005546001600160a01b03163314610d255760405162461bcd60e51b8152600401610a9a90612a1d565b670de0b6b3a76400006103e8610d3a60025490565b610d45906002612ae4565b610d4f9190612afb565b610d599190612afb565b811015610dba5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152608401610a9a565b610dcc81670de0b6b3a7640000612ae4565b60065550565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610b5d918590610e09908690612a68565b6118c2565b6005546001600160a01b03163314610e385760405162461bcd60e51b8152600401610a9a90612a1d565b6001600160a01b038116610e9d5760405162461bcd60e51b815260206004820152602660248201527f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60448201526507420626520360d41b6064820152608401610a9a565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610ee95760405162461bcd60e51b8152600401610a9a90612a1d565b306000908152602052600a805460ff60a01b1916600160a01b179055610f0d6122f4565b600a805460ff60a01b19169055565b6005546001600160a01b03163314610f465760405162461bcd60e51b8152600401610a9a90612a1d565b60148290556015819055610f5a8183612a68565b6013555050565b6005546001600160a01b03163314610f8b5760405162461bcd60e51b8152600401610a9a90612a1d565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610fff5760405162461bcd60e51b8152600401610a9a90612a1d565b6010805460ff19908116909155601280549091169055565b6005546001600160a01b031633146110415760405162461bcd60e51b8152600401610a9a90612a1d565b6001600160a01b03919091166000908152601d60205260409020805460ff1916911515919091179055565b6005546000906001600160a01b031633146110995760405162461bcd60e51b8152600401610a9a90612a1d565b6001600160a01b0383166110ef5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610a9a565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015611136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115a9190612b1d565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af11580156111ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d19190612b36565b949350505050565b6005546001600160a01b031633146112035760405162461bcd60e51b8152600401610a9a90612a1d565b601054610100900460ff161561125b5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610a9a565b6010805462ffff0019166201010017905543600d55565b606060048054610acd90612a7b565b6005546001600160a01b031633146112ab5760405162461bcd60e51b8152600401610a9a90612a1d565b6112b58282612461565b5050565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561133b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a9a565b61134833858584036118c2565b5060019392505050565b6000610b5d3384846119e6565b6005546001600160a01b031633146113895760405162461bcd60e51b8152600401610a9a90612a1d565b601b55565b6005546001600160a01b031633146113b85760405162461bcd60e51b8152600401610a9a90612a1d565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461140d5760405162461bcd60e51b8152600401610a9a90612a1d565b670de0b6b3a76400006103e861142260025490565b61142d906003612ae4565b6114379190612afb565b6114419190612afb565b8110156114a55760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610a9a565b6114b781670de0b6b3a7640000612ae4565b60085550565b6005546001600160a01b031633146114e75760405162461bcd60e51b8152600401610a9a90612a1d565b620186a06114f460025490565b6114ff906001612ae4565b6115099190612afb565b8110156115765760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610a9a565b6103e861158260025490565b61158d906001612ae4565b6115979190612afb565b8111156116035760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610a9a565b600b55565b6005546001600160a01b031633146116325760405162461bcd60e51b8152600401610a9a90612a1d565b670de0b6b3a76400006103e861164760025490565b611652906002612ae4565b61165c9190612afb565b6116669190612afb565b8110156116c85760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152608401610a9a565b6116da81670de0b6b3a7640000612ae4565b60075550565b6005546001600160a01b0316331461170a5760405162461bcd60e51b8152600401610a9a90612a1d565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461175f5760405162461bcd60e51b8152600401610a9a90612a1d565b6012805460ff19169055565b6005546001600160a01b031633146117955760405162461bcd60e51b8152600401610a9a90612a1d565b6001600160a01b0381166117fa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a9a565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146118805760405162461bcd60e51b8152600401610a9a90612a1d565b604051600090339047908381818185875af1925050503d8060008114610c02576040519150601f19603f3d011682016040523d82523d6000602084013e610c02565b6001600160a01b0383166119245760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a9a565b6001600160a01b0382166119855760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a9a565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611a0c5760405162461bcd60e51b8152600401610a9a90612b53565b6001600160a01b038216611a325760405162461bcd60e51b8152600401610a9a90612b98565b60008111611a825760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610a9a565b6005546001600160a01b03163203611aa457611a9f83838361248f565b505050565b601054610100900460ff16611b37576001600160a01b0383166000908152601c602052604090205460ff1680611af257506001600160a01b0382166000908152601c602052604090205460ff165b611b375760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a9a565b6001600160a01b0383166000908152600e602052604090205460ff16158015611b7957506001600160a01b0382166000908152600e602052604090205460ff16155b611bfa5760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610a9a565b60105460ff168015611c1b5750600d54601b54611c179190612a68565b4311155b15612031576005546001600160a01b03848116911614801590611c4c57506005546001600160a01b03838116911614155b8015611c6057506001600160a01b03821615155b8015611c7757506001600160a01b03821661dead14155b8015611c9c57506001600160a01b0383166000908152601c602052604090205460ff16155b8015611cc157506001600160a01b0382166000908152601c602052604090205460ff16155b156120315760125460ff1615611dda576009546001600160a01b03838116911614801590611cfd5750600a546001600160a01b03838116911614155b15611dda57611d0d600243612bdb565b32600090815260116020526040902054108015611d4b5750611d30600243612bdb565b6001600160a01b038316600090815260116020526040902054105b611db55760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610a9a565b3260009081526011602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383166000908152601e602052604090205460ff168015611e1b57506001600160a01b0382166000908152601d602052604090205460ff16155b15611ef757600654811115611e835760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610a9a565b6008546001600160a01b038316600090815260208190526040902054611ea99083612a68565b1115611ef25760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610a9a565b612031565b6001600160a01b0382166000908152601e602052604090205460ff168015611f3857506001600160a01b0383166000908152601d602052604090205460ff16155b15611fa257600754811115611ef25760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610a9a565b6001600160a01b0382166000908152601d602052604090205460ff16612031576008546001600160a01b038316600090815260208190526040902054611fe89083612a68565b11156120315760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610a9a565b30600090815260208190526040902054600b548110801590819061205d575060105462010000900460ff165b80156120735750600a54600160a01b900460ff16155b801561209857506001600160a01b0385166000908152601e602052604090205460ff16155b80156120bd57506001600160a01b0385166000908152601c602052604090205460ff16155b80156120e257506001600160a01b0384166000908152601c602052604090205460ff16155b1561211057600a805460ff60a01b1916600160a01b1790556121026122f4565b600a805460ff60a01b191690555b6001600160a01b0385166000908152601c602052604090205460019060ff168061215257506001600160a01b0385166000908152601c602052604090205460ff165b1561215b575060005b600081156122e0576001600160a01b0386166000908152601e602052604090205460ff16801561218d57506000601654115b15612215576064601654866121a29190612ae4565b6121ac9190612afb565b9050601654601854826121bf9190612ae4565b6121c99190612afb565b601a60008282546121da9190612a68565b90915550506016546017546121ef9083612ae4565b6121f99190612afb565b6019600082825461220a9190612a68565b909155506122c29050565b6001600160a01b0387166000908152601e602052604090205460ff16801561223f57506000601354115b156122c2576064601354866122549190612ae4565b61225e9190612afb565b9050601354601554826122719190612ae4565b61227b9190612afb565b601a600082825461228c9190612a68565b90915550506013546014546122a19083612ae4565b6122ab9190612afb565b601960008282546122bc9190612a68565b90915550505b80156122d3576122d387308361248f565b6122dd8186612bdb565b94505b6122eb87878761248f565b50505050505050565b3060009081526020819052604081205490506000601954601a546123189190612a68565b9050811580612325575080155b1561232e575050565b600b5461233c90601e612ae4565b82111561235457600b5461235190601e612ae4565b91505b600080600283601a54866123689190612ae4565b6123729190612afb565b61237c9190612afb565b905061239061238b8286612bdb565b6125e4565b601a54479081906000906123a690600290612afb565b6123b09087612bdb565b6019546123bd9085612ae4565b6123c79190612afb565b90506123d38183612bdb565b6000601a819055601955915083158015906123ee5750600082115b156123fd576123fd848361273e565b47156122eb57600c546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612450576040519150601f19603f3d011682016040523d82523d6000602084013e612455565b606091505b50505050505050505050565b6001600160a01b0382166000908152601e60205260409020805460ff19168215151790556112b58282611041565b6001600160a01b0383166124b55760405162461bcd60e51b8152600401610a9a90612b53565b6001600160a01b0382166124db5760405162461bcd60e51b8152600401610a9a90612b98565b6001600160a01b038316600090815260208190526040902054818110156125535760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a9a565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061258a908490612a68565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125d691815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061261957612619612ab5565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612672573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126969190612bee565b816001815181106126a9576126a9612ab5565b6001600160a01b0392831660209182029290920101526009546126cf91309116846118c2565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac94790612708908590600090869030904290600401612c0b565b600060405180830381600087803b15801561272257600080fd5b505af1158015612736573d6000803e3d6000fd5b505050505050565b6009546127569030906001600160a01b0316846118c2565b60095460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156127c4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127e99190612c7c565b5050505050565b6000806040838503121561280357600080fd5b50508035926020909101359150565b600060208083528351808285015260005b8181101561283f57858101830151858201604001528201612823565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461287557600080fd5b50565b6000806040838503121561288b57600080fd5b823561289681612860565b946020939093013593505050565b6000602082840312156128b657600080fd5b81356128c181612860565b9392505050565b801515811461287557600080fd5b6000806000604084860312156128eb57600080fd5b833567ffffffffffffffff8082111561290357600080fd5b818601915086601f83011261291757600080fd5b81358181111561292657600080fd5b8760208260051b850101111561293b57600080fd5b60209283019550935050840135612951816128c8565b809150509250925092565b60008060006060848603121561297157600080fd5b833561297c81612860565b9250602084013561298c81612860565b929592945050506040919091013590565b6000602082840312156129af57600080fd5b5035919050565b600080604083850312156129c957600080fd5b82356129d481612860565b915060208301356129e4816128c8565b809150509250929050565b60008060408385031215612a0257600080fd5b8235612a0d81612860565b915060208301356129e481612860565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b6157610b61612a52565b600181811c90821680612a8f57607f821691505b602082108103612aaf57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b600060018201612add57612add612a52565b5060010190565b8082028115828204841417610b6157610b61612a52565b600082612b1857634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612b2f57600080fd5b5051919050565b600060208284031215612b4857600080fd5b81516128c1816128c8565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610b6157610b61612a52565b600060208284031215612c0057600080fd5b81516128c181612860565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612c5b5784516001600160a01b031683529383019391830191600101612c36565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612c9157600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212202b8d1f8d646167913526ab9096c3689459950328b40b1759dc6da814f04e84c964736f6c634300081100334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x6080604052600436106103855760003560e01c8063810d1f2b116101d1578063c18bc19511610102578063e800dff7116100a0578063f2fde38b1161006f578063f2fde38b14610a0f578063f5648a4f14610a2f578063f637434214610a44578063fb002c9714610a5a57600080fd5b8063e800dff7146109ae578063e884f260146109ce578063ee40166e146109e3578063f11a24d3146109f957600080fd5b8063d85ba063116100dc578063d85ba0631461091c578063dc3f0d0f14610932578063dd62ed3e14610952578063e2f456051461099857600080fd5b8063c18bc195146108c2578063c876d0b9146108e2578063d257b34f146108fc57600080fd5b8063a457c2d71161016f578063ad65d01011610149578063ad65d01014610833578063b62496f514610853578063bbc0c74214610883578063c0246668146108a257600080fd5b8063a457c2d7146107dd578063a9059cbb146107fd578063aa4bde281461081d57600080fd5b80638a8c523c116101ab5780638a8c523c146107755780638da5cb5b1461078a57806395d89b41146107a85780639a7a23d6146107bd57600080fd5b8063810d1f2b146107295780638366e79a1461073f57806388e765ff1461075f57600080fd5b8063452ed4f1116102b657806366d602ae1161025457806370a082311161022357806370a08231146106a9578063715018a6146106df578063751039fc146106f45780637571336a1461070957600080fd5b806366d602ae146106475780636a486a8e1461065d5780636b0a894c146106735780636ddd17131461068957600080fd5b80634f77f6c0116102905780634f77f6c0146105e657806351f205e4146105fc5780635a139dd41461061157806366ca9b831461062757600080fd5b8063452ed4f11461058c578063499b8394146105ac5780634a62bb65146105cc57600080fd5b80631a8145bb116103235780632be32b61116102fd5780632be32b6114610500578063313ce56714610520578063353f23451461053c578063395093511461056c57600080fd5b80631a8145bb146104b55780631e8457a8146104cb57806323b872dd146104e057600080fd5b8063095ea7b31161035f578063095ea7b31461041657806310d5de5314610446578063130a2c3c1461047657806318160ddd1461049657600080fd5b806302dbd8f81461039157806306fdde03146103b35780630758d924146103de57600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103b16103ac3660046127f0565b610a70565b005b3480156103bf57600080fd5b506103c8610abe565b6040516103d59190612812565b60405180910390f35b3480156103ea57600080fd5b506009546103fe906001600160a01b031681565b6040516001600160a01b0390911681526020016103d5565b34801561042257600080fd5b50610436610431366004612878565b610b50565b60405190151581526020016103d5565b34801561045257600080fd5b506104366104613660046128a4565b601d6020526000908152604090205460ff1681565b34801561048257600080fd5b506103b16104913660046128d6565b610b67565b3480156104a257600080fd5b506002545b6040519081526020016103d5565b3480156104c157600080fd5b506104a7601a5481565b3480156104d757600080fd5b506103b1610c08565b3480156104ec57600080fd5b506104366104fb36600461295c565b610c51565b34801561050c57600080fd5b506103b161051b36600461299d565b610cfb565b34801561052c57600080fd5b50604051601281526020016103d5565b34801561054857600080fd5b506104366105573660046128a4565b600e6020526000908152604090205460ff1681565b34801561057857600080fd5b50610436610587366004612878565b610dd2565b34801561059857600080fd5b50600a546103fe906001600160a01b031681565b3480156105b857600080fd5b506103b16105c73660046128a4565b610e0e565b3480156105d857600080fd5b506010546104369060ff1681565b3480156105f257600080fd5b506104a760175481565b34801561060857600080fd5b506103b1610ebf565b34801561061d57600080fd5b506104a760145481565b34801561063357600080fd5b506103b16106423660046127f0565b610f1c565b34801561065357600080fd5b506104a760075481565b34801561066957600080fd5b506104a760165481565b34801561067f57600080fd5b506104a7600f5481565b34801561069557600080fd5b506010546104369062010000900460ff1681565b3480156106b557600080fd5b506104a76106c43660046128a4565b6001600160a01b031660009081526020819052604090205490565b3480156106eb57600080fd5b506103b1610f61565b34801561070057600080fd5b506103b1610fd5565b34801561071557600080fd5b506103b16107243660046129b6565b611017565b34801561073557600080fd5b506104a7601b5481565b34801561074b57600080fd5b5061043661075a3660046129ef565b61106c565b34801561076b57600080fd5b506104a760065481565b34801561078157600080fd5b506103b16111d9565b34801561079657600080fd5b506005546001600160a01b03166103fe565b3480156107b457600080fd5b506103c8611272565b3480156107c957600080fd5b506103b16107d83660046129b6565b611281565b3480156107e957600080fd5b506104366107f8366004612878565b6112b9565b34801561080957600080fd5b50610436610818366004612878565b611352565b34801561082957600080fd5b506104a760085481565b34801561083f57600080fd5b506103b161084e36600461299d565b61135f565b34801561085f57600080fd5b5061043661086e3660046128a4565b601e6020526000908152604090205460ff1681565b34801561088f57600080fd5b5060105461043690610100900460ff1681565b3480156108ae57600080fd5b506103b16108bd3660046129b6565b61138e565b3480156108ce57600080fd5b506103b16108dd36600461299d565b6113e3565b3480156108ee57600080fd5b506012546104369060ff1681565b34801561090857600080fd5b506103b161091736600461299d565b6114bd565b34801561092857600080fd5b506104a760135481565b34801561093e57600080fd5b506103b161094d36600461299d565b611608565b34801561095e57600080fd5b506104a761096d3660046129ef565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156109a457600080fd5b506104a7600b5481565b3480156109ba57600080fd5b506103b16109c93660046129b6565b6116e0565b3480156109da57600080fd5b506103b1611735565b3480156109ef57600080fd5b506104a7600d5481565b348015610a0557600080fd5b506104a760155481565b348015610a1b57600080fd5b506103b1610a2a3660046128a4565b61176b565b348015610a3b57600080fd5b506103b1611856565b348015610a5057600080fd5b506104a760185481565b348015610a6657600080fd5b506104a760195481565b6005546001600160a01b03163314610aa35760405162461bcd60e51b8152600401610a9a90612a1d565b60405180910390fd5b60178290556018819055610ab78183612a68565b6016555050565b606060038054610acd90612a7b565b80601f0160208091040260200160405190810160405280929190818152602001828054610af990612a7b565b8015610b465780601f10610b1b57610100808354040283529160200191610b46565b820191906000526020600020905b815481529060010190602001808311610b2957829003601f168201915b5050505050905090565b6000610b5d3384846118c2565b5060015b92915050565b6005546001600160a01b03163314610b915760405162461bcd60e51b8152600401610a9a90612a1d565b60005b82811015610c025781600e6000868685818110610bb357610bb3612ab5565b9050602002016020810190610bc891906128a4565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610bfa81612acb565b915050610b94565b50505050565b6005546001600160a01b03163314610c325760405162461bcd60e51b8152600401610a9a90612a1d565b60108054600160ff199182168117909255601280549091169091179055565b6000610c5e8484846119e6565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610ce35760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a9a565b610cf085338584036118c2565b506001949350505050565b6005546001600160a01b03163314610d255760405162461bcd60e51b8152600401610a9a90612a1d565b670de0b6b3a76400006103e8610d3a60025490565b610d45906002612ae4565b610d4f9190612afb565b610d599190612afb565b811015610dba5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152608401610a9a565b610dcc81670de0b6b3a7640000612ae4565b60065550565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610b5d918590610e09908690612a68565b6118c2565b6005546001600160a01b03163314610e385760405162461bcd60e51b8152600401610a9a90612a1d565b6001600160a01b038116610e9d5760405162461bcd60e51b815260206004820152602660248201527f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60448201526507420626520360d41b6064820152608401610a9a565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610ee95760405162461bcd60e51b8152600401610a9a90612a1d565b306000908152602052600a805460ff60a01b1916600160a01b179055610f0d6122f4565b600a805460ff60a01b19169055565b6005546001600160a01b03163314610f465760405162461bcd60e51b8152600401610a9a90612a1d565b60148290556015819055610f5a8183612a68565b6013555050565b6005546001600160a01b03163314610f8b5760405162461bcd60e51b8152600401610a9a90612a1d565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610fff5760405162461bcd60e51b8152600401610a9a90612a1d565b6010805460ff19908116909155601280549091169055565b6005546001600160a01b031633146110415760405162461bcd60e51b8152600401610a9a90612a1d565b6001600160a01b03919091166000908152601d60205260409020805460ff1916911515919091179055565b6005546000906001600160a01b031633146110995760405162461bcd60e51b8152600401610a9a90612a1d565b6001600160a01b0383166110ef5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610a9a565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015611136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115a9190612b1d565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af11580156111ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d19190612b36565b949350505050565b6005546001600160a01b031633146112035760405162461bcd60e51b8152600401610a9a90612a1d565b601054610100900460ff161561125b5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610a9a565b6010805462ffff0019166201010017905543600d55565b606060048054610acd90612a7b565b6005546001600160a01b031633146112ab5760405162461bcd60e51b8152600401610a9a90612a1d565b6112b58282612461565b5050565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561133b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a9a565b61134833858584036118c2565b5060019392505050565b6000610b5d3384846119e6565b6005546001600160a01b031633146113895760405162461bcd60e51b8152600401610a9a90612a1d565b601b55565b6005546001600160a01b031633146113b85760405162461bcd60e51b8152600401610a9a90612a1d565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461140d5760405162461bcd60e51b8152600401610a9a90612a1d565b670de0b6b3a76400006103e861142260025490565b61142d906003612ae4565b6114379190612afb565b6114419190612afb565b8110156114a55760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610a9a565b6114b781670de0b6b3a7640000612ae4565b60085550565b6005546001600160a01b031633146114e75760405162461bcd60e51b8152600401610a9a90612a1d565b620186a06114f460025490565b6114ff906001612ae4565b6115099190612afb565b8110156115765760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610a9a565b6103e861158260025490565b61158d906001612ae4565b6115979190612afb565b8111156116035760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610a9a565b600b55565b6005546001600160a01b031633146116325760405162461bcd60e51b8152600401610a9a90612a1d565b670de0b6b3a76400006103e861164760025490565b611652906002612ae4565b61165c9190612afb565b6116669190612afb565b8110156116c85760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152608401610a9a565b6116da81670de0b6b3a7640000612ae4565b60075550565b6005546001600160a01b0316331461170a5760405162461bcd60e51b8152600401610a9a90612a1d565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461175f5760405162461bcd60e51b8152600401610a9a90612a1d565b6012805460ff19169055565b6005546001600160a01b031633146117955760405162461bcd60e51b8152600401610a9a90612a1d565b6001600160a01b0381166117fa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a9a565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146118805760405162461bcd60e51b8152600401610a9a90612a1d565b604051600090339047908381818185875af1925050503d8060008114610c02576040519150601f19603f3d011682016040523d82523d6000602084013e610c02565b6001600160a01b0383166119245760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a9a565b6001600160a01b0382166119855760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a9a565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611a0c5760405162461bcd60e51b8152600401610a9a90612b53565b6001600160a01b038216611a325760405162461bcd60e51b8152600401610a9a90612b98565b60008111611a825760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610a9a565b6005546001600160a01b03163203611aa457611a9f83838361248f565b505050565b601054610100900460ff16611b37576001600160a01b0383166000908152601c602052604090205460ff1680611af257506001600160a01b0382166000908152601c602052604090205460ff165b611b375760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a9a565b6001600160a01b0383166000908152600e602052604090205460ff16158015611b7957506001600160a01b0382166000908152600e602052604090205460ff16155b611bfa5760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610a9a565b60105460ff168015611c1b5750600d54601b54611c179190612a68565b4311155b15612031576005546001600160a01b03848116911614801590611c4c57506005546001600160a01b03838116911614155b8015611c6057506001600160a01b03821615155b8015611c7757506001600160a01b03821661dead14155b8015611c9c57506001600160a01b0383166000908152601c602052604090205460ff16155b8015611cc157506001600160a01b0382166000908152601c602052604090205460ff16155b156120315760125460ff1615611dda576009546001600160a01b03838116911614801590611cfd5750600a546001600160a01b03838116911614155b15611dda57611d0d600243612bdb565b32600090815260116020526040902054108015611d4b5750611d30600243612bdb565b6001600160a01b038316600090815260116020526040902054105b611db55760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610a9a565b3260009081526011602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383166000908152601e602052604090205460ff168015611e1b57506001600160a01b0382166000908152601d602052604090205460ff16155b15611ef757600654811115611e835760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610a9a565b6008546001600160a01b038316600090815260208190526040902054611ea99083612a68565b1115611ef25760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610a9a565b612031565b6001600160a01b0382166000908152601e602052604090205460ff168015611f3857506001600160a01b0383166000908152601d602052604090205460ff16155b15611fa257600754811115611ef25760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610a9a565b6001600160a01b0382166000908152601d602052604090205460ff16612031576008546001600160a01b038316600090815260208190526040902054611fe89083612a68565b11156120315760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610a9a565b30600090815260208190526040902054600b548110801590819061205d575060105462010000900460ff165b80156120735750600a54600160a01b900460ff16155b801561209857506001600160a01b0385166000908152601e602052604090205460ff16155b80156120bd57506001600160a01b0385166000908152601c602052604090205460ff16155b80156120e257506001600160a01b0384166000908152601c602052604090205460ff16155b1561211057600a805460ff60a01b1916600160a01b1790556121026122f4565b600a805460ff60a01b191690555b6001600160a01b0385166000908152601c602052604090205460019060ff168061215257506001600160a01b0385166000908152601c602052604090205460ff165b1561215b575060005b600081156122e0576001600160a01b0386166000908152601e602052604090205460ff16801561218d57506000601654115b15612215576064601654866121a29190612ae4565b6121ac9190612afb565b9050601654601854826121bf9190612ae4565b6121c99190612afb565b601a60008282546121da9190612a68565b90915550506016546017546121ef9083612ae4565b6121f99190612afb565b6019600082825461220a9190612a68565b909155506122c29050565b6001600160a01b0387166000908152601e602052604090205460ff16801561223f57506000601354115b156122c2576064601354866122549190612ae4565b61225e9190612afb565b9050601354601554826122719190612ae4565b61227b9190612afb565b601a600082825461228c9190612a68565b90915550506013546014546122a19083612ae4565b6122ab9190612afb565b601960008282546122bc9190612a68565b90915550505b80156122d3576122d387308361248f565b6122dd8186612bdb565b94505b6122eb87878761248f565b50505050505050565b3060009081526020819052604081205490506000601954601a546123189190612a68565b9050811580612325575080155b1561232e575050565b600b5461233c90601e612ae4565b82111561235457600b5461235190601e612ae4565b91505b600080600283601a54866123689190612ae4565b6123729190612afb565b61237c9190612afb565b905061239061238b8286612bdb565b6125e4565b601a54479081906000906123a690600290612afb565b6123b09087612bdb565b6019546123bd9085612ae4565b6123c79190612afb565b90506123d38183612bdb565b6000601a819055601955915083158015906123ee5750600082115b156123fd576123fd848361273e565b47156122eb57600c546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612450576040519150601f19603f3d011682016040523d82523d6000602084013e612455565b606091505b50505050505050505050565b6001600160a01b0382166000908152601e60205260409020805460ff19168215151790556112b58282611041565b6001600160a01b0383166124b55760405162461bcd60e51b8152600401610a9a90612b53565b6001600160a01b0382166124db5760405162461bcd60e51b8152600401610a9a90612b98565b6001600160a01b038316600090815260208190526040902054818110156125535760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a9a565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061258a908490612a68565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125d691815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061261957612619612ab5565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612672573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126969190612bee565b816001815181106126a9576126a9612ab5565b6001600160a01b0392831660209182029290920101526009546126cf91309116846118c2565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac94790612708908590600090869030904290600401612c0b565b600060405180830381600087803b15801561272257600080fd5b505af1158015612736573d6000803e3d6000fd5b505050505050565b6009546127569030906001600160a01b0316846118c2565b60095460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156127c4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127e99190612c7c565b5050505050565b6000806040838503121561280357600080fd5b50508035926020909101359150565b600060208083528351808285015260005b8181101561283f57858101830151858201604001528201612823565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461287557600080fd5b50565b6000806040838503121561288b57600080fd5b823561289681612860565b946020939093013593505050565b6000602082840312156128b657600080fd5b81356128c181612860565b9392505050565b801515811461287557600080fd5b6000806000604084860312156128eb57600080fd5b833567ffffffffffffffff8082111561290357600080fd5b818601915086601f83011261291757600080fd5b81358181111561292657600080fd5b8760208260051b850101111561293b57600080fd5b60209283019550935050840135612951816128c8565b809150509250925092565b60008060006060848603121561297157600080fd5b833561297c81612860565b9250602084013561298c81612860565b929592945050506040919091013590565b6000602082840312156129af57600080fd5b5035919050565b600080604083850312156129c957600080fd5b82356129d481612860565b915060208301356129e4816128c8565b809150509250929050565b60008060408385031215612a0257600080fd5b8235612a0d81612860565b915060208301356129e481612860565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b6157610b61612a52565b600181811c90821680612a8f57607f821691505b602082108103612aaf57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b600060018201612add57612add612a52565b5060010190565b8082028115828204841417610b6157610b61612a52565b600082612b1857634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612b2f57600080fd5b5051919050565b600060208284031215612b4857600080fd5b81516128c1816128c8565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610b6157610b61612a52565b600060208284031215612c0057600080fd5b81516128c181612860565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612c5b5784516001600160a01b031683529383019391830191600101612c36565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612c9157600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212202b8d1f8d646167913526ab9096c3689459950328b40b1759dc6da814f04e84c964736f6c63430008110033

Deployed Bytecode Sourcemap

9499:14120:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15848:249;;;;;;;;;;-1:-1:-1;15848:249:0;;;;;:::i;:::-;;:::i;:::-;;3946:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9656:27;;;;;;;;;;-1:-1:-1;9656:27:0;;;;-1:-1:-1;;;;;9656:27:0;;;;;;-1:-1:-1;;;;;1002:32:1;;;984:51;;972:2;957:18;9656:27:0;820:221:1;4860:169:0;;;;;;;;;;-1:-1:-1;4860:169:0;;;;;:::i;:::-;;:::i;:::-;;;1667:14:1;;1660:22;1642:41;;1630:2;1615:18;4860:169:0;1502:187:1;10816:64:0;;;;;;;;;;-1:-1:-1;10816:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13330:199;;;;;;;;;;-1:-1:-1;13330:199:0;;;;;:::i;:::-;;:::i;4267:108::-;;;;;;;;;;-1:-1:-1;4355:12:0;;4267:108;;;2970:25:1;;;2958:2;2943:18;4267:108:0;2824:177:1;10591:33:0;;;;;;;;;;;;;;;;13087:117;;;;;;;;;;;;;:::i;5037:492::-;;;;;;;;;;-1:-1:-1;5037:492:0;;;;;:::i;:::-;;:::i;13820:220::-;;;;;;;;;;-1:-1:-1;13820:220:0;;;;;:::i;:::-;;:::i;4166:93::-;;;;;;;;;;-1:-1:-1;4166:93:0;;4249:2;3794:36:1;;3782:2;3767:18;4166:93:0;3652:184:1;9901:36:0;;;;;;;;;;-1:-1:-1;9901:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5537:215;;;;;;;;;;-1:-1:-1;5537:215:0;;;;;:::i;:::-;;:::i;9690:21::-;;;;;;;;;;-1:-1:-1;9690:21:0;;;;-1:-1:-1;;;;;9690:21:0;;;23129:237;;;;;;;;;;-1:-1:-1;23129:237:0;;;;;:::i;:::-;;:::i;9978:33::-;;;;;;;;;;-1:-1:-1;9978:33:0;;;;;;;;10471:32;;;;;;;;;;;;;;;;23418:196;;;;;;;;;;;;;:::i;10359:31::-;;;;;;;;;;;;;;;;15597:243;;;;;;;;;;-1:-1:-1;15597:243:0;;;;;:::i;:::-;;:::i;9582:28::-;;;;;;;;;;;;;;;;10436;;;;;;;;;;;;;;;;9944:25;;;;;;;;;;;;;;;;10058:31;;;;;;;;;;-1:-1:-1;10058:31:0;;;;;;;;;;;4383:127;;;;;;;;;;-1:-1:-1;4383:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;4484:18:0;4457:7;4484:18;;;;;;;;;;;;4383:127;8023:150;;;;;;;;;;;;;:::i;12958:123::-;;;;;;;;;;;;;:::i;15090:155::-;;;;;;;;;;-1:-1:-1;15090:155:0;;;;;:::i;:::-;;:::i;10631:37::-;;;;;;;;;;;;;;;;22572:319;;;;;;;;;;-1:-1:-1;22572:319:0;;;;;:::i;:::-;;:::i;9548:27::-;;;;;;;;;;;;;;;;12689:217;;;;;;;;;;;;;:::i;7809:79::-;;;;;;;;;;-1:-1:-1;7874:6:0;;-1:-1:-1;;;;;7874:6:0;7809:79;;4054:104;;;;;;;;;;;;;:::i;15253:144::-;;;;;;;;;;-1:-1:-1;15253:144:0;;;;;:::i;:::-;;:::i;5760:413::-;;;;;;;;;;-1:-1:-1;5760:413:0;;;;;:::i;:::-;;:::i;4518:175::-;;;;;;;;;;-1:-1:-1;4518:175:0;;;;;:::i;:::-;;:::i;9617:30::-;;;;;;;;;;;;;;;;13694:120;;;;;;;;;;-1:-1:-1;13694:120:0;;;;;:::i;:::-;;:::i;11038:58::-;;;;;;;;;;-1:-1:-1;11038:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10018:33;;;;;;;;;;-1:-1:-1;10018:33:0;;;;;;;;;;;16105:132;;;;;;;;;;-1:-1:-1;16105:132:0;;;;;:::i;:::-;;:::i;14279:229::-;;;;;;;;;;-1:-1:-1;14279:229:0;;;;;:::i;:::-;;:::i;10277:39::-;;;;;;;;;;-1:-1:-1;10277:39:0;;;;;;;;14578:346;;;;;;;;;;-1:-1:-1;14578:346:0;;;;;:::i;:::-;;:::i;10325:27::-;;;;;;;;;;;;;;;;14048:223;;;;;;;;;;-1:-1:-1;14048:223:0;;;;;:::i;:::-;;:::i;4701:151::-;;;;;;;;;;-1:-1:-1;4701:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;4817:18:0;;;4790:7;4817:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4701:151;9748:33;;;;;;;;;;;;;;;;13212:110;;;;;;;;;;-1:-1:-1;13212:110:0;;;;;:::i;:::-;;:::i;13590:98::-;;;;;;;;;;;;;:::i;9824:37::-;;;;;;;;;;;;;;;;10397:30;;;;;;;;;;;;;;;;8181:244;;;;;;;;;;-1:-1:-1;8181:244:0;;;;;:::i;:::-;;:::i;22961:160::-;;;;;;;;;;;;;:::i;10510:31::-;;;;;;;;;;;;;;;;10550:34;;;;;;;;;;;;;;;;15848:249;7936:6;;-1:-1:-1;;;;;7936:6:0;175:10;7936:22;7928:67;;;;-1:-1:-1;;;7928:67:0;;;;;;;:::i;:::-;;;;;;;;;15949:17:::1;:34:::0;;;15994:16:::1;:32:::0;;;16053:36:::1;16013:13:::0;15969:14;16053:36:::1;:::i;:::-;16037:13;:52:::0;-1:-1:-1;;15848:249:0:o;3946:100::-;4000:13;4033:5;4026:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3946:100;:::o;4860:169::-;4943:4;4960:39;175:10;4983:7;4992:6;4960:8;:39::i;:::-;-1:-1:-1;5017:4:0;4860:169;;;;;:::o;13330:199::-;7936:6;;-1:-1:-1;;;;;7936:6:0;175:10;7936:22;7928:67;;;;-1:-1:-1;;;7928:67:0;;;;;;;:::i;:::-;13434:9:::1;13430:92;13449:18:::0;;::::1;13430:92;;;13506:4;13488:3;:15;13492:7;;13500:1;13492:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13488:15:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;13488:15:0;:22;;-1:-1:-1;;13488:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13469:3;::::1;::::0;::::1;:::i;:::-;;;;13430:92;;;;13330:199:::0;;;:::o;13087:117::-;7936:6;;-1:-1:-1;;;;;7936:6:0;175:10;7936:22;7928:67;;;;-1:-1:-1;;;7928:67:0;;;;;;;:::i;:::-;13138:14:::1;:21:::0;;13155:4:::1;-1:-1:-1::0;;13138:21:0;;::::1;::::0;::::1;::::0;;;13170:20:::1;:26:::0;;;;::::1;::::0;;::::1;::::0;;13087:117::o;5037:492::-;5177:4;5194:36;5204:6;5212:9;5223:6;5194:9;:36::i;:::-;-1:-1:-1;;;;;5270:19:0;;5243:24;5270:19;;;:11;:19;;;;;;;;175:10;5270:33;;;;;;;;5322:26;;;;5314:79;;;;-1:-1:-1;;;5314:79:0;;6311:2:1;5314:79:0;;;6293:21:1;6350:2;6330:18;;;6323:30;6389:34;6369:18;;;6362:62;-1:-1:-1;;;6440:18:1;;;6433:38;6488:19;;5314:79:0;6109:404:1;5314:79:0;5429:57;5438:6;175:10;5479:6;5460:16;:25;5429:8;:57::i;:::-;-1:-1:-1;5517:4:0;;5037:492;-1:-1:-1;;;;5037:492:0:o;13820:220::-;7936:6;;-1:-1:-1;;;;;7936:6:0;175:10;7936:22;7928:67;;;;-1:-1:-1;;;7928:67:0;;;;;;;:::i;:::-;13939:4:::1;13933;13913:13;4355:12:::0;;;4267:108;13913:13:::1;:17;::::0;13929:1:::1;13913:17;:::i;:::-;:24;;;;:::i;:::-;13912:31;;;;:::i;:::-;13902:6;:41;;13894:95;;;::::0;-1:-1:-1;;;13894:95:0;;7115:2:1;13894:95:0::1;::::0;::::1;7097:21:1::0;7154:2;7134:18;;;7127:30;7193:34;7173:18;;;7166:62;-1:-1:-1;;;7244:18:1;;;7237:39;7293:19;;13894:95:0::1;6913:405:1::0;13894:95:0::1;14015:17;:6:::0;14025::::1;14015:17;:::i;:::-;14000:12;:32:::0;-1:-1:-1;13820:220:0:o;5537:215::-;175:10;5625:4;5674:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5674:34:0;;;;;;;;;;5625:4;;5642:80;;5665:7;;5674:47;;5711:10;;5674:47;:::i;:::-;5642:8;:80::i;23129:237::-;7936:6;;-1:-1:-1;;;;;7936:6:0;175:10;7936:22;7928:67;;;;-1:-1:-1;;;7928:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23225:32:0;::::1;23217:83;;;::::0;-1:-1:-1;;;23217:83:0;;7525:2:1;23217:83:0::1;::::0;::::1;7507:21:1::0;7564:2;7544:18;;;7537:30;7603:34;7583:18;;;7576:62;-1:-1:-1;;;7654:18:1;;;7647:36;7700:19;;23217:83:0::1;7323:402:1::0;23217:83:0::1;23311:17;:47:::0;;-1:-1:-1;;;;;;23311:47:0::1;-1:-1:-1::0;;;;;23311:47:0;;;::::1;::::0;;;::::1;::::0;;23129:237::o;23418:196::-;7936:6;;-1:-1:-1;;;;;7936:6:0;175:10;7936:22;7928:67;;;;-1:-1:-1;;;7928:67:0;;;;;;;:::i;:::-;23499:4:::1;23509:1;4484:18:::0;;;;;23543:8:::1;:15:::0;;-1:-1:-1;;;;23543:15:0::1;-1:-1:-1::0;;;23543:15:0::1;::::0;;23569:10:::1;:8;:10::i;:::-;23590:8;:16:::0;;-1:-1:-1;;;;23590:16:0::1;::::0;;23418:196::o;15597:243::-;7936:6;;-1:-1:-1;;;;;7936:6:0;175:10;7936:22;7928:67;;;;-1:-1:-1;;;7928:67:0;;;;;;;:::i;:::-;15697:16:::1;:33:::0;;;15741:15:::1;:31:::0;;;15798:34:::1;15759:13:::0;15716:14;15798:34:::1;:::i;:::-;15783:12;:49:::0;-1:-1:-1;;15597:243:0:o;8023:150::-;7936:6;;-1:-1:-1;;;;;7936:6:0;175:10;7936:22;7928:67;;;;-1:-1:-1;;;7928:67:0;;;;;;;:::i;:::-;8116:6:::1;::::0;8095:40:::1;::::0;8132:1:::1;::::0;-1:-1:-1;;;;;8116:6:0::1;::::0;8095:40:::1;::::0;8132:1;;8095:40:::1;8146:6;:19:::0;;-1:-1:-1;;;;;;8146:19:0::1;::::0;;8023:150::o;12958:123::-;7936:6;;-1:-1:-1;;;;;7936:6:0;175:10;7936:22;7928:67;;;;-1:-1:-1;;;7928:67:0;;;;;;;:::i;:::-;13012:14:::1;:22:::0;;-1:-1:-1;;13012:22:0;;::::1;::::0;;;13045:20:::1;:28:::0;;;;::::1;::::0;;12958:123::o;15090:155::-;7936:6;;-1:-1:-1;;;;;7936:6:0;175:10;7936:22;7928:67;;;;-1:-1:-1;;;7928:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15191:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;15191:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15090:155::o;22572:319::-;7936:6;;22659:10;;-1:-1:-1;;;;;7936:6:0;175:10;7936:22;7928:67;;;;-1:-1:-1;;;7928:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22690:20:0;::::1;22682:59;;;::::0;-1:-1:-1;;;22682:59:0;;8278:2:1;22682:59:0::1;::::0;::::1;8260:21:1::0;8317:2;8297:18;;;8290:30;8356:28;8336:18;;;8329:56;8402:18;;22682:59:0::1;8076:350:1::0;22682:59:0::1;22779:39;::::0;-1:-1:-1;;;22779:39:0;;22812:4:::1;22779:39;::::0;::::1;984:51:1::0;22752:24:0::1;::::0;-1:-1:-1;;;;;22779:24:0;::::1;::::0;::::1;::::0;957:18:1;;22779:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22837:46;::::0;-1:-1:-1;;;22837:46:0;;-1:-1:-1;;;;;8812:32:1;;;22837:46:0::1;::::0;::::1;8794:51:1::0;8861:18;;;8854:34;;;22752:66:0;;-1:-1:-1;22837:23:0;;::::1;::::0;::::1;::::0;8767:18:1;;22837:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22829:54:::0;22572:319;-1:-1:-1;;;;22572:319:0:o;12689:217::-;7936:6;;-1:-1:-1;;;;;7936:6:0;175:10;7936:22;7928:67;;;;-1:-1:-1;;;7928:67:0;;;;;;;:::i;:::-;12753:13:::1;::::0;::::1;::::0;::::1;;;12752:14;12744:50;;;::::0;-1:-1:-1;;;12744:50:0;;9351:2:1;12744:50:0::1;::::0;::::1;9333:21:1::0;9390:2;9370:18;;;9363:30;9429:25;9409:18;;;9402:53;9472:18;;12744:50:0::1;9149:347:1::0;12744:50:0::1;12805:13;:20:::0;;-1:-1:-1;;12836:18:0;;;;;12886:12:::1;12865:18;:33:::0;12689:217::o;4054:104::-;4110:13;4143:7;4136:14;;;;;:::i;15253:144::-;7936:6;;-1:-1:-1;;;;;7936:6:0;175:10;7936:22;7928:67;;;;-1:-1:-1;;;7928:67:0;;;;;;;:::i;:::-;15348:41:::1;15377:4;15383:5;15348:28;:41::i;:::-;15253:144:::0;;:::o;5760:413::-;175:10;5853:4;5897:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5897:34:0;;;;;;;;;;5950:35;;;;5942:85;;;;-1:-1:-1;;;5942:85:0;;9703:2:1;5942:85:0;;;9685:21:1;9742:2;9722:18;;;9715:30;9781:34;9761:18;;;9754:62;-1:-1:-1;;;9832:18:1;;;9825:35;9877:19;;5942:85:0;9501:401:1;5942:85:0;6063:67;175:10;6086:7;6114:15;6095:16;:34;6063:8;:67::i;:::-;-1:-1:-1;6161:4:0;;5760:413;-1:-1:-1;;;5760:413:0:o;4518:175::-;4604:4;4621:42;175:10;4645:9;4656:6;4621:9;:42::i;13694:120::-;7936:6;;-1:-1:-1;;;;;7936:6:0;175:10;7936:22;7928:67;;;;-1:-1:-1;;;7928:67:0;;;;;;;:::i;:::-;13775:22:::1;:31:::0;13694:120::o;16105:132::-;7936:6;;-1:-1:-1;;;;;7936:6:0;175:10;7936:22;7928:67;;;;-1:-1:-1;;;7928:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16190:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:39;;-1:-1:-1;;16190:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16105:132::o;14279:229::-;7936:6;;-1:-1:-1;;;;;7936:6:0;175:10;7936:22;7928:67;;;;-1:-1:-1;;;7928:67:0;;;;;;;:::i;:::-;14401:4:::1;14395;14375:13;4355:12:::0;;;4267:108;14375:13:::1;:17;::::0;14391:1:::1;14375:17;:::i;:::-;:24;;;;:::i;:::-;14374:31;;;;:::i;:::-;14364:6;:41;;14356:98;;;::::0;-1:-1:-1;;;14356:98:0;;10109:2:1;14356:98:0::1;::::0;::::1;10091:21:1::0;10148:2;10128:18;;;10121:30;10187:34;10167:18;;;10160:62;-1:-1:-1;;;10238:18:1;;;10231:42;10290:19;;14356:98:0::1;9907:408:1::0;14356:98:0::1;14483:17;:6:::0;14493::::1;14483:17;:::i;:::-;14465:15;:35:::0;-1:-1:-1;14279:229:0:o;14578:346::-;7936:6;;-1:-1:-1;;;;;7936:6:0;175:10;7936:22;7928:67;;;;-1:-1:-1;;;7928:67:0;;;;;;;:::i;:::-;14701:6:::1;14681:13;4355:12:::0;;;4267:108;14681:13:::1;:17;::::0;14697:1:::1;14681:17;:::i;:::-;:26;;;;:::i;:::-;14668:9;:39;;14660:105;;;::::0;-1:-1:-1;;;14660:105:0;;10522:2:1;14660:105:0::1;::::0;::::1;10504:21:1::0;10561:2;10541:18;;;10534:30;10600:34;10580:18;;;10573:62;-1:-1:-1;;;10651:18:1;;;10644:51;10712:19;;14660:105:0::1;10320:417:1::0;14660:105:0::1;14816:4;14796:13;4355:12:::0;;;4267:108;14796:13:::1;:17;::::0;14812:1:::1;14796:17;:::i;:::-;:24;;;;:::i;:::-;14783:9;:37;;14775:102;;;::::0;-1:-1:-1;;;14775:102:0;;10944:2:1;14775:102:0::1;::::0;::::1;10926:21:1::0;10983:2;10963:18;;;10956:30;11022:34;11002:18;;;10995:62;-1:-1:-1;;;11073:18:1;;;11066:50;11133:19;;14775:102:0::1;10742:416:1::0;14775:102:0::1;14887:18;:30:::0;14578:346::o;14048:223::-;7936:6;;-1:-1:-1;;;;;7936:6:0;175:10;7936:22;7928:67;;;;-1:-1:-1;;;7928:67:0;;;;;;;:::i;:::-;14168:4:::1;14162;14142:13;4355:12:::0;;;4267:108;14142:13:::1;:17;::::0;14158:1:::1;14142:17;:::i;:::-;:24;;;;:::i;:::-;14141:31;;;;:::i;:::-;14131:6;:41;;14123:96;;;::::0;-1:-1:-1;;;14123:96:0;;11365:2:1;14123:96:0::1;::::0;::::1;11347:21:1::0;11404:2;11384:18;;;11377:30;11443:34;11423:18;;;11416:62;-1:-1:-1;;;11494:18:1;;;11487:40;11544:19;;14123:96:0::1;11163:406:1::0;14123:96:0::1;14246:17;:6:::0;14256::::1;14246:17;:::i;:::-;14230:13;:33:::0;-1:-1:-1;14048:223:0:o;13212:110::-;7936:6;;-1:-1:-1;;;;;7936:6:0;175:10;7936:22;7928:67;;;;-1:-1:-1;;;7928:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13296:11:0;;;::::1;;::::0;;;:3:::1;:11;::::0;;;;:18;;-1:-1:-1;;13296:18:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13212:110::o;13590:98::-;7936:6;;-1:-1:-1;;;;;7936:6:0;175:10;7936:22;7928:67;;;;-1:-1:-1;;;7928:67:0;;;;;;;:::i;:::-;13652:20:::1;:28:::0;;-1:-1:-1;;13652:28:0::1;::::0;;13590:98::o;8181:244::-;7936:6;;-1:-1:-1;;;;;7936:6:0;175:10;7936:22;7928:67;;;;-1:-1:-1;;;7928:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8270:22:0;::::1;8262:73;;;::::0;-1:-1:-1;;;8262:73:0;;11776:2:1;8262:73:0::1;::::0;::::1;11758:21:1::0;11815:2;11795:18;;;11788:30;11854:34;11834:18;;;11827:62;-1:-1:-1;;;11905:18:1;;;11898:36;11951:19;;8262:73:0::1;11574:402:1::0;8262:73:0::1;8372:6;::::0;8351:38:::1;::::0;-1:-1:-1;;;;;8351:38:0;;::::1;::::0;8372:6:::1;::::0;8351:38:::1;::::0;8372:6:::1;::::0;8351:38:::1;8400:6;:17:::0;;-1:-1:-1;;;;;;8400:17:0::1;-1:-1:-1::0;;;;;8400:17:0;;;::::1;::::0;;;::::1;::::0;;8181:244::o;22961:160::-;7936:6;;-1:-1:-1;;;;;7936:6:0;175:10;7936:22;7928:67;;;;-1:-1:-1;;;7928:67:0;;;;;;;:::i;:::-;23055:58:::1;::::0;23019:12:::1;::::0;23063:10:::1;::::0;23087:21:::1;::::0;23019:12;23055:58;23019:12;23055:58;23087:21;23063:10;23055:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7102:380:::0;-1:-1:-1;;;;;7238:19:0;;7230:68;;;;-1:-1:-1;;;7230:68:0;;12393:2:1;7230:68:0;;;12375:21:1;12432:2;12412:18;;;12405:30;12471:34;12451:18;;;12444:62;-1:-1:-1;;;12522:18:1;;;12515:34;12566:19;;7230:68:0;12191:400:1;7230:68:0;-1:-1:-1;;;;;7317:21:0;;7309:68;;;;-1:-1:-1;;;7309:68:0;;12798:2:1;7309:68:0;;;12780:21:1;12837:2;12817:18;;;12810:30;12876:34;12856:18;;;12849:62;-1:-1:-1;;;12927:18:1;;;12920:32;12969:19;;7309:68:0;12596:398:1;7309:68:0;-1:-1:-1;;;;;7390:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7442:32;;2970:25:1;;;7442:32:0;;2943:18:1;7442:32:0;;;;;;;7102:380;;;:::o;16245:3990::-;-1:-1:-1;;;;;16345:18:0;;16337:68;;;;-1:-1:-1;;;16337:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16424:16:0;;16416:64;;;;-1:-1:-1;;;16416:64:0;;;;;;;:::i;:::-;16508:1;16499:6;:10;16491:52;;;;-1:-1:-1;;;16491:52:0;;14011:2:1;16491:52:0;;;13993:21:1;14050:2;14030:18;;;14023:30;14089:31;14069:18;;;14062:59;14138:18;;16491:52:0;13809:353:1;16491:52:0;7874:6;;-1:-1:-1;;;;;7874:6:0;16558:9;:20;16554:106;;16594:33;16610:4;16616:2;16620:6;16594:15;:33::i;:::-;16245:3990;;;:::o;16554:106::-;16674:13;;;;;;;16670:132;;-1:-1:-1;;;;;16711:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;16740:23:0;;;;;;:19;:23;;;;;;;;16711:52;16703:87;;;;-1:-1:-1;;;16703:87:0;;14369:2:1;16703:87:0;;;14351:21:1;14408:2;14388:18;;;14381:30;-1:-1:-1;;;14427:18:1;;;14420:52;14489:18;;16703:87:0;14167:346:1;16703:87:0;-1:-1:-1;;;;;16823:9:0;;;;;;:3;:9;;;;;;;;16822:10;:22;;;;-1:-1:-1;;;;;;16837:7:0;;;;;;:3;:7;;;;;;;;16836:8;16822:22;16814:105;;;;-1:-1:-1;;;16814:105:0;;14720:2:1;16814:105:0;;;14702:21:1;14759:2;14739:18;;;14732:30;14798:34;14778:18;;;14771:62;14869:34;14849:18;;;14842:62;-1:-1:-1;;;14920:19:1;;;14913:37;14967:19;;16814:105:0;14518:474:1;16814:105:0;16942:14;;;;:77;;;;;17001:18;;16976:22;;:43;;;;:::i;:::-;16960:12;:59;;16942:77;16939:1716;;;7874:6;;-1:-1:-1;;;;;17039:15:0;;;7874:6;;17039:15;;;;:32;;-1:-1:-1;7874:6:0;;-1:-1:-1;;;;;17058:13:0;;;7874:6;;17058:13;;17039:32;:52;;;;-1:-1:-1;;;;;;17075:16:0;;;;17039:52;:77;;;;-1:-1:-1;;;;;;17095:21:0;;17109:6;17095:21;;17039:77;:107;;;;-1:-1:-1;;;;;;17121:25:0;;;;;;:19;:25;;;;;;;;17120:26;17039:107;:135;;;;-1:-1:-1;;;;;;17151:23:0;;;;;;:19;:23;;;;;;;;17150:24;17039:135;17035:1609;;;17332:20;;;;17328:506;;;17394:9;;-1:-1:-1;;;;;17380:24:0;;;17394:9;;17380:24;;;;:49;;-1:-1:-1;17422:6:0;;-1:-1:-1;;;;;17408:21:0;;;17422:6;;17408:21;;17380:49;17376:439;;;17507:16;17522:1;17507:12;:16;:::i;:::-;17494:9;17465:39;;;;:28;:39;;;;;;:58;:113;;;;-1:-1:-1;17562:16:0;17577:1;17562:12;:16;:::i;:::-;-1:-1:-1;;;;;17527:32:0;;;;;;:28;:32;;;;;;:51;17465:113;17457:179;;;;-1:-1:-1;;;17457:179:0;;15332:2:1;17457:179:0;;;15314:21:1;15371:2;15351:18;;;15344:30;15410:34;15390:18;;;15383:62;-1:-1:-1;;;15461:18:1;;;15454:51;15522:19;;17457:179:0;15130:417:1;17457:179:0;17692:9;17663:39;;;;:28;:39;;;;;;17705:12;17663:54;;;;-1:-1:-1;;;;;17744:32:0;;;;;;:47;17376:439;-1:-1:-1;;;;;17890:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;17926:35:0;;;;;;:31;:35;;;;;;;;17925:36;17890:71;17886:743;;;18008:12;;17998:6;:22;;17990:75;;;;-1:-1:-1;;;17990:75:0;;15754:2:1;17990:75:0;;;15736:21:1;15793:2;15773:18;;;15766:30;15832:34;15812:18;;;15805:62;-1:-1:-1;;;15883:18:1;;;15876:38;15931:19;;17990:75:0;15552:404:1;17990:75:0;18126:15;;-1:-1:-1;;;;;4484:18:0;;4457:7;4484:18;;;;;;;;;;;18100:22;;:6;:22;:::i;:::-;:41;;18092:78;;;;-1:-1:-1;;;18092:78:0;;16163:2:1;18092:78:0;;;16145:21:1;16202:2;16182:18;;;16175:30;-1:-1:-1;;;16221:18:1;;;16214:54;16285:18;;18092:78:0;15961:348:1;18092:78:0;17886:743;;;-1:-1:-1;;;;;18246:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;18280:37:0;;;;;;:31;:37;;;;;;;;18279:38;18246:71;18242:387;;;18364:13;;18354:6;:23;;18346:78;;;;-1:-1:-1;;;18346:78:0;;16516:2:1;18346:78:0;;;16498:21:1;16555:2;16535:18;;;16528:30;16594:34;16574:18;;;16567:62;-1:-1:-1;;;16645:18:1;;;16638:40;16695:19;;18346:78:0;16314:406:1;18242:387:0;-1:-1:-1;;;;;18472:35:0;;;;;;:31;:35;;;;;;;;18467:162;;18565:15;;-1:-1:-1;;;;;4484:18:0;;4457:7;4484:18;;;;;;;;;;;18539:22;;:6;:22;:::i;:::-;:41;;18531:78;;;;-1:-1:-1;;;18531:78:0;;16163:2:1;18531:78:0;;;16145:21:1;16202:2;16182:18;;;16175:30;-1:-1:-1;;;16221:18:1;;;16214:54;16285:18;;18531:78:0;15961:348:1;18531:78:0;18716:4;18667:28;4484:18;;;;;;;;;;;18774;;18750:42;;;;;;;18808:22;;-1:-1:-1;18819:11:0;;;;;;;18808:22;:35;;;;-1:-1:-1;18835:8:0;;-1:-1:-1;;;18835:8:0;;;;18834:9;18808:35;:71;;;;-1:-1:-1;;;;;;18848:31:0;;;;;;:25;:31;;;;;;;;18847:32;18808:71;:101;;;;-1:-1:-1;;;;;;18884:25:0;;;;;;:19;:25;;;;;;;;18883:26;18808:101;:129;;;;-1:-1:-1;;;;;;18914:23:0;;;;;;:19;:23;;;;;;;;18913:24;18808:129;18805:236;;;18954:8;:15;;-1:-1:-1;;;;18954:15:0;-1:-1:-1;;;18954:15:0;;;18986:10;:8;:10::i;:::-;19013:8;:16;;-1:-1:-1;;;;19013:16:0;;;18805:236;-1:-1:-1;;;;;19171:25:0;;19053:12;19171:25;;;:19;:25;;;;;;19068:4;;19171:25;;;:52;;-1:-1:-1;;;;;;19200:23:0;;;;;;:19;:23;;;;;;;;19171:52;19168:99;;;-1:-1:-1;19250:5:0;19168:99;19279:12;19383:7;19380:802;;;-1:-1:-1;;;;;19434:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;19483:1;19467:13;;:17;19434:50;19430:608;;;19536:3;19520:13;;19511:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;19504:35;;19606:13;;19587:16;;19580:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;19558:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;19688:13:0;;19668:17;;19661:24;;:4;:24;:::i;:::-;:40;;;;:::i;:::-;19638:19;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;19430:608:0;;-1:-1:-1;19430:608:0;;-1:-1:-1;;;;;19764:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;19814:1;19799:12;;:16;19764:51;19761:277;;;19864:3;19849:12;;19840:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;19833:34;;19930:12;;19912:15;;19905:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;19883:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;20010:12:0;;19991:16;;19984:23;;:4;:23;:::i;:::-;:38;;;;:::i;:::-;19961:19;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;19761:277:0;20057:8;;20054:89;;20085:42;20101:4;20115;20122;20085:15;:42::i;:::-;20156:14;20166:4;20156:14;;:::i;:::-;;;19380:802;20194:33;20210:4;20216:2;20220:6;20194:15;:33::i;:::-;16324:3911;;;;16245:3990;;;:::o;21339:1225::-;21422:4;21378:23;4484:18;;;;;;;;;;;21378:50;;21439:25;21488:19;;21467:18;;:40;;;;:::i;:::-;21439:68;-1:-1:-1;21523:20:0;;;:46;;-1:-1:-1;21547:22:0;;21523:46;21520:60;;;21572:7;;21339:1225::o;21520:60::-;21613:18;;:23;;21634:2;21613:23;:::i;:::-;21595:15;:41;21592:113;;;21670:18;;:23;;21691:2;21670:23;:::i;:::-;21652:41;;21592:113;21717:12;21791:23;21876:1;21856:17;21835:18;;21817:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;21791:86;-1:-1:-1;21890:51:0;21907:33;21791:86;21907:15;:33;:::i;:::-;21890:16;:51::i;:::-;22140:18;;21975:21;;;;21954:18;;22140:20;;22159:1;;22140:20;:::i;:::-;22119:42;;:17;:42;:::i;:::-;22096:19;;22083:32;;:10;:32;:::i;:::-;:79;;;;:::i;:::-;22056:106;-1:-1:-1;22175:35:0;22056:106;22175:35;;:::i;:::-;22244:1;22223:18;:22;;;22256:19;:23;22175:35;-1:-1:-1;22295:19:0;;;;;:42;;;22336:1;22318:15;:19;22295:42;22292:119;;;22353:46;22366:15;22383;22353:12;:46::i;:::-;22426:21;:25;22423:134;;22488:17;;22480:65;;-1:-1:-1;;;;;22488:17:0;;;;22519:21;;22480:65;;;;22519:21;22488:17;22480:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;21339:1225:0:o;15405:184::-;-1:-1:-1;;;;;15488:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;15488:39:0;;;;;;;15540;15488:31;:39;15540:26;:39::i;6181:614::-;-1:-1:-1;;;;;6321:20:0;;6313:70;;;;-1:-1:-1;;;6313:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6402:23:0;;6394:71;;;;-1:-1:-1;;;6394:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6502:17:0;;6478:21;6502:17;;;;;;;;;;;6538:23;;;;6530:74;;;;-1:-1:-1;;;6530:74:0;;16927:2:1;6530:74:0;;;16909:21:1;16966:2;16946:18;;;16939:30;17005:34;16985:18;;;16978:62;-1:-1:-1;;;17056:18:1;;;17049:36;17102:19;;6530:74:0;16725:402:1;6530:74:0;-1:-1:-1;;;;;6640:17:0;;;:9;:17;;;;;;;;;;;6660:22;;;6640:42;;6704:20;;;;;;;;:30;;6676:6;;6640:9;6704:30;;6676:6;;6704:30;:::i;:::-;;;;;;;;6769:9;-1:-1:-1;;;;;6752:35:0;6761:6;-1:-1:-1;;;;;6752:35:0;;6780:6;6752:35;;;;2970:25:1;;2958:2;2943:18;;2824:177;6752:35:0;;;;;;;;6302:493;6181:614;;;:::o;20241:573::-;20393:16;;;20407:1;20393:16;;;;;;;;20369:21;;20393:16;;;;;;;;;;-1:-1:-1;20393:16:0;20369:40;;20438:4;20420;20425:1;20420:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20420:23:0;;;:7;;;;;;;;;;:23;;;;20464:9;;:16;;;-1:-1:-1;;;20464:16:0;;;;:9;;;;;:14;;:16;;;;;20420:7;;20464:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20454:4;20459:1;20454:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20454:26:0;;;:7;;;;;;;;;:26;20525:9;;20493:56;;20510:4;;20525:9;20537:11;20493:8;:56::i;:::-;20588:9;;:218;;-1:-1:-1;;;20588:218:0;;-1:-1:-1;;;;;20588:9:0;;;;:60;;:218;;20663:11;;20588:9;;20733:4;;20760;;20780:15;;20588:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20296:518;20241:573;:::o;20822:509::-;21002:9;;20970:56;;20987:4;;-1:-1:-1;;;;;21002:9:0;21014:11;20970:8;:56::i;:::-;21069:9;;:254;;-1:-1:-1;;;21069:254:0;;21135:4;21069:254;;;18846:34:1;18896:18;;;18889:34;;;21069:9:0;18939:18:1;;;18932:34;;;18982:18;;;18975:34;21275:6:0;19025:19:1;;;19018:44;21297:15:0;19078:19:1;;;19071:35;-1:-1:-1;;;;;21069:9:0;;;;:25;;21102:9;;18780:19:1;;21069:254:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20822:509;;:::o;14:248:1:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;267:548::-;379:4;408:2;437;426:9;419:21;469:6;463:13;512:6;507:2;496:9;492:18;485:34;537:1;547:140;561:6;558:1;555:13;547:140;;;656:14;;;652:23;;646:30;622:17;;;641:2;618:26;611:66;576:10;;547:140;;;551:3;736:1;731:2;722:6;711:9;707:22;703:31;696:42;806:2;799;795:7;790:2;782:6;778:15;774:29;763:9;759:45;755:54;747:62;;;;267:548;;;;:::o;1046:131::-;-1:-1:-1;;;;;1121:31:1;;1111:42;;1101:70;;1167:1;1164;1157:12;1101:70;1046:131;:::o;1182:315::-;1250:6;1258;1311:2;1299:9;1290:7;1286:23;1282:32;1279:52;;;1327:1;1324;1317:12;1279:52;1366:9;1353:23;1385:31;1410:5;1385:31;:::i;:::-;1435:5;1487:2;1472:18;;;;1459:32;;-1:-1:-1;;;1182:315:1:o;1694:247::-;1753:6;1806:2;1794:9;1785:7;1781:23;1777:32;1774:52;;;1822:1;1819;1812:12;1774:52;1861:9;1848:23;1880:31;1905:5;1880:31;:::i;:::-;1930:5;1694:247;-1:-1:-1;;;1694:247:1:o;1946:118::-;2032:5;2025:13;2018:21;2011:5;2008:32;1998:60;;2054:1;2051;2044:12;2069:750;2161:6;2169;2177;2230:2;2218:9;2209:7;2205:23;2201:32;2198:52;;;2246:1;2243;2236:12;2198:52;2286:9;2273:23;2315:18;2356:2;2348:6;2345:14;2342:34;;;2372:1;2369;2362:12;2342:34;2410:6;2399:9;2395:22;2385:32;;2455:7;2448:4;2444:2;2440:13;2436:27;2426:55;;2477:1;2474;2467:12;2426:55;2517:2;2504:16;2543:2;2535:6;2532:14;2529:34;;;2559:1;2556;2549:12;2529:34;2614:7;2607:4;2597:6;2594:1;2590:14;2586:2;2582:23;2578:34;2575:47;2572:67;;;2635:1;2632;2625:12;2572:67;2666:4;2658:13;;;;-1:-1:-1;2690:6:1;-1:-1:-1;;2731:20:1;;2718:34;2761:28;2718:34;2761:28;:::i;:::-;2808:5;2798:15;;;2069:750;;;;;:::o;3006:456::-;3083:6;3091;3099;3152:2;3140:9;3131:7;3127:23;3123:32;3120:52;;;3168:1;3165;3158:12;3120:52;3207:9;3194:23;3226:31;3251:5;3226:31;:::i;:::-;3276:5;-1:-1:-1;3333:2:1;3318:18;;3305:32;3346:33;3305:32;3346:33;:::i;:::-;3006:456;;3398:7;;-1:-1:-1;;;3452:2:1;3437:18;;;;3424:32;;3006:456::o;3467:180::-;3526:6;3579:2;3567:9;3558:7;3554:23;3550:32;3547:52;;;3595:1;3592;3585:12;3547:52;-1:-1:-1;3618:23:1;;3467:180;-1:-1:-1;3467:180:1:o;4049:382::-;4114:6;4122;4175:2;4163:9;4154:7;4150:23;4146:32;4143:52;;;4191:1;4188;4181:12;4143:52;4230:9;4217:23;4249:31;4274:5;4249:31;:::i;:::-;4299:5;-1:-1:-1;4356:2:1;4341:18;;4328:32;4369:30;4328:32;4369:30;:::i;:::-;4418:7;4408:17;;;4049:382;;;;;:::o;4436:388::-;4504:6;4512;4565:2;4553:9;4544:7;4540:23;4536:32;4533:52;;;4581:1;4578;4571:12;4533:52;4620:9;4607:23;4639:31;4664:5;4639:31;:::i;:::-;4689:5;-1:-1:-1;4746:2:1;4731:18;;4718:32;4759:33;4718:32;4759:33;:::i;4829:356::-;5031:2;5013:21;;;5050:18;;;5043:30;5109:34;5104:2;5089:18;;5082:62;5176:2;5161:18;;4829:356::o;5190:127::-;5251:10;5246:3;5242:20;5239:1;5232:31;5282:4;5279:1;5272:15;5306:4;5303:1;5296:15;5322:125;5387:9;;;5408:10;;;5405:36;;;5421:18;;:::i;5452:380::-;5531:1;5527:12;;;;5574;;;5595:61;;5649:4;5641:6;5637:17;5627:27;;5595:61;5702:2;5694:6;5691:14;5671:18;5668:38;5665:161;;5748:10;5743:3;5739:20;5736:1;5729:31;5783:4;5780:1;5773:15;5811:4;5808:1;5801:15;5665:161;;5452:380;;;:::o;5837:127::-;5898:10;5893:3;5889:20;5886:1;5879:31;5929:4;5926:1;5919:15;5953:4;5950:1;5943:15;5969:135;6008:3;6029:17;;;6026:43;;6049:18;;:::i;:::-;-1:-1:-1;6096:1:1;6085:13;;5969:135::o;6518:168::-;6591:9;;;6622;;6639:15;;;6633:22;;6619:37;6609:71;;6660:18;;:::i;6691:217::-;6731:1;6757;6747:132;;6801:10;6796:3;6792:20;6789:1;6782:31;6836:4;6833:1;6826:15;6864:4;6861:1;6854:15;6747:132;-1:-1:-1;6893:9:1;;6691:217::o;8431:184::-;8501:6;8554:2;8542:9;8533:7;8529:23;8525:32;8522:52;;;8570:1;8567;8560:12;8522:52;-1:-1:-1;8593:16:1;;8431:184;-1:-1:-1;8431:184:1:o;8899:245::-;8966:6;9019:2;9007:9;8998:7;8994:23;8990:32;8987:52;;;9035:1;9032;9025:12;8987:52;9067:9;9061:16;9086:28;9108:5;9086:28;:::i;12999:401::-;13201:2;13183:21;;;13240:2;13220:18;;;13213:30;13279:34;13274:2;13259:18;;13252:62;-1:-1:-1;;;13345:2:1;13330:18;;13323:35;13390:3;13375:19;;12999:401::o;13405:399::-;13607:2;13589:21;;;13646:2;13626:18;;;13619:30;13685:34;13680:2;13665:18;;13658:62;-1:-1:-1;;;13751:2:1;13736:18;;13729:33;13794:3;13779:19;;13405:399::o;14997:128::-;15064:9;;;15085:11;;;15082:37;;;15099:18;;:::i;17264:251::-;17334:6;17387:2;17375:9;17366:7;17362:23;17358:32;17355:52;;;17403:1;17400;17393:12;17355:52;17435:9;17429:16;17454:31;17479:5;17454:31;:::i;17520:980::-;17782:4;17830:3;17819:9;17815:19;17861:6;17850:9;17843:25;17887:2;17925:6;17920:2;17909:9;17905:18;17898:34;17968:3;17963:2;17952:9;17948:18;17941:31;17992:6;18027;18021:13;18058:6;18050;18043:22;18096:3;18085:9;18081:19;18074:26;;18135:2;18127:6;18123:15;18109:29;;18156:1;18166:195;18180:6;18177:1;18174:13;18166:195;;;18245:13;;-1:-1:-1;;;;;18241:39:1;18229:52;;18336:15;;;;18301:12;;;;18277:1;18195:9;18166:195;;;-1:-1:-1;;;;;;;18417:32:1;;;;18412:2;18397:18;;18390:60;-1:-1:-1;;;18481:3:1;18466:19;18459:35;18378:3;17520:980;-1:-1:-1;;;17520:980:1:o;19117:306::-;19205:6;19213;19221;19274:2;19262:9;19253:7;19249:23;19245:32;19242:52;;;19290:1;19287;19280:12;19242:52;19319:9;19313:16;19303:26;;19369:2;19358:9;19354:18;19348:25;19338:35;;19413:2;19402:9;19398:18;19392:25;19382:35;;19117:306;;;;;:::o

Swarm Source

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