ETH Price: $3,289.02 (+0.73%)
Gas: 20 Gwei

Token

ERC20 ***
 

Overview

Max Total Supply

1,000,000,000 ERC20 ***

Holders

47

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
15,000,000 ERC20 ***

Value
$0.00
0x85ece6519a3eec9f4175556a5248dc65d248532c
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:
BAIT

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-10
*/

// SPDX-License-Identifier: MIT   

// https://basedai.technology t.me/basedaitech twitter.com/basedaitech 


pragma solidity 0.8.15;

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 _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), 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 BAIT 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 marketingAddress;
    address devAddress;

    uint256 public tradingActiveBlock = 0; // 0 means trading is not active
    uint256 public blockForPenaltyEnd;
    mapping (address => bool) public boughtEarly;
    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

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;
    uint256 public buyBurnFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;
    uint256 public sellBurnFee;

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
    uint256 public tokensForBurn;

    /******************/

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

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event EnabledTrading();

    event RemovedLimits();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedMarketingAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

    event BuyBackTriggered(uint256 amount);

    event OwnerForcedSwapBack(uint256 timestamp);

    event CaughtEarlyBuyer(address sniper);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("BasedAI Tech", "BAIT") {

        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 * 1 / 100;
        maxSellAmount = totalSupply *  1/ 100;
        maxWalletAmount = totalSupply * 1 / 100;
        swapTokensAtAmount = totalSupply * 5 / 10000;

        buyMarketingFee = 3;
        buyLiquidityFee = 0;
        buyDevFee = 3;
        buyBurnFee = 0;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee + buyBurnFee;

        sellMarketingFee = 6;
        sellLiquidityFee = 0;
        sellDevFee = 6;
        sellBurnFee = 0;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee + sellBurnFee;

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

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

        marketingAddress = 0xaF46c47cD1F76AaD75b6636b5D5451703501857f ;
        devAddress = 0xc51448ac3146b7b78ed8ce8369946C5085EeBCDC;

        _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;
        blockForPenaltyEnd = tradingActiveBlock + 40 ;
        buyDevFee = 15;
        sellDevFee = 20;
        buyMarketingFee = 15;
        sellMarketingFee = 20;
        emit EnabledTrading();
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        emit RemovedLimits();
    }

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


    // 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;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

    function excludeFromMaxTransaction(address updAds, bool isEx) external onlyOwner {
        if(!isEx){
            require(updAds != lpPair, "Cannot remove uniswap pair from max txn");
        }
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner {
        require(pair != lpPair, "The pair cannot be removed from automatedMarketMakerPairs");

        _setAutomatedMarketMakerPair(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function returnToNormalTax() external onlyOwner{
        buyDevFee = 3;
        sellDevFee = 6;
        buyMarketingFee = 3;
        sellMarketingFee = 6;
    }

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

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee, uint256 _burnFee) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyBurnFee = _burnFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee + buyBurnFee;
    }

    function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee, uint256 _burnFee) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellBurnFee = _burnFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee + sellBurnFee;

    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(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(!tradingActive){
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
        }

        if(blockForPenaltyEnd > 0){
            require(!boughtEarly[from] || to == owner() || to == address(0xdead), "Bots cannot transfer tokens in or out except to owner or dead address.");
        }

        if(limitsInEffect && !earlyBuyPenaltyInEffect()){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]){

    
                //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){
            // bot/sniper penalty.
            if(earlyBuyPenaltyInEffect() && automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to] && buyTotalFees > 0){

                if(!boughtEarly[to]){
                    boughtEarly[to] = true;
                    botsCaught += 1;
                    emit CaughtEarlyBuyer(to);
                }

                fees = amount * 90 / 100;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
                tokensForBurn += fees * buyBurnFee / buyTotalFees;
            }

            // on sell
            else if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees / 100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
                tokensForDev += fees * sellDevFee / sellTotalFees;
                tokensForBurn += fees * sellBurnFee / sellTotalFees;
            }

            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount * buyTotalFees / 100;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
                tokensForBurn += fees * buyBurnFee / buyTotalFees;
            }

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

        	amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    function earlyBuyPenaltyInEffect() public view returns (bool){
        return block.number < blockForPenaltyEnd;
    }

    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 {

        if(tokensForBurn > 0 && balanceOf(address(this)) >= tokensForBurn) {
            _burn(address(this), tokensForBurn);
        }
        tokensForBurn = 0;

        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev;

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

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

        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 ethForMarketing = ethBalance * tokensForMarketing / (totalTokensToSwap - (tokensForLiquidity/2));
        uint256 ethForDev = ethBalance * tokensForDev / (totalTokensToSwap - (tokensForLiquidity/2));

        ethForLiquidity -= ethForMarketing + ethForDev;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;
        tokensForBurn = 0;

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

        (success,) = address(devAddress).call{value: ethForDev}("");

        (success,) = address(marketingAddress).call{value: address(this).balance}("");
    }



}

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":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniper","type":"address"}],"name":"CaughtEarlyBuyer","type":"event"},{"anonymous":false,"inputs":[],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedMarketingAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","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":[],"name":"blockForPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botsCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"boughtEarly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","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":"buyMarketingFee","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":"earlyBuyPenaltyInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"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":[],"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":"returnToNormalTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","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":[],"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":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","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":[{"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":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600e556012805462ffffff191660011790553480156200002557600080fd5b506040518060400160405280600c81526020016b084c2e6cac8829240a8cac6d60a31b815250604051806040016040528060048152602001631090525560e21b81525081600390816200007991906200085f565b5060046200008882826200085f565b50505060006200009d6200045760201b60201c565b600580546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062003484833981519152908290a350600980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051339291829163c45a0155916004808201926020929091908290030181865afa15801562000144573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200016a91906200092b565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001de91906200092b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200022c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025291906200092b565b600a80546001600160a01b0319166001600160a01b039290921691821790556200027e9060016200045b565b600a5462000297906001600160a01b03166001620004be565b6b033b2e3c9fd0803ce80000006064620002b382600162000973565b620002bf919062000995565b6006556064620002d182600162000973565b620002dd919062000995565b6007556064620002ef82600162000973565b620002fb919062000995565b6008556127106200030e82600562000973565b6200031a919062000995565b600b5560036015819055600060168190556017829055601881905590620003428282620009b8565b6200034e9190620009b8565b6200035a9190620009b8565b6014556006601a8190556000601b819055601c829055601d81905590620003828282620009b8565b6200038e9190620009b8565b6200039a9190620009b8565b601955620003aa8360016200045b565b620003b73060016200045b565b620003c661dead60016200045b565b620003d38360016200052a565b620003e03060016200052a565b620003ef61dead60016200052a565b600c80546001600160a01b031990811673af46c47cd1f76aad75b6636b5d5451703501857f17909155600d805490911673c51448ac3146b7b78ed8ce8369946c5085eebcdc179055620004438382620005d8565b6200044e83620006bd565b505050620009d3565b3390565b6001600160a01b038216600081815260236020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382166000908152602460205260409020805460ff1916821515179055620004ee82826200045b565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b03163314620005795760405162461bcd60e51b815260206004820181905260248201526000805160206200346483398151915260448201526064015b60405180910390fd5b6001600160a01b038216600081815260226020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006305760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000570565b8060026000828254620006449190620009b8565b90915550506001600160a01b0382166000908152602081905260408120805483929062000673908490620009b8565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620007085760405162461bcd60e51b8152602060048201819052602482015260008051602062003464833981519152604482015260640162000570565b6001600160a01b0381166200076f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000570565b6005546040516001600160a01b038084169216906000805160206200348483398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620007e557607f821691505b6020821081036200080657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200085a57600081815260208120601f850160051c81016020861015620008355750805b601f850160051c820191505b81811015620008565782815560010162000841565b5050505b505050565b81516001600160401b038111156200087b576200087b620007ba565b62000893816200088c8454620007d0565b846200080c565b602080601f831160018114620008cb5760008415620008b25750858301515b600019600386901b1c1916600185901b17855562000856565b600085815260208120601f198616915b82811015620008fc57888601518255948401946001909101908401620008db565b50858210156200091b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200093e57600080fd5b81516001600160a01b03811681146200095657600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156200099057620009906200095d565b500290565b600082620009b357634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620009ce57620009ce6200095d565b500190565b612a8180620009e36000396000f3fe6080604052600436106103395760003560e01c80638da5cb5b116101ab578063bbc0c742116100f7578063e71dc3f511610095578063ee40166e1161006f578063ee40166e14610924578063f11a24d31461093a578063f2fde38b14610950578063f63743421461097057600080fd5b8063e71dc3f5146108ce578063e7ad9fcd146108e4578063e800dff71461090457600080fd5b8063d85ba063116100d1578063d85ba06314610847578063dd62ed3e1461085d578063e2cd5fcd146108a3578063e2f45605146108b857600080fd5b8063bbc0c742146107e8578063c024666814610807578063d257b34f1461082757600080fd5b8063a0d82dc511610164578063a9059cbb1161013e578063a9059cbb1461076c578063aa4bde281461078c578063adb873bd146107a2578063b62496f5146107b857600080fd5b8063a0d82dc514610720578063a457c2d714610736578063a62068ce1461075657600080fd5b80638da5cb5b1461068b57806392136913146106a957806395d89b41146106bf5780639a7a23d6146106d45780639c3b4fdc146106f45780639fccce321461070a57600080fd5b80634a62bb6511610285578063715018a6116102235780637bce5a04116101fd5780637bce5a041461061a57806385ecfd281461063057806388e765ff146106605780638a8c523c1461067657600080fd5b8063715018a6146105d0578063751039fc146105e55780637571336a146105fa57600080fd5b80636a486a8e1161025f5780636a486a8e1461054e5780636b0a894c146105645780636ddd17131461057a57806370a082311461059a57600080fd5b80634a62bb651461050757806358a6d5311461052157806366d602ae1461053857600080fd5b80631d777856116102f25780632e6ed7ef116102cc5780632e6ed7ef14610489578063313ce567146104ab57806339509351146104c7578063452ed4f1146104e757600080fd5b80631d7778561461043d5780631f3fed8f1461045357806323b872dd1461046957600080fd5b806306fdde03146103455780630758d92414610370578063095ea7b3146103a857806310d5de53146103d857806318160ddd146104085780631a8145bb1461042757600080fd5b3661034057005b600080fd5b34801561035157600080fd5b5061035a610986565b6040516103679190612647565b60405180910390f35b34801561037c57600080fd5b50600954610390906001600160a01b031681565b6040516001600160a01b039091168152602001610367565b3480156103b457600080fd5b506103c86103c33660046126b4565b610a18565b6040519015158152602001610367565b3480156103e457600080fd5b506103c86103f33660046126e0565b60236020526000908152604090205460ff1681565b34801561041457600080fd5b506002545b604051908152602001610367565b34801561043357600080fd5b50610419601f5481565b34801561044957600080fd5b5061041960215481565b34801561045f57600080fd5b50610419601e5481565b34801561047557600080fd5b506103c8610484366004612704565b610a2e565b34801561049557600080fd5b506104a96104a4366004612745565b610add565b005b3480156104b757600080fd5b5060405160128152602001610367565b3480156104d357600080fd5b506103c86104e23660046126b4565b610b44565b3480156104f357600080fd5b50600a54610390906001600160a01b031681565b34801561051357600080fd5b506012546103c89060ff1681565b34801561052d57600080fd5b50600f5443106103c8565b34801561054457600080fd5b5061041960075481565b34801561055a57600080fd5b5061041960195481565b34801561057057600080fd5b5061041960115481565b34801561058657600080fd5b506012546103c89062010000900460ff1681565b3480156105a657600080fd5b506104196105b53660046126e0565b6001600160a01b031660009081526020819052604090205490565b3480156105dc57600080fd5b506104a9610b80565b3480156105f157600080fd5b506104a9610bf4565b34801561060657600080fd5b506104a9610615366004612777565b610c53565b34801561062657600080fd5b5061041960155481565b34801561063c57600080fd5b506103c861064b3660046126e0565b60106020526000908152604090205460ff1681565b34801561066c57600080fd5b5061041960065481565b34801561068257600080fd5b506104a9610d1b565b34801561069757600080fd5b506005546001600160a01b0316610390565b3480156106b557600080fd5b50610419601a5481565b3480156106cb57600080fd5b5061035a610e04565b3480156106e057600080fd5b506104a96106ef366004612777565b610e13565b34801561070057600080fd5b5061041960175481565b34801561071657600080fd5b5061041960205481565b34801561072c57600080fd5b50610419601c5481565b34801561074257600080fd5b506103c86107513660046126b4565b610f07565b34801561076257600080fd5b50610419600f5481565b34801561077857600080fd5b506103c86107873660046126b4565b610fa0565b34801561079857600080fd5b5061041960085481565b3480156107ae57600080fd5b50610419601d5481565b3480156107c457600080fd5b506103c86107d33660046126e0565b60246020526000908152604090205460ff1681565b3480156107f457600080fd5b506012546103c890610100900460ff1681565b34801561081357600080fd5b506104a9610822366004612777565b610fad565b34801561083357600080fd5b506104a96108423660046127b5565b611036565b34801561085357600080fd5b5061041960145481565b34801561086957600080fd5b506104196108783660046127ce565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156108af57600080fd5b506104a9611181565b3480156108c457600080fd5b50610419600b5481565b3480156108da57600080fd5b5061041960185481565b3480156108f057600080fd5b506104a96108ff366004612745565b6111c4565b34801561091057600080fd5b506104a961091f366004612777565b61122b565b34801561093057600080fd5b50610419600e5481565b34801561094657600080fd5b5061041960165481565b34801561095c57600080fd5b506104a961096b3660046126e0565b611280565b34801561097c57600080fd5b50610419601b5481565b606060038054610995906127fc565b80601f01602080910402602001604051908101604052809291908181526020018280546109c1906127fc565b8015610a0e5780601f106109e357610100808354040283529160200191610a0e565b820191906000526020600020905b8154815290600101906020018083116109f157829003601f168201915b5050505050905090565b6000610a2533848461136b565b50600192915050565b6000610a3b848484611490565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610ac55760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610ad2853385840361136b565b506001949350505050565b6005546001600160a01b03163314610b075760405162461bcd60e51b8152600401610abc90612836565b60158490556016839055601782905560188190558082610b278587612881565b610b319190612881565b610b3b9190612881565b60145550505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a25918590610b7b908690612881565b61136b565b6005546001600160a01b03163314610baa5760405162461bcd60e51b8152600401610abc90612836565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610c1e5760405162461bcd60e51b8152600401610abc90612836565b6012805460ff191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b03163314610c7d5760405162461bcd60e51b8152600401610abc90612836565b80610cf057600a546001600160a01b0390811690831603610cf05760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610abc565b6001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d455760405162461bcd60e51b8152600401610abc90612836565b601254610100900460ff1615610d9d5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610abc565b6012805462ffff0019166201010017905543600e819055610dbf906028612881565b600f90815560178190556014601c819055601591909155601a556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a1565b606060048054610995906127fc565b6005546001600160a01b03163314610e3d5760405162461bcd60e51b8152600401610abc90612836565b600a546001600160a01b0390811690831603610ec15760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610abc565b610ecb8282611ee1565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610f895760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610abc565b610f96338585840361136b565b5060019392505050565b6000610a25338484611490565b6005546001600160a01b03163314610fd75760405162461bcd60e51b8152600401610abc90612836565b6001600160a01b038216600081815260226020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146110605760405162461bcd60e51b8152600401610abc90612836565b620186a061106d60025490565b611078906001612899565b61108291906128b8565b8110156110ef5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610abc565b6103e86110fb60025490565b611106906001612899565b61111091906128b8565b81111561117c5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610abc565b600b55565b6005546001600160a01b031633146111ab5760405162461bcd60e51b8152600401610abc90612836565b600360178190556006601c819055601591909155601a55565b6005546001600160a01b031633146111ee5760405162461bcd60e51b8152600401610abc90612836565b601a849055601b839055601c829055601d819055808261120e8587612881565b6112189190612881565b6112229190612881565b60195550505050565b6005546001600160a01b031633146112555760405162461bcd60e51b8152600401610abc90612836565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146112aa5760405162461bcd60e51b8152600401610abc90612836565b6001600160a01b03811661130f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abc565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166113cd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610abc565b6001600160a01b03821661142e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610abc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166114b65760405162461bcd60e51b8152600401610abc906128da565b6001600160a01b0382166114dc5760405162461bcd60e51b8152600401610abc9061291f565b6000811161152c5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610abc565b601254610100900460ff166115bf576001600160a01b03831660009081526022602052604090205460ff168061157a57506001600160a01b03821660009081526022602052604090205460ff165b6115bf5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610abc565b600f5415611692576001600160a01b03831660009081526010602052604090205460ff1615806115fc57506005546001600160a01b038381169116145b8061161157506001600160a01b03821661dead145b6116925760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610abc565b60125460ff1680156116a65750600f544310155b156119a8576005546001600160a01b038481169116148015906116d757506005546001600160a01b03838116911614155b80156116eb57506001600160a01b03821615155b801561170257506001600160a01b03821661dead14155b801561172757506001600160a01b03831660009081526022602052604090205460ff16155b801561174c57506001600160a01b03821660009081526022602052604090205460ff16155b156119a8576001600160a01b03831660009081526024602052604090205460ff16801561179257506001600160a01b03821660009081526023602052604090205460ff16155b1561186e576006548111156117fa5760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610abc565b6008546001600160a01b0383166000908152602081905260409020546118209083612881565b11156118695760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610abc565b6119a8565b6001600160a01b03821660009081526024602052604090205460ff1680156118af57506001600160a01b03831660009081526023602052604090205460ff16155b15611919576007548111156118695760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610abc565b6001600160a01b03821660009081526023602052604090205460ff166119a8576008546001600160a01b03831660009081526020819052604090205461195f9083612881565b11156119a85760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610abc565b30600090815260208190526040902054600b54811080159081906119d4575060125462010000900460ff165b80156119ea5750600a54600160a01b900460ff16155b8015611a0f57506001600160a01b03851660009081526024602052604090205460ff16155b8015611a3457506001600160a01b03851660009081526022602052604090205460ff16155b8015611a5957506001600160a01b03841660009081526022602052604090205460ff16155b15611a8757600a805460ff60a01b1916600160a01b179055611a79611f0f565b600a805460ff60a01b191690555b6001600160a01b03851660009081526022602052604090205460019060ff1680611ac957506001600160a01b03851660009081526022602052604090205460ff165b15611ad2575060005b60008115611ecd57600f5443108015611b0357506001600160a01b03871660009081526024602052604090205460ff165b8015611b2857506001600160a01b03861660009081526024602052604090205460ff16155b8015611b3657506000601454115b15611cb6576001600160a01b03861660009081526010602052604090205460ff16611bd6576001600160a01b0386166000908152601060205260408120805460ff191660019081179091556011805491929091611b94908490612881565b90915550506040516001600160a01b03871681527f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a9060200160405180910390a15b6064611be386605a612899565b611bed91906128b8565b905060145460165482611c009190612899565b611c0a91906128b8565b601f6000828254611c1b9190612881565b9091555050601454601554611c309083612899565b611c3a91906128b8565b601e6000828254611c4b9190612881565b9091555050601454601754611c609083612899565b611c6a91906128b8565b60206000828254611c7b9190612881565b9091555050601454601854611c909083612899565b611c9a91906128b8565b60216000828254611cab9190612881565b90915550611eaf9050565b6001600160a01b03861660009081526024602052604090205460ff168015611ce057506000601954115b15611da257606460195486611cf59190612899565b611cff91906128b8565b9050601954601b5482611d129190612899565b611d1c91906128b8565b601f6000828254611d2d9190612881565b9091555050601954601a54611d429083612899565b611d4c91906128b8565b601e6000828254611d5d9190612881565b9091555050601954601c54611d729083612899565b611d7c91906128b8565b60206000828254611d8d9190612881565b9091555050601954601d54611c909083612899565b6001600160a01b03871660009081526024602052604090205460ff168015611dcc57506000601454115b15611eaf57606460145486611de19190612899565b611deb91906128b8565b905060145460165482611dfe9190612899565b611e0891906128b8565b601f6000828254611e199190612881565b9091555050601454601554611e2e9083612899565b611e3891906128b8565b601e6000828254611e499190612881565b9091555050601454601754611e5e9083612899565b611e6891906128b8565b60206000828254611e799190612881565b9091555050601454601854611e8e9083612899565b611e9891906128b8565b60216000828254611ea99190612881565b90915550505b8015611ec057611ec0873083612159565b611eca8186612962565b94505b611ed8878787612159565b50505050505050565b6001600160a01b0382166000908152602460205260409020805460ff1916821515179055610ecb82826122ae565b6000602154118015611f3257506021543060009081526020819052604090205410155b15611f4357611f4330602154612311565b600060218190553081526020819052604081205490506000602054601e54601f54611f6e9190612881565b611f789190612881565b9050811580611f85575080155b15611f8e575050565b600b54611f9c906014612899565b821115611fb457600b54611fb1906014612899565b91505b600080600283601f5486611fc89190612899565b611fd291906128b8565b611fdc91906128b8565b9050611ff0611feb8286612962565b61243b565b601f5447908190600090612006906002906128b8565b6120109087612962565b601e5461201d9085612899565b61202791906128b8565b905060006002601f5461203a91906128b8565b6120449088612962565b6020546120519086612899565b61205b91906128b8565b90506120678183612881565b6120719084612962565b6000601f819055601e8190556020819055602155925084158015906120965750600083115b156120a5576120a58584612595565b600d546040516001600160a01b03909116908290600081818185875af1925050503d80600081146120f2576040519150601f19603f3d011682016040523d82523d6000602084013e6120f7565b606091505b5050600c546040519197506001600160a01b0316904790600081818185875af1925050503d8060008114612147576040519150601f19603f3d011682016040523d82523d6000602084013e61214c565b606091505b5050505050505050505050565b6001600160a01b03831661217f5760405162461bcd60e51b8152600401610abc906128da565b6001600160a01b0382166121a55760405162461bcd60e51b8152600401610abc9061291f565b6001600160a01b0383166000908152602081905260409020548181101561221d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610abc565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612254908490612881565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122a091815260200190565b60405180910390a350505050565b6001600160a01b038216600081815260236020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382166123715760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610abc565b6001600160a01b038216600090815260208190526040902054818110156123e55760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610abc565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611483565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061247057612470612979565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156124c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ed919061298f565b8160018151811061250057612500612979565b6001600160a01b039283166020918202929092010152600954612526913091168461136b565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac9479061255f9085906000908690309042906004016129ac565b600060405180830381600087803b15801561257957600080fd5b505af115801561258d573d6000803e3d6000fd5b505050505050565b6009546125ad9030906001600160a01b03168461136b565b60095460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af115801561261b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126409190612a1d565b5050505050565b600060208083528351808285015260005b8181101561267457858101830151858201604001528201612658565b81811115612686576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146126b157600080fd5b50565b600080604083850312156126c757600080fd5b82356126d28161269c565b946020939093013593505050565b6000602082840312156126f257600080fd5b81356126fd8161269c565b9392505050565b60008060006060848603121561271957600080fd5b83356127248161269c565b925060208401356127348161269c565b929592945050506040919091013590565b6000806000806080858703121561275b57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561278a57600080fd5b82356127958161269c565b9150602083013580151581146127aa57600080fd5b809150509250929050565b6000602082840312156127c757600080fd5b5035919050565b600080604083850312156127e157600080fd5b82356127ec8161269c565b915060208301356127aa8161269c565b600181811c9082168061281057607f821691505b60208210810361283057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156128945761289461286b565b500190565b60008160001904831182151516156128b3576128b361286b565b500290565b6000826128d557634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000828210156129745761297461286b565b500390565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156129a157600080fd5b81516126fd8161269c565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129fc5784516001600160a01b0316835293830193918301916001016129d7565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612a3257600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122077a5dc17da826719869e58176c4364ddf465b1a48d62ae7800542140e5809ee364736f6c634300080f00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x6080604052600436106103395760003560e01c80638da5cb5b116101ab578063bbc0c742116100f7578063e71dc3f511610095578063ee40166e1161006f578063ee40166e14610924578063f11a24d31461093a578063f2fde38b14610950578063f63743421461097057600080fd5b8063e71dc3f5146108ce578063e7ad9fcd146108e4578063e800dff71461090457600080fd5b8063d85ba063116100d1578063d85ba06314610847578063dd62ed3e1461085d578063e2cd5fcd146108a3578063e2f45605146108b857600080fd5b8063bbc0c742146107e8578063c024666814610807578063d257b34f1461082757600080fd5b8063a0d82dc511610164578063a9059cbb1161013e578063a9059cbb1461076c578063aa4bde281461078c578063adb873bd146107a2578063b62496f5146107b857600080fd5b8063a0d82dc514610720578063a457c2d714610736578063a62068ce1461075657600080fd5b80638da5cb5b1461068b57806392136913146106a957806395d89b41146106bf5780639a7a23d6146106d45780639c3b4fdc146106f45780639fccce321461070a57600080fd5b80634a62bb6511610285578063715018a6116102235780637bce5a04116101fd5780637bce5a041461061a57806385ecfd281461063057806388e765ff146106605780638a8c523c1461067657600080fd5b8063715018a6146105d0578063751039fc146105e55780637571336a146105fa57600080fd5b80636a486a8e1161025f5780636a486a8e1461054e5780636b0a894c146105645780636ddd17131461057a57806370a082311461059a57600080fd5b80634a62bb651461050757806358a6d5311461052157806366d602ae1461053857600080fd5b80631d777856116102f25780632e6ed7ef116102cc5780632e6ed7ef14610489578063313ce567146104ab57806339509351146104c7578063452ed4f1146104e757600080fd5b80631d7778561461043d5780631f3fed8f1461045357806323b872dd1461046957600080fd5b806306fdde03146103455780630758d92414610370578063095ea7b3146103a857806310d5de53146103d857806318160ddd146104085780631a8145bb1461042757600080fd5b3661034057005b600080fd5b34801561035157600080fd5b5061035a610986565b6040516103679190612647565b60405180910390f35b34801561037c57600080fd5b50600954610390906001600160a01b031681565b6040516001600160a01b039091168152602001610367565b3480156103b457600080fd5b506103c86103c33660046126b4565b610a18565b6040519015158152602001610367565b3480156103e457600080fd5b506103c86103f33660046126e0565b60236020526000908152604090205460ff1681565b34801561041457600080fd5b506002545b604051908152602001610367565b34801561043357600080fd5b50610419601f5481565b34801561044957600080fd5b5061041960215481565b34801561045f57600080fd5b50610419601e5481565b34801561047557600080fd5b506103c8610484366004612704565b610a2e565b34801561049557600080fd5b506104a96104a4366004612745565b610add565b005b3480156104b757600080fd5b5060405160128152602001610367565b3480156104d357600080fd5b506103c86104e23660046126b4565b610b44565b3480156104f357600080fd5b50600a54610390906001600160a01b031681565b34801561051357600080fd5b506012546103c89060ff1681565b34801561052d57600080fd5b50600f5443106103c8565b34801561054457600080fd5b5061041960075481565b34801561055a57600080fd5b5061041960195481565b34801561057057600080fd5b5061041960115481565b34801561058657600080fd5b506012546103c89062010000900460ff1681565b3480156105a657600080fd5b506104196105b53660046126e0565b6001600160a01b031660009081526020819052604090205490565b3480156105dc57600080fd5b506104a9610b80565b3480156105f157600080fd5b506104a9610bf4565b34801561060657600080fd5b506104a9610615366004612777565b610c53565b34801561062657600080fd5b5061041960155481565b34801561063c57600080fd5b506103c861064b3660046126e0565b60106020526000908152604090205460ff1681565b34801561066c57600080fd5b5061041960065481565b34801561068257600080fd5b506104a9610d1b565b34801561069757600080fd5b506005546001600160a01b0316610390565b3480156106b557600080fd5b50610419601a5481565b3480156106cb57600080fd5b5061035a610e04565b3480156106e057600080fd5b506104a96106ef366004612777565b610e13565b34801561070057600080fd5b5061041960175481565b34801561071657600080fd5b5061041960205481565b34801561072c57600080fd5b50610419601c5481565b34801561074257600080fd5b506103c86107513660046126b4565b610f07565b34801561076257600080fd5b50610419600f5481565b34801561077857600080fd5b506103c86107873660046126b4565b610fa0565b34801561079857600080fd5b5061041960085481565b3480156107ae57600080fd5b50610419601d5481565b3480156107c457600080fd5b506103c86107d33660046126e0565b60246020526000908152604090205460ff1681565b3480156107f457600080fd5b506012546103c890610100900460ff1681565b34801561081357600080fd5b506104a9610822366004612777565b610fad565b34801561083357600080fd5b506104a96108423660046127b5565b611036565b34801561085357600080fd5b5061041960145481565b34801561086957600080fd5b506104196108783660046127ce565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156108af57600080fd5b506104a9611181565b3480156108c457600080fd5b50610419600b5481565b3480156108da57600080fd5b5061041960185481565b3480156108f057600080fd5b506104a96108ff366004612745565b6111c4565b34801561091057600080fd5b506104a961091f366004612777565b61122b565b34801561093057600080fd5b50610419600e5481565b34801561094657600080fd5b5061041960165481565b34801561095c57600080fd5b506104a961096b3660046126e0565b611280565b34801561097c57600080fd5b50610419601b5481565b606060038054610995906127fc565b80601f01602080910402602001604051908101604052809291908181526020018280546109c1906127fc565b8015610a0e5780601f106109e357610100808354040283529160200191610a0e565b820191906000526020600020905b8154815290600101906020018083116109f157829003601f168201915b5050505050905090565b6000610a2533848461136b565b50600192915050565b6000610a3b848484611490565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610ac55760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610ad2853385840361136b565b506001949350505050565b6005546001600160a01b03163314610b075760405162461bcd60e51b8152600401610abc90612836565b60158490556016839055601782905560188190558082610b278587612881565b610b319190612881565b610b3b9190612881565b60145550505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a25918590610b7b908690612881565b61136b565b6005546001600160a01b03163314610baa5760405162461bcd60e51b8152600401610abc90612836565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610c1e5760405162461bcd60e51b8152600401610abc90612836565b6012805460ff191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b03163314610c7d5760405162461bcd60e51b8152600401610abc90612836565b80610cf057600a546001600160a01b0390811690831603610cf05760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610abc565b6001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d455760405162461bcd60e51b8152600401610abc90612836565b601254610100900460ff1615610d9d5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610abc565b6012805462ffff0019166201010017905543600e819055610dbf906028612881565b600f90815560178190556014601c819055601591909155601a556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a1565b606060048054610995906127fc565b6005546001600160a01b03163314610e3d5760405162461bcd60e51b8152600401610abc90612836565b600a546001600160a01b0390811690831603610ec15760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610abc565b610ecb8282611ee1565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610f895760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610abc565b610f96338585840361136b565b5060019392505050565b6000610a25338484611490565b6005546001600160a01b03163314610fd75760405162461bcd60e51b8152600401610abc90612836565b6001600160a01b038216600081815260226020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146110605760405162461bcd60e51b8152600401610abc90612836565b620186a061106d60025490565b611078906001612899565b61108291906128b8565b8110156110ef5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610abc565b6103e86110fb60025490565b611106906001612899565b61111091906128b8565b81111561117c5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610abc565b600b55565b6005546001600160a01b031633146111ab5760405162461bcd60e51b8152600401610abc90612836565b600360178190556006601c819055601591909155601a55565b6005546001600160a01b031633146111ee5760405162461bcd60e51b8152600401610abc90612836565b601a849055601b839055601c829055601d819055808261120e8587612881565b6112189190612881565b6112229190612881565b60195550505050565b6005546001600160a01b031633146112555760405162461bcd60e51b8152600401610abc90612836565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146112aa5760405162461bcd60e51b8152600401610abc90612836565b6001600160a01b03811661130f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abc565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166113cd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610abc565b6001600160a01b03821661142e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610abc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166114b65760405162461bcd60e51b8152600401610abc906128da565b6001600160a01b0382166114dc5760405162461bcd60e51b8152600401610abc9061291f565b6000811161152c5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610abc565b601254610100900460ff166115bf576001600160a01b03831660009081526022602052604090205460ff168061157a57506001600160a01b03821660009081526022602052604090205460ff165b6115bf5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610abc565b600f5415611692576001600160a01b03831660009081526010602052604090205460ff1615806115fc57506005546001600160a01b038381169116145b8061161157506001600160a01b03821661dead145b6116925760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610abc565b60125460ff1680156116a65750600f544310155b156119a8576005546001600160a01b038481169116148015906116d757506005546001600160a01b03838116911614155b80156116eb57506001600160a01b03821615155b801561170257506001600160a01b03821661dead14155b801561172757506001600160a01b03831660009081526022602052604090205460ff16155b801561174c57506001600160a01b03821660009081526022602052604090205460ff16155b156119a8576001600160a01b03831660009081526024602052604090205460ff16801561179257506001600160a01b03821660009081526023602052604090205460ff16155b1561186e576006548111156117fa5760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610abc565b6008546001600160a01b0383166000908152602081905260409020546118209083612881565b11156118695760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610abc565b6119a8565b6001600160a01b03821660009081526024602052604090205460ff1680156118af57506001600160a01b03831660009081526023602052604090205460ff16155b15611919576007548111156118695760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610abc565b6001600160a01b03821660009081526023602052604090205460ff166119a8576008546001600160a01b03831660009081526020819052604090205461195f9083612881565b11156119a85760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610abc565b30600090815260208190526040902054600b54811080159081906119d4575060125462010000900460ff165b80156119ea5750600a54600160a01b900460ff16155b8015611a0f57506001600160a01b03851660009081526024602052604090205460ff16155b8015611a3457506001600160a01b03851660009081526022602052604090205460ff16155b8015611a5957506001600160a01b03841660009081526022602052604090205460ff16155b15611a8757600a805460ff60a01b1916600160a01b179055611a79611f0f565b600a805460ff60a01b191690555b6001600160a01b03851660009081526022602052604090205460019060ff1680611ac957506001600160a01b03851660009081526022602052604090205460ff165b15611ad2575060005b60008115611ecd57600f5443108015611b0357506001600160a01b03871660009081526024602052604090205460ff165b8015611b2857506001600160a01b03861660009081526024602052604090205460ff16155b8015611b3657506000601454115b15611cb6576001600160a01b03861660009081526010602052604090205460ff16611bd6576001600160a01b0386166000908152601060205260408120805460ff191660019081179091556011805491929091611b94908490612881565b90915550506040516001600160a01b03871681527f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a9060200160405180910390a15b6064611be386605a612899565b611bed91906128b8565b905060145460165482611c009190612899565b611c0a91906128b8565b601f6000828254611c1b9190612881565b9091555050601454601554611c309083612899565b611c3a91906128b8565b601e6000828254611c4b9190612881565b9091555050601454601754611c609083612899565b611c6a91906128b8565b60206000828254611c7b9190612881565b9091555050601454601854611c909083612899565b611c9a91906128b8565b60216000828254611cab9190612881565b90915550611eaf9050565b6001600160a01b03861660009081526024602052604090205460ff168015611ce057506000601954115b15611da257606460195486611cf59190612899565b611cff91906128b8565b9050601954601b5482611d129190612899565b611d1c91906128b8565b601f6000828254611d2d9190612881565b9091555050601954601a54611d429083612899565b611d4c91906128b8565b601e6000828254611d5d9190612881565b9091555050601954601c54611d729083612899565b611d7c91906128b8565b60206000828254611d8d9190612881565b9091555050601954601d54611c909083612899565b6001600160a01b03871660009081526024602052604090205460ff168015611dcc57506000601454115b15611eaf57606460145486611de19190612899565b611deb91906128b8565b905060145460165482611dfe9190612899565b611e0891906128b8565b601f6000828254611e199190612881565b9091555050601454601554611e2e9083612899565b611e3891906128b8565b601e6000828254611e499190612881565b9091555050601454601754611e5e9083612899565b611e6891906128b8565b60206000828254611e799190612881565b9091555050601454601854611e8e9083612899565b611e9891906128b8565b60216000828254611ea99190612881565b90915550505b8015611ec057611ec0873083612159565b611eca8186612962565b94505b611ed8878787612159565b50505050505050565b6001600160a01b0382166000908152602460205260409020805460ff1916821515179055610ecb82826122ae565b6000602154118015611f3257506021543060009081526020819052604090205410155b15611f4357611f4330602154612311565b600060218190553081526020819052604081205490506000602054601e54601f54611f6e9190612881565b611f789190612881565b9050811580611f85575080155b15611f8e575050565b600b54611f9c906014612899565b821115611fb457600b54611fb1906014612899565b91505b600080600283601f5486611fc89190612899565b611fd291906128b8565b611fdc91906128b8565b9050611ff0611feb8286612962565b61243b565b601f5447908190600090612006906002906128b8565b6120109087612962565b601e5461201d9085612899565b61202791906128b8565b905060006002601f5461203a91906128b8565b6120449088612962565b6020546120519086612899565b61205b91906128b8565b90506120678183612881565b6120719084612962565b6000601f819055601e8190556020819055602155925084158015906120965750600083115b156120a5576120a58584612595565b600d546040516001600160a01b03909116908290600081818185875af1925050503d80600081146120f2576040519150601f19603f3d011682016040523d82523d6000602084013e6120f7565b606091505b5050600c546040519197506001600160a01b0316904790600081818185875af1925050503d8060008114612147576040519150601f19603f3d011682016040523d82523d6000602084013e61214c565b606091505b5050505050505050505050565b6001600160a01b03831661217f5760405162461bcd60e51b8152600401610abc906128da565b6001600160a01b0382166121a55760405162461bcd60e51b8152600401610abc9061291f565b6001600160a01b0383166000908152602081905260409020548181101561221d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610abc565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612254908490612881565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122a091815260200190565b60405180910390a350505050565b6001600160a01b038216600081815260236020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382166123715760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610abc565b6001600160a01b038216600090815260208190526040902054818110156123e55760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610abc565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611483565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061247057612470612979565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156124c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ed919061298f565b8160018151811061250057612500612979565b6001600160a01b039283166020918202929092010152600954612526913091168461136b565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac9479061255f9085906000908690309042906004016129ac565b600060405180830381600087803b15801561257957600080fd5b505af115801561258d573d6000803e3d6000fd5b505050505050565b6009546125ad9030906001600160a01b03168461136b565b60095460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af115801561261b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126409190612a1d565b5050505050565b600060208083528351808285015260005b8181101561267457858101830151858201604001528201612658565b81811115612686576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146126b157600080fd5b50565b600080604083850312156126c757600080fd5b82356126d28161269c565b946020939093013593505050565b6000602082840312156126f257600080fd5b81356126fd8161269c565b9392505050565b60008060006060848603121561271957600080fd5b83356127248161269c565b925060208401356127348161269c565b929592945050506040919091013590565b6000806000806080858703121561275b57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561278a57600080fd5b82356127958161269c565b9150602083013580151581146127aa57600080fd5b809150509250929050565b6000602082840312156127c757600080fd5b5035919050565b600080604083850312156127e157600080fd5b82356127ec8161269c565b915060208301356127aa8161269c565b600181811c9082168061281057607f821691505b60208210810361283057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156128945761289461286b565b500190565b60008160001904831182151516156128b3576128b361286b565b500290565b6000826128d557634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000828210156129745761297461286b565b500390565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156129a157600080fd5b81516126fd8161269c565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129fc5784516001600160a01b0316835293830193918301916001016129d7565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612a3257600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122077a5dc17da826719869e58176c4364ddf465b1a48d62ae7800542140e5809ee364736f6c634300080f0033

Deployed Bytecode Sourcemap

10137:14805:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4026:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10286:27;;;;;;;;;;-1:-1:-1;10286:27:0;;;;-1:-1:-1;;;;;10286:27:0;;;;;;-1:-1:-1;;;;;798:32:1;;;780:51;;768:2;753:18;10286:27:0;616:221:1;4940:169:0;;;;;;;;;;-1:-1:-1;4940:169:0;;;;;:::i;:::-;;:::i;:::-;;;1463:14:1;;1456:22;1438:41;;1426:2;1411:18;4940:169:0;1298:187:1;11624:64:0;;;;;;;;;;-1:-1:-1;11624:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4347:108;;;;;;;;;;-1:-1:-1;4435:12:0;;4347:108;;;1888:25:1;;;1876:2;1861:18;4347:108:0;1742:177:1;11372:33:0;;;;;;;;;;;;;;;;11446:28;;;;;;;;;;;;;;;;11332:33;;;;;;;;;;;;;;;;5117:492;;;;;;;;;;-1:-1:-1;5117:492:0;;;;;:::i;:::-;;:::i;16915:361::-;;;;;;;;;;-1:-1:-1;16915:361:0;;;;;:::i;:::-;;:::i;:::-;;4246:93;;;;;;;;;;-1:-1:-1;4246:93:0;;4329:2;2917:36:1;;2905:2;2890:18;4246:93:0;2775:184:1;5617:215:0;;;;;;;;;;-1:-1:-1;5617:215:0;;;;;:::i;:::-;;:::i;10320:21::-;;;;;;;;;;-1:-1:-1;10320:21:0;;;;-1:-1:-1;;;;;10320:21:0;;;10680:33;;;;;;;;;;-1:-1:-1;10680:33:0;;;;;;;;22115:120;;;;;;;;;;-1:-1:-1;22209:18:0;;22194:12;:33;22115:120;;10212:28;;;;;;;;;;;;;;;;11154;;;;;;;;;;;;;;;;10646:25;;;;;;;;;;;;;;;;10760:31;;;;;;;;;;-1:-1:-1;10760:31:0;;;;;;;;;;;4463:127;;;;;;;;;;-1:-1:-1;4463:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;4564:18:0;4537:7;4564:18;;;;;;;;;;;;4463:127;8661:150;;;;;;;;;;;;;:::i;15041:115::-;;;;;;;;;;;;;:::i;15923:260::-;;;;;;;;;;-1:-1:-1;15923:260:0;;;;;:::i;:::-;;:::i;11015:30::-;;;;;;;;;;;;;;;;10595:44;;;;;;;;;;-1:-1:-1;10595:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10178:27;;;;;;;;;;;;;;;;14570:419;;;;;;;;;;;;;:::i;8447:79::-;;;;;;;;;;-1:-1:-1;8512:6:0;;-1:-1:-1;;;;;8512:6:0;8447:79;;11189:31;;;;;;;;;;;;;;;;4134:104;;;;;;;;;;;;;:::i;16191:295::-;;;;;;;;;;-1:-1:-1;16191:295:0;;;;;:::i;:::-;;:::i;11089:24::-;;;;;;;;;;;;;;;;11412:27;;;;;;;;;;;;;;;;11265:25;;;;;;;;;;;;;;;;5840:413;;;;;;;;;;-1:-1:-1;5840:413:0;;;;;:::i;:::-;;:::i;10555:33::-;;;;;;;;;;;;;;;;4598:175;;;;;;;;;;-1:-1:-1;4598:175:0;;;;;:::i;:::-;;:::i;10247:30::-;;;;;;;;;;;;;;;;11297:26;;;;;;;;;;;;;;;;11846:58;;;;;;;;;;-1:-1:-1;11846:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10720:33;;;;;;;;;;-1:-1:-1;10720:33:0;;;;;;;;;;;17665:182;;;;;;;;;;-1:-1:-1;17665:182:0;;;;;:::i;:::-;;:::i;15354:346::-;;;;;;;;;;-1:-1:-1;15354:346:0;;;;;:::i;:::-;;:::i;10981:27::-;;;;;;;;;;;;;;;;4781:151;;;;;;;;;;-1:-1:-1;4781:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;4897:18:0;;;4870:7;4897:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4781:151;16494:165;;;;;;;;;;;;;:::i;10378:33::-;;;;;;;;;;;;;;;;11120:25;;;;;;;;;;;;;;;;17284:373;;;;;;;;;;-1:-1:-1;17284:373:0;;;;;:::i;:::-;;:::i;15164:118::-;;;;;;;;;;-1:-1:-1;15164:118:0;;;;;:::i;:::-;;:::i;10478:37::-;;;;;;;;;;;;;;;;11052:30;;;;;;;;;;;;;;;;8819:244;;;;;;;;;;-1:-1:-1;8819:244:0;;;;;:::i;:::-;;:::i;11227:31::-;;;;;;;;;;;;;;;;4026:100;4080:13;4113:5;4106:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4026:100;:::o;4940:169::-;5023:4;5040:39;255:10;5063:7;5072:6;5040:8;:39::i;:::-;-1:-1:-1;5097:4:0;4940:169;;;;:::o;5117:492::-;5257:4;5274:36;5284:6;5292:9;5303:6;5274:9;:36::i;:::-;-1:-1:-1;;;;;5350:19:0;;5323:24;5350:19;;;:11;:19;;;;;;;;255:10;5350:33;;;;;;;;5402:26;;;;5394:79;;;;-1:-1:-1;;;5394:79:0;;4758:2:1;5394:79:0;;;4740:21:1;4797:2;4777:18;;;4770:30;4836:34;4816:18;;;4809:62;-1:-1:-1;;;4887:18:1;;;4880:38;4935:19;;5394:79:0;;;;;;;;;5509:57;5518:6;255:10;5559:6;5540:16;:25;5509:8;:57::i;:::-;-1:-1:-1;5597:4:0;;5117:492;-1:-1:-1;;;;5117:492:0:o;16915:361::-;8574:6;;-1:-1:-1;;;;;8574:6:0;255:10;8574:22;8566:67;;;;-1:-1:-1;;;8566:67:0;;;;;;;:::i;:::-;17049:15:::1;:31:::0;;;17091:15:::1;:31:::0;;;17133:9:::1;:19:::0;;;17163:10:::1;:21:::0;;;17176:8;17145:7;17210:33:::1;17109:13:::0;17067;17210:33:::1;:::i;:::-;:45;;;;:::i;:::-;:58;;;;:::i;:::-;17195:12;:73:::0;-1:-1:-1;;;;16915:361:0:o;5617:215::-;255:10;5705:4;5754:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5754:34:0;;;;;;;;;;5705:4;;5722:80;;5745:7;;5754:47;;5791:10;;5754:47;:::i;:::-;5722:8;:80::i;8661:150::-;8574:6;;-1:-1:-1;;;;;8574:6:0;255:10;8574:22;8566:67;;;;-1:-1:-1;;;8566:67:0;;;;;;;:::i;:::-;8754:6:::1;::::0;8733:40:::1;::::0;8770:1:::1;::::0;-1:-1:-1;;;;;8754:6:0::1;::::0;8733:40:::1;::::0;8770:1;;8733:40:::1;8784:6;:19:::0;;-1:-1:-1;;;;;;8784:19:0::1;::::0;;8661:150::o;15041:115::-;8574:6;;-1:-1:-1;;;;;8574:6:0;255:10;8574:22;8566:67;;;;-1:-1:-1;;;8566:67:0;;;;;;;:::i;:::-;15095:14:::1;:22:::0;;-1:-1:-1;;15095:22:0::1;::::0;;15133:15:::1;::::0;::::1;::::0;15112:5:::1;::::0;15133:15:::1;15041:115::o:0;15923:260::-;8574:6;;-1:-1:-1;;;;;8574:6:0;255:10;8574:22;8566:67;;;;-1:-1:-1;;;8566:67:0;;;;;;;:::i;:::-;16019:4:::1;16015:104;;16057:6;::::0;-1:-1:-1;;;;;16057:6:0;;::::1;16047:16:::0;;::::1;::::0;16039:68:::1;;;::::0;-1:-1:-1;;;16039:68:0;;5793:2:1;16039:68:0::1;::::0;::::1;5775:21:1::0;5832:2;5812:18;;;5805:30;5871:34;5851:18;;;5844:62;-1:-1:-1;;;5922:18:1;;;5915:37;5969:19;;16039:68:0::1;5591:403:1::0;16039:68:0::1;-1:-1:-1::0;;;;;16129:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;16129:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15923:260::o;14570:419::-;8574:6;;-1:-1:-1;;;;;8574:6:0;255:10;8574:22;8566:67;;;;-1:-1:-1;;;8566:67:0;;;;;;;:::i;:::-;14634:13:::1;::::0;::::1;::::0;::::1;;;14633:14;14625:50;;;::::0;-1:-1:-1;;;14625:50:0;;6201:2:1;14625:50:0::1;::::0;::::1;6183:21:1::0;6240:2;6220:18;;;6213:30;6279:25;6259:18;;;6252:53;6322:18;;14625:50:0::1;5999:347:1::0;14625:50:0::1;14686:13;:20:::0;;-1:-1:-1;;14717:18:0;;;;;14767:12:::1;14746:18;:33:::0;;;14811:23:::1;::::0;14832:2:::1;14811:23;:::i;:::-;14790:18;:44:::0;;;14846:9:::1;:14:::0;;;14884:2:::1;14871:10;:15:::0;;;14897::::1;:20:::0;;;;14928:16:::1;:21:::0;14965:16:::1;::::0;::::1;::::0;-1:-1:-1;;14965:16:0::1;14570:419::o:0;4134:104::-;4190:13;4223:7;4216:14;;;;;:::i;16191:295::-;8574:6;;-1:-1:-1;;;;;8574:6:0;255:10;8574:22;8566:67;;;;-1:-1:-1;;;8566:67:0;;;;;;;:::i;:::-;16300:6:::1;::::0;-1:-1:-1;;;;;16300:6:0;;::::1;16292:14:::0;;::::1;::::0;16284:84:::1;;;::::0;-1:-1:-1;;;16284:84:0;;6553:2:1;16284:84:0::1;::::0;::::1;6535:21:1::0;6592:2;6572:18;;;6565:30;6631:34;6611:18;;;6604:62;6702:27;6682:18;;;6675:55;6747:19;;16284:84:0::1;6351:421:1::0;16284:84:0::1;16381:41;16410:4;16416:5;16381:28;:41::i;:::-;16438:40;::::0;;::::1;;::::0;-1:-1:-1;;;;;16438:40:0;::::1;::::0;::::1;::::0;;;::::1;16191:295:::0;;:::o;5840:413::-;255:10;5933:4;5977:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5977:34:0;;;;;;;;;;6030:35;;;;6022:85;;;;-1:-1:-1;;;6022:85:0;;6979:2:1;6022:85:0;;;6961:21:1;7018:2;6998:18;;;6991:30;7057:34;7037:18;;;7030:62;-1:-1:-1;;;7108:18:1;;;7101:35;7153:19;;6022:85:0;6777:401:1;6022:85:0;6143:67;255:10;6166:7;6194:15;6175:16;:34;6143:8;:67::i;:::-;-1:-1:-1;6241:4:0;;5840:413;-1:-1:-1;;;5840:413:0:o;4598:175::-;4684:4;4701:42;255:10;4725:9;4736:6;4701:9;:42::i;17665:182::-;8574:6;;-1:-1:-1;;;;;8574:6:0;255:10;8574:22;8566:67;;;;-1:-1:-1;;;8566:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17750:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;17750:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;17805:34;;1438:41:1;;;17805:34:0::1;::::0;1411:18:1;17805:34:0::1;;;;;;;17665:182:::0;;:::o;15354:346::-;8574:6;;-1:-1:-1;;;;;8574:6:0;255:10;8574:22;8566:67;;;;-1:-1:-1;;;8566:67:0;;;;;;;:::i;:::-;15477:6:::1;15457:13;4435:12:::0;;;4347:108;15457:13:::1;:17;::::0;15473:1:::1;15457:17;:::i;:::-;:26;;;;:::i;:::-;15444:9;:39;;15436:105;;;::::0;-1:-1:-1;;;15436:105:0;;7780:2:1;15436:105:0::1;::::0;::::1;7762:21:1::0;7819:2;7799:18;;;7792:30;7858:34;7838:18;;;7831:62;-1:-1:-1;;;7909:18:1;;;7902:51;7970:19;;15436:105:0::1;7578:417:1::0;15436:105:0::1;15592:4;15572:13;4435:12:::0;;;4347:108;15572:13:::1;:17;::::0;15588:1:::1;15572:17;:::i;:::-;:24;;;;:::i;:::-;15559:9;:37;;15551:102;;;::::0;-1:-1:-1;;;15551:102:0;;8202:2:1;15551:102:0::1;::::0;::::1;8184:21:1::0;8241:2;8221:18;;;8214:30;8280:34;8260:18;;;8253:62;-1:-1:-1;;;8331:18:1;;;8324:50;8391:19;;15551:102:0::1;8000:416:1::0;15551:102:0::1;15663:18;:30:::0;15354:346::o;16494:165::-;8574:6;;-1:-1:-1;;;;;8574:6:0;255:10;8574:22;8566:67;;;;-1:-1:-1;;;8566:67:0;;;;;;;:::i;:::-;16564:1:::1;16552:9;:13:::0;;;16589:1:::1;16576:10;:14:::0;;;16601:15:::1;:19:::0;;;;16631:16:::1;:20:::0;16494:165::o;17284:373::-;8574:6;;-1:-1:-1;;;;;8574:6:0;255:10;8574:22;8566:67;;;;-1:-1:-1;;;8566:67:0;;;;;;;:::i;:::-;17419:16:::1;:32:::0;;;17462:16:::1;:32:::0;;;17505:10:::1;:20:::0;;;17536:11:::1;:22:::0;;;17550:8;17518:7;17585:35:::1;17481:13:::0;17438;17585:35:::1;:::i;:::-;:48;;;;:::i;:::-;:62;;;;:::i;:::-;17569:13;:78:::0;-1:-1:-1;;;;17284:373:0:o;15164:118::-;8574:6;;-1:-1:-1;;;;;8574:6:0;255:10;8574:22;8566:67;;;;-1:-1:-1;;;8566:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15248:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:26;;-1:-1:-1;;15248:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15164:118::o;8819:244::-;8574:6;;-1:-1:-1;;;;;8574:6:0;255:10;8574:22;8566:67;;;;-1:-1:-1;;;8566:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8908:22:0;::::1;8900:73;;;::::0;-1:-1:-1;;;8900:73:0;;8623:2:1;8900:73:0::1;::::0;::::1;8605:21:1::0;8662:2;8642:18;;;8635:30;8701:34;8681:18;;;8674:62;-1:-1:-1;;;8752:18:1;;;8745:36;8798:19;;8900:73:0::1;8421:402:1::0;8900:73:0::1;9010:6;::::0;8989:38:::1;::::0;-1:-1:-1;;;;;8989:38:0;;::::1;::::0;9010:6:::1;::::0;8989:38:::1;::::0;9010:6:::1;::::0;8989:38:::1;9038:6;:17:::0;;-1:-1:-1;;;;;;9038:17:0::1;-1:-1:-1::0;;;;;9038:17:0;;;::::1;::::0;;;::::1;::::0;;8819:244::o;7740:380::-;-1:-1:-1;;;;;7876:19:0;;7868:68;;;;-1:-1:-1;;;7868:68:0;;9030:2:1;7868:68:0;;;9012:21:1;9069:2;9049:18;;;9042:30;9108:34;9088:18;;;9081:62;-1:-1:-1;;;9159:18:1;;;9152:34;9203:19;;7868:68:0;8828:400:1;7868:68:0;-1:-1:-1;;;;;7955:21:0;;7947:68;;;;-1:-1:-1;;;7947:68:0;;9435:2:1;7947:68:0;;;9417:21:1;9474:2;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;-1:-1:-1;;;9564:18:1;;;9557:32;9606:19;;7947:68:0;9233:398:1;7947:68:0;-1:-1:-1;;;;;8028:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8080:32;;1888:25:1;;;8080:32:0;;1861:18:1;8080:32:0;;;;;;;;7740:380;;;:::o;17855:4252::-;-1:-1:-1;;;;;17955:18:0;;17947:68;;;;-1:-1:-1;;;17947:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18034:16:0;;18026:64;;;;-1:-1:-1;;;18026:64:0;;;;;;;:::i;:::-;18118:1;18109:6;:10;18101:52;;;;-1:-1:-1;;;18101:52:0;;10648:2:1;18101:52:0;;;10630:21:1;10687:2;10667:18;;;10660:30;10726:31;10706:18;;;10699:59;10775:18;;18101:52:0;10446:353:1;18101:52:0;18170:13;;;;;;;18166:132;;-1:-1:-1;;;;;18207:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;18236:23:0;;;;;;:19;:23;;;;;;;;18207:52;18199:87;;;;-1:-1:-1;;;18199:87:0;;11006:2:1;18199:87:0;;;10988:21:1;11045:2;11025:18;;;11018:30;-1:-1:-1;;;11064:18:1;;;11057:52;11126:18;;18199:87:0;10804:346:1;18199:87:0;18313:18;;:22;18310:196;;-1:-1:-1;;;;;18360:17:0;;;;;;:11;:17;;;;;;;;18359:18;;:35;;-1:-1:-1;8512:6:0;;-1:-1:-1;;;;;18381:13:0;;;8512:6;;18381:13;18359:35;:60;;;-1:-1:-1;;;;;;18398:21:0;;18412:6;18398:21;18359:60;18351:143;;;;-1:-1:-1;;;18351:143:0;;11357:2:1;18351:143:0;;;11339:21:1;11396:2;11376:18;;;11369:30;11435:34;11415:18;;;11408:62;11506:34;11486:18;;;11479:62;-1:-1:-1;;;11557:19:1;;;11550:37;11604:19;;18351:143:0;11155:474:1;18351:143:0;18521:14;;;;:44;;;;-1:-1:-1;22209:18:0;;22194:12;:33;18539:26;18521:44;18518:1027;;;8512:6;;-1:-1:-1;;;;;18585:15:0;;;8512:6;;18585:15;;;;:32;;-1:-1:-1;8512:6:0;;-1:-1:-1;;;;;18604:13:0;;;8512:6;;18604:13;;18585:32;:52;;;;-1:-1:-1;;;;;;18621:16:0;;;;18585:52;:77;;;;-1:-1:-1;;;;;;18641:21:0;;18655:6;18641:21;;18585:77;:107;;;;-1:-1:-1;;;;;;18667:25:0;;;;;;:19;:25;;;;;;;;18666:26;18585:107;:135;;;;-1:-1:-1;;;;;;18697:23:0;;;;;;:19;:23;;;;;;;;18696:24;18585:135;18581:953;;;-1:-1:-1;;;;;18780:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;18816:35:0;;;;;;:31;:35;;;;;;;;18815:36;18780:71;18776:743;;;18898:12;;18888:6;:22;;18880:75;;;;-1:-1:-1;;;18880:75:0;;11836:2:1;18880:75:0;;;11818:21:1;11875:2;11855:18;;;11848:30;11914:34;11894:18;;;11887:62;-1:-1:-1;;;11965:18:1;;;11958:38;12013:19;;18880:75:0;11634:404:1;18880:75:0;19016:15;;-1:-1:-1;;;;;4564:18:0;;4537:7;4564:18;;;;;;;;;;;18990:22;;:6;:22;:::i;:::-;:41;;18982:78;;;;-1:-1:-1;;;18982:78:0;;12245:2:1;18982:78:0;;;12227:21:1;12284:2;12264:18;;;12257:30;-1:-1:-1;;;12303:18:1;;;12296:54;12367:18;;18982:78:0;12043:348:1;18982:78:0;18776:743;;;-1:-1:-1;;;;;19136:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;19170:37:0;;;;;;:31;:37;;;;;;;;19169:38;19136:71;19132:387;;;19254:13;;19244:6;:23;;19236:78;;;;-1:-1:-1;;;19236:78:0;;12598:2:1;19236:78:0;;;12580:21:1;12637:2;12617:18;;;12610:30;12676:34;12656:18;;;12649:62;-1:-1:-1;;;12727:18:1;;;12720:40;12777:19;;19236:78:0;12396:406:1;19132:387:0;-1:-1:-1;;;;;19362:35:0;;;;;;:31;:35;;;;;;;;19357:162;;19455:15;;-1:-1:-1;;;;;4564:18:0;;4537:7;4564:18;;;;;;;;;;;19429:22;;:6;:22;:::i;:::-;:41;;19421:78;;;;-1:-1:-1;;;19421:78:0;;12245:2:1;19421:78:0;;;12227:21:1;12284:2;12264:18;;;12257:30;-1:-1:-1;;;12303:18:1;;;12296:54;12367:18;;19421:78:0;12043:348:1;19421:78:0;19606:4;19557:28;4564:18;;;;;;;;;;;19664;;19640:42;;;;;;;19698:22;;-1:-1:-1;19709:11:0;;;;;;;19698:22;:35;;;;-1:-1:-1;19725:8:0;;-1:-1:-1;;;19725:8:0;;;;19724:9;19698:35;:71;;;;-1:-1:-1;;;;;;19738:31:0;;;;;;:25;:31;;;;;;;;19737:32;19698:71;:101;;;;-1:-1:-1;;;;;;19774:25:0;;;;;;:19;:25;;;;;;;;19773:26;19698:101;:129;;;;-1:-1:-1;;;;;;19804:23:0;;;;;;:19;:23;;;;;;;;19803:24;19698:129;19695:236;;;19844:8;:15;;-1:-1:-1;;;;19844:15:0;-1:-1:-1;;;19844:15:0;;;19876:10;:8;:10::i;:::-;19903:8;:16;;-1:-1:-1;;;;19903:16:0;;;19695:236;-1:-1:-1;;;;;20061:25:0;;19943:12;20061:25;;;:19;:25;;;;;;19958:4;;20061:25;;;:52;;-1:-1:-1;;;;;;20090:23:0;;;;;;:19;:23;;;;;;;;20061:52;20058:99;;;-1:-1:-1;20140:5:0;20058:99;20169:12;20273:7;20270:1784;;;22209:18;;22194:12;:33;20335:60;;;;-1:-1:-1;;;;;;20364:31:0;;;;;;:25;:31;;;;;;;;20335:60;:94;;;;-1:-1:-1;;;;;;20400:29:0;;;;;;:25;:29;;;;;;;;20399:30;20335:94;:114;;;;;20448:1;20433:12;;:16;20335:114;20332:1578;;;-1:-1:-1;;;;;20475:15:0;;;;;;:11;:15;;;;;;;;20471:171;;-1:-1:-1;;;;;20514:15:0;;;;;;:11;:15;;;;;:22;;-1:-1:-1;;20514:22:0;20532:4;20514:22;;;;;;20559:10;:15;;20532:4;;20559:10;;:15;;20532:4;;20559:15;:::i;:::-;;;;-1:-1:-1;;20602:20:0;;-1:-1:-1;;;;;798:32:1;;780:51;;20602:20:0;;768:2:1;753:18;20602:20:0;;;;;;;20471:171;20683:3;20669:11;:6;20678:2;20669:11;:::i;:::-;:17;;;;:::i;:::-;20662:24;;20749:12;;20731:15;;20724:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;20702:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;20827:12:0;;20809:15;;20802:22;;:4;:22;:::i;:::-;:37;;;;:::i;:::-;20780:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;20893:12:0;;20881:9;;20874:16;;:4;:16;:::i;:::-;:31;;;;:::i;:::-;20858:12;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;20961:12:0;;20948:10;;20941:17;;:4;:17;:::i;:::-;:32;;;;:::i;:::-;20924:13;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;20332:1578:0;;-1:-1:-1;20332:1578:0;;-1:-1:-1;;;;;21038:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;21087:1;21071:13;;:17;21038:50;21034:876;;;21140:3;21124:13;;21115:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;21108:35;;21210:13;;21191:16;;21184:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;21162:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;21290:13:0;;21271:16;;21264:23;;:4;:23;:::i;:::-;:39;;;;:::i;:::-;21242:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;21358:13:0;;21345:10;;21338:17;;:4;:17;:::i;:::-;:33;;;;:::i;:::-;21322:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;21428:13:0;;21414:11;;21407:18;;:4;:18;:::i;21034:876::-;-1:-1:-1;;;;;21504:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;21554:1;21539:12;;:16;21504:51;21501:409;;;21604:3;21589:12;;21580:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;21573:34;;21670:12;;21652:15;;21645:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;21623:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;21748:12:0;;21730:15;;21723:22;;:4;:22;:::i;:::-;:37;;;;:::i;:::-;21701:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;21814:12:0;;21802:9;;21795:16;;:4;:16;:::i;:::-;:31;;;;:::i;:::-;21779:12;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;21882:12:0;;21869:10;;21862:17;;:4;:17;:::i;:::-;:32;;;;:::i;:::-;21845:13;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;21501:409:0;21929:8;;21926:89;;21957:42;21973:4;21987;21994;21957:15;:42::i;:::-;22028:14;22038:4;22028:14;;:::i;:::-;;;20270:1784;22066:33;22082:4;22088:2;22092:6;22066:15;:33::i;:::-;17934:4173;;;;17855:4252;;;:::o;16667:240::-;-1:-1:-1;;;;;16750:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;16750:39:0;;;;;;;16802;16750:31;:39;16802:26;:39::i;23341:1592::-;23401:1;23385:13;;:17;:62;;;;-1:-1:-1;23434:13:0;;23424:4;4537:7;4564:18;;;;;;;;;;;23406:41;;23385:62;23382:129;;;23464:35;23478:4;23485:13;;23464:5;:35::i;:::-;23537:1;23521:13;:17;;;23595:4;4564:18;;;;;;;;;;23551:50;;23612:25;23682:12;;23661:18;;23640;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;23612:82;-1:-1:-1;23710:20:0;;;:46;;-1:-1:-1;23734:22:0;;23710:46;23707:60;;;23759:7;;23341:1592::o;23707:60::-;23800:18;;:23;;23821:2;23800:23;:::i;:::-;23782:15;:41;23779:113;;;23857:18;;:23;;23878:2;23857:23;:::i;:::-;23839:41;;23779:113;23904:12;23978:23;24063:1;24043:17;24022:18;;24004:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;23978:86;-1:-1:-1;24077:51:0;24094:33;23978:86;24094:15;:33;:::i;:::-;24077:16;:51::i;:::-;24325:18;;24162:21;;;;24141:18;;24325:20;;24344:1;;24325:20;:::i;:::-;24304:42;;:17;:42;:::i;:::-;24282:18;;24269:31;;:10;:31;:::i;:::-;:78;;;;:::i;:::-;24243:104;;24358:17;24447:1;24428:18;;:20;;;;:::i;:::-;24407:42;;:17;:42;:::i;:::-;24391:12;;24378:25;;:10;:25;:::i;:::-;:72;;;;:::i;:::-;24358:92;-1:-1:-1;24482:27:0;24358:92;24482:15;:27;:::i;:::-;24463:46;;;;:::i;:::-;24543:1;24522:18;:22;;;24555:18;:22;;;24588:12;:16;;;24615:13;:17;24463:46;-1:-1:-1;24648:19:0;;;;;:42;;;24689:1;24671:15;:19;24648:42;24645:119;;;24706:46;24719:15;24736;24706:12;:46::i;:::-;24797:10;;24789:46;;-1:-1:-1;;;;;24797:10:0;;;;24821:9;;24789:46;;;;24821:9;24797:10;24789:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24869:16:0;;24861:64;;24776:59;;-1:-1:-1;;;;;;24869:16:0;;24899:21;;24861:64;;;;24899:21;24869:16;24861:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23341:1592:0:o;6261:614::-;-1:-1:-1;;;;;6401:20:0;;6393:70;;;;-1:-1:-1;;;6393:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6482:23:0;;6474:71;;;;-1:-1:-1;;;6474:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6582:17:0;;6558:21;6582:17;;;;;;;;;;;6618:23;;;;6610:74;;;;-1:-1:-1;;;6610:74:0;;13349:2:1;6610:74:0;;;13331:21:1;13388:2;13368:18;;;13361:30;13427:34;13407:18;;;13400:62;-1:-1:-1;;;13478:18:1;;;13471:36;13524:19;;6610:74:0;13147:402:1;6610:74:0;-1:-1:-1;;;;;6720:17:0;;;:9;:17;;;;;;;;;;;6740:22;;;6720:42;;6784:20;;;;;;;;:30;;6756:6;;6720:9;6784:30;;6756:6;;6784:30;:::i;:::-;;;;;;;;6849:9;-1:-1:-1;;;;;6832:35:0;6841:6;-1:-1:-1;;;;;6832:35:0;;6860:6;6832:35;;;;1888:25:1;;1876:2;1861:18;;1742:177;6832:35:0;;;;;;;;6382:493;6261:614;;;:::o;15708:207::-;-1:-1:-1;;;;;15796:39:0;;;;;;:31;:39;;;;;;;;;:52;;-1:-1:-1;;15796:52:0;;;;;;;;;;15864:43;;13722:51:1;;;13789:18;;;13782:50;15864:43:0;;13695:18:1;15864:43:0;;;;;;;15708:207;;:::o;7182:550::-;-1:-1:-1;;;;;7266:21:0;;7258:67;;;;-1:-1:-1;;;7258:67:0;;14045:2:1;7258:67:0;;;14027:21:1;14084:2;14064:18;;;14057:30;14123:34;14103:18;;;14096:62;-1:-1:-1;;;14174:18:1;;;14167:31;14215:19;;7258:67:0;13843:397:1;7258:67:0;-1:-1:-1;;;;;7361:18:0;;7336:22;7361:18;;;;;;;;;;;7398:24;;;;7390:71;;;;-1:-1:-1;;;7390:71:0;;14447:2:1;7390:71:0;;;14429:21:1;14486:2;14466:18;;;14459:30;14525:34;14505:18;;;14498:62;-1:-1:-1;;;14576:18:1;;;14569:32;14618:19;;7390:71:0;14245:398:1;7390:71:0;-1:-1:-1;;;;;7497:18:0;;:9;:18;;;;;;;;;;;7518:23;;;7497:44;;7636:12;:22;;;;;;;7687:37;1888:25:1;;;7497:9:0;;:18;7687:37;;1861:18:1;7687:37:0;1742:177:1;22243:573:0;22395:16;;;22409:1;22395:16;;;;;;;;22371:21;;22395:16;;;;;;;;;;-1:-1:-1;22395:16:0;22371:40;;22440:4;22422;22427:1;22422:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22422:23:0;;;:7;;;;;;;;;;:23;;;;22466:9;;:16;;;-1:-1:-1;;;22466:16:0;;;;:9;;;;;:14;;:16;;;;;22422:7;;22466:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22456:4;22461:1;22456:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22456:26:0;;;:7;;;;;;;;;:26;22527:9;;22495:56;;22512:4;;22527:9;22539:11;22495:8;:56::i;:::-;22590:9;;:218;;-1:-1:-1;;;22590:218:0;;-1:-1:-1;;;;;22590:9:0;;;;:60;;:218;;22665:11;;22590:9;;22735:4;;22762;;22782:15;;22590:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22298:518;22243:573;:::o;22824:509::-;23004:9;;22972:56;;22989:4;;-1:-1:-1;;;;;23004:9:0;23016:11;22972:8;:56::i;:::-;23071:9;;:254;;-1:-1:-1;;;23071:254:0;;23137:4;23071:254;;;16494:34:1;16544:18;;;16537:34;;;23071:9:0;16587:18:1;;;16580:34;;;16630:18;;;16623:34;23277:6:0;16673:19:1;;;16666:44;23299:15:0;16726:19:1;;;16719:35;-1:-1:-1;;;;;23071:9:0;;;;:25;;23104:9;;16428:19:1;;23071:254:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22824:509;;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;842:131::-;-1:-1:-1;;;;;917:31:1;;907:42;;897:70;;963:1;960;953:12;897:70;842:131;:::o;978:315::-;1046:6;1054;1107:2;1095:9;1086:7;1082:23;1078:32;1075:52;;;1123:1;1120;1113:12;1075:52;1162:9;1149:23;1181:31;1206:5;1181:31;:::i;:::-;1231:5;1283:2;1268:18;;;;1255:32;;-1:-1:-1;;;978:315:1:o;1490:247::-;1549:6;1602:2;1590:9;1581:7;1577:23;1573:32;1570:52;;;1618:1;1615;1608:12;1570:52;1657:9;1644:23;1676:31;1701:5;1676:31;:::i;:::-;1726:5;1490:247;-1:-1:-1;;;1490:247:1:o;1924:456::-;2001:6;2009;2017;2070:2;2058:9;2049:7;2045:23;2041:32;2038:52;;;2086:1;2083;2076:12;2038:52;2125:9;2112:23;2144:31;2169:5;2144:31;:::i;:::-;2194:5;-1:-1:-1;2251:2:1;2236:18;;2223:32;2264:33;2223:32;2264:33;:::i;:::-;1924:456;;2316:7;;-1:-1:-1;;;2370:2:1;2355:18;;;;2342:32;;1924:456::o;2385:385::-;2471:6;2479;2487;2495;2548:3;2536:9;2527:7;2523:23;2519:33;2516:53;;;2565:1;2562;2555:12;2516:53;-1:-1:-1;;2588:23:1;;;2658:2;2643:18;;2630:32;;-1:-1:-1;2709:2:1;2694:18;;2681:32;;2760:2;2745:18;2732:32;;-1:-1:-1;2385:385:1;-1:-1:-1;2385:385:1:o;3172:416::-;3237:6;3245;3298:2;3286:9;3277:7;3273:23;3269:32;3266:52;;;3314:1;3311;3304:12;3266:52;3353:9;3340:23;3372:31;3397:5;3372:31;:::i;:::-;3422:5;-1:-1:-1;3479:2:1;3464:18;;3451:32;3521:15;;3514:23;3502:36;;3492:64;;3552:1;3549;3542:12;3492:64;3575:7;3565:17;;;3172:416;;;;;:::o;3593:180::-;3652:6;3705:2;3693:9;3684:7;3680:23;3676:32;3673:52;;;3721:1;3718;3711:12;3673:52;-1:-1:-1;3744:23:1;;3593:180;-1:-1:-1;3593:180:1:o;3778:388::-;3846:6;3854;3907:2;3895:9;3886:7;3882:23;3878:32;3875:52;;;3923:1;3920;3913:12;3875:52;3962:9;3949:23;3981:31;4006:5;3981:31;:::i;:::-;4031:5;-1:-1:-1;4088:2:1;4073:18;;4060:32;4101:33;4060:32;4101:33;:::i;4171:380::-;4250:1;4246:12;;;;4293;;;4314:61;;4368:4;4360:6;4356:17;4346:27;;4314:61;4421:2;4413:6;4410:14;4390:18;4387:38;4384:161;;4467:10;4462:3;4458:20;4455:1;4448:31;4502:4;4499:1;4492:15;4530:4;4527:1;4520:15;4384:161;;4171:380;;;:::o;4965:356::-;5167:2;5149:21;;;5186:18;;;5179:30;5245:34;5240:2;5225:18;;5218:62;5312:2;5297:18;;4965:356::o;5326:127::-;5387:10;5382:3;5378:20;5375:1;5368:31;5418:4;5415:1;5408:15;5442:4;5439:1;5432:15;5458:128;5498:3;5529:1;5525:6;5522:1;5519:13;5516:39;;;5535:18;;:::i;:::-;-1:-1:-1;5571:9:1;;5458:128::o;7183:168::-;7223:7;7289:1;7285;7281:6;7277:14;7274:1;7271:21;7266:1;7259:9;7252:17;7248:45;7245:71;;;7296:18;;:::i;:::-;-1:-1:-1;7336:9:1;;7183:168::o;7356:217::-;7396:1;7422;7412:132;;7466:10;7461:3;7457:20;7454:1;7447:31;7501:4;7498:1;7491:15;7529:4;7526:1;7519:15;7412:132;-1:-1:-1;7558:9:1;;7356:217::o;9636:401::-;9838:2;9820:21;;;9877:2;9857:18;;;9850:30;9916:34;9911:2;9896:18;;9889:62;-1:-1:-1;;;9982:2:1;9967:18;;9960:35;10027:3;10012:19;;9636:401::o;10042:399::-;10244:2;10226:21;;;10283:2;10263:18;;;10256:30;10322:34;10317:2;10302:18;;10295:62;-1:-1:-1;;;10388:2:1;10373:18;;10366:33;10431:3;10416:19;;10042:399::o;12807:125::-;12847:4;12875:1;12872;12869:8;12866:34;;;12880:18;;:::i;:::-;-1:-1:-1;12917:9:1;;12807:125::o;14780:127::-;14841:10;14836:3;14832:20;14829:1;14822:31;14872:4;14869:1;14862:15;14896:4;14893:1;14886:15;14912:251;14982:6;15035:2;15023:9;15014:7;15010:23;15006:32;15003:52;;;15051:1;15048;15041:12;15003:52;15083:9;15077:16;15102:31;15127:5;15102:31;:::i;15168:980::-;15430:4;15478:3;15467:9;15463:19;15509:6;15498:9;15491:25;15535:2;15573:6;15568:2;15557:9;15553:18;15546:34;15616:3;15611:2;15600:9;15596:18;15589:31;15640:6;15675;15669:13;15706:6;15698;15691:22;15744:3;15733:9;15729:19;15722:26;;15783:2;15775:6;15771:15;15757:29;;15804:1;15814:195;15828:6;15825:1;15822:13;15814:195;;;15893:13;;-1:-1:-1;;;;;15889:39:1;15877:52;;15984:15;;;;15949:12;;;;15925:1;15843:9;15814:195;;;-1:-1:-1;;;;;;;16065:32:1;;;;16060:2;16045:18;;16038:60;-1:-1:-1;;;16129:3:1;16114:19;16107:35;16026:3;15168:980;-1:-1:-1;;;15168:980:1:o;16765:306::-;16853:6;16861;16869;16922:2;16910:9;16901:7;16897:23;16893:32;16890:52;;;16938:1;16935;16928:12;16890:52;16967:9;16961:16;16951:26;;17017:2;17006:9;17002:18;16996:25;16986:35;;17061:2;17050:9;17046:18;17040:25;17030:35;;16765:306;;;;;:::o

Swarm Source

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