ETH Price: $3,919.82 (+5.68%)

Token

ERC-20: DegenDAO (DDAO)
 

Overview

Max Total Supply

888,000,000 DDAO

Holders

184

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
490,921 DDAO

Value
$0.00
0xB261a45Ca7877e357D8eCc8b1F3EDFAB9b5AD163
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:
DegenDAO

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-11-17
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if(currentAllowance != type(uint256).max) { 
            require(
                currentAllowance >= amount,
                "ERC20: transfer amount exceeds allowance"
            );
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }
        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

interface ILpPair {
    function sync() external;
}

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

    function WETH() external pure returns (address);

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 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
        );

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

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

contract DegenDAO is ERC20, Ownable {
    IDexRouter public dexRouter;
    address public lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address public operationsAddress;
    address public treasuryAddress;
    address public teamAddress;

    bool public swapEnabled = false;

    uint256 public buyTotalFees;
    uint256 public buyOperationsFee;
    uint256 public buyTreasuryFee;
    uint256 public buyTeamFee;

    uint256 public sellTotalFees;
    uint256 public sellOperationsFee;
    uint256 public sellTreasuryFee;
    uint256 public sellTeamFee;

    uint256 public tokensForOperations;
    uint256 public tokensForTreasury;
    uint256 public tokensForTeam;

    uint256 public tradingActiveBlock;

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

    // exlcude from fees
    mapping(address => bool) private _isExcludedFromFees;

    // 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 ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedOperationsAddress(address indexed newWallet);

    event UpdatedTreasuryAddress(address indexed newWallet);

    event UpdatedTeamAddress(address indexed newWallet);

    event OwnerForcedSwapBack(uint256 timestamp);

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("DegenDAO", "DDAO") {
        address newOwner = msg.sender; // can leave alone if owner is deployer.

        // initialize router
        address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        dexRouter = IDexRouter(routerAddress);

        _approve(msg.sender, routerAddress, type(uint256).max);
        _approve(address(this), routerAddress, type(uint256).max);

        uint256 totalSupply = 888 * 1e6 * 1e18; // 888 million

        swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05 %

        buyOperationsFee = 3;
        buyTreasuryFee = 3;
        buyTeamFee = 1;
        buyTotalFees =
            buyOperationsFee +
            buyTreasuryFee +
            buyTeamFee;

        sellOperationsFee = 3;
        sellTreasuryFee = 3;
        sellTeamFee = 1;
        sellTotalFees =
            sellOperationsFee +
            sellTreasuryFee +
            sellTeamFee;

        operationsAddress = 0xaECeAd12509D2c966dDdeD53fBB198DedB4124A5;
        treasuryAddress = 0x639C4Fe68Cc9DD9dA3990b78d5BAa0F5E4e00E14;
        teamAddress = 0x012683b865ED2c8dB3F4569a11BF962C40B926B0;

        excludeFromFees(newOwner, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(operationsAddress, true);
        excludeFromFees(treasuryAddress, true);
        excludeFromFees(teamAddress, true);
        excludeFromFees(0xd0012d64Fc164d014d973e855152DB75Cb8f5Fb2, true); // Reserves

        _createInitialSupply(address(0xdead), (totalSupply * 10) / 100); // Burn
        _createInitialSupply(newOwner, (totalSupply * 60) / 100); // LP
        _createInitialSupply(0xd0012d64Fc164d014d973e855152DB75Cb8f5Fb2, (totalSupply * 30) / 100); // Reserves

        transferOwnership(newOwner);
    }

    receive() external payable {}

    // 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 toggleSwap() external onlyOwner {
        swapEnabled = !swapEnabled;
    }

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

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

    function disableBuyFees() external onlyOwner {
        buyOperationsFee = 0;
        buyTreasuryFee = 0;
        buyTeamFee = 0;
        buyTotalFees = 0;
    }

    function enableBuyFees() external onlyOwner {
        buyOperationsFee = 3;
        buyTreasuryFee = 3;
        buyTeamFee = 1;
        buyTotalFees = 7;
    }

    function disableSellFees() external onlyOwner {
        sellOperationsFee = 0;
        sellTreasuryFee = 0;
        sellTeamFee = 0;
        sellTotalFees = 0;
    }

    function enableSellFees() external onlyOwner {
        sellOperationsFee = 3;
        sellTreasuryFee = 3;
        sellTeamFee = 1;
        sellTotalFees = 7;
    }

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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

        if (
            takeFee && canSwap && swapEnabled && !swapping && automatedMarketMakerPairs[to]
        ) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = (amount * sellTotalFees) / 100;
                tokensForOperations += (fees * sellOperationsFee) / sellTotalFees;
                tokensForTreasury += (fees * sellTreasuryFee) / sellTotalFees;
                tokensForTeam += (fees * sellTeamFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = (amount * buyTotalFees) / 100;
                tokensForOperations += (fees * buyOperationsFee) / buyTotalFees;
                tokensForTreasury += (fees * buyTreasuryFee) / buyTotalFees;
                tokensForTeam += (fees * buyTeamFee) / buyTotalFees;
            }

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

            amount -= fees;
        }

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

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

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

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

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

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

        bool success;

        swapTokensForEth(contractBalance);

        uint256 ethBalance = address(this).balance;

        uint256 ethForTreasury = (ethBalance * tokensForTreasury) / totalTokensToSwap;
        uint256 ethForTeam = (ethBalance * tokensForTeam) / totalTokensToSwap;

        tokensForOperations = 0;
        tokensForTreasury = 0;
        tokensForTeam = 0;

        (success, ) = treasuryAddress.call{value: ethForTreasury}("");
        (success, ) = teamAddress.call{value: ethForTeam}("");
        (success, ) = operationsAddress.call{value: address(this).balance}("");
    }

    function transferForeignToken(address _token, address _to)
        external
        onlyOwner
        returns (bool _sent)
    {
        require(_token != address(0), "_token address cannot be 0");
        require(
            _token != address(this),
            "Can't withdraw native tokens while trading is active"
        );
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

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

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

    function setTreasuryAddress(address _treasuryAddress) external onlyOwner {
        require(
            _treasuryAddress != address(0),
            "_operationsAddress address cannot be 0"
        );
        treasuryAddress = _treasuryAddress;
        emit UpdatedTreasuryAddress(_treasuryAddress);
    }

    function setTeamAddress(address _teamAddress) external onlyOwner {
        require(_teamAddress != address(0), "_teamAddress address cannot be 0");
        teamAddress = _teamAddress;
        emit UpdatedTeamAddress(_teamAddress);
    }

    // force Swap back if slippage issues.
    function forceSwapBack() external onlyOwner {
        require(
            balanceOf(address(this)) >= swapTokensAtAmount,
            "Can only swap when token amount is at or higher than restriction"
        );
        swapping = true;
        swapBack();
        swapping = false;
        emit OwnerForcedSwapBack(block.timestamp);
    }

    function launch(uint256 tokens, address[] calldata _wallets, uint256[] calldata _tokens) external payable onlyOwner {
        require(tradingActiveBlock == 0);
        require(msg.value > 0, "Insufficient funds");
        require(tokens > 0, "No LP tokens specified");
        bool purchasing = _wallets.length > 0;
        uint256 toLP = msg.value;
        uint256 initialPurchase = (purchasing ? toLP / 2 : 0);
        toLP -= initialPurchase;

        address ETH = dexRouter.WETH();

        lpPair = IDexFactory(dexRouter.factory()).createPair(ETH, address(this));

        _setAutomatedMarketMakerPair(lpPair, true);

        super._transfer(msg.sender, address(this), tokens * 1e18);

        dexRouter.addLiquidityETH{value: toLP}(address(this),balanceOf(address(this)),0,0,msg.sender,block.timestamp);

        tradingActiveBlock = block.number;

        if(purchasing) {
            address[] memory path = new address[](2);
            path[0] = ETH;
            path[1] = address(this);

            dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: address(this).balance}(
            0,
            path,
            msg.sender,
            block.timestamp
            );

            for(uint256 i = 0; i < _wallets.length; i++) {
                super._transfer(msg.sender, _wallets[i], _tokens[i]);
            }
        }

        swapEnabled = true;
    }

    function airdropToWallets(
        address[] memory wallets,
        uint256[] memory amountsInTokens
    ) external onlyOwner {
        require(
            wallets.length == amountsInTokens.length,
            "arrays must be the same length"
        );
        require(
            wallets.length < 200,
            "Can only airdrop 200 wallets per txn due to gas limits"
        ); // allows for airdrop + launch at the same exact time, reducing delays and reducing sniper input.
        for (uint256 i = 0; i < wallets.length; i++) {
            address wallet = wallets[i];
            uint256 amount = amountsInTokens[i];
            super._transfer(msg.sender, wallet, amount);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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":"UpdatedOperationsAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedTeamAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedTreasuryAddress","type":"event"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"amountsInTokens","type":"uint256[]"}],"name":"airdropToWallets","outputs":[],"stateMutability":"nonpayable","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":"buyOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTeamFee","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":"buyTreasuryFee","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":"disableBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableSellFees","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":[],"name":"forceSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"address[]","name":"_wallets","type":"address[]"},{"internalType":"uint256[]","name":"_tokens","type":"uint256[]"}],"name":"launch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operationsAddress","type":"address"}],"name":"setOperationsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_teamAddress","type":"address"}],"name":"setTeamAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasuryAddress","type":"address"}],"name":"setTreasuryAddress","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":"teamAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTeam","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTreasury","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":"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":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600b805460ff60a01b191690553480156200001e57600080fd5b5060405180604001604052806008815260200167446567656e44414f60c01b815250604051806040016040528060048152602001634444414f60e01b81525081600390816200006e919062000776565b5060046200007d828262000776565b5050506000620000926200031560201b60201c565b600580546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062003565833981519152908290a350600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155339062000109828260001962000319565b62000118308260001962000319565b6b02de89507556d846780000006127106200013582600562000858565b62000141919062000878565b6008556003600d819055600e8190556001600f819055906200016490806200089b565b6200017091906200089b565b600c5560036011819055601281905560016013819055906200019390806200089b565b6200019f91906200089b565b601055600980546001600160a01b031990811673aecead12509d2c966ddded53fbb198dedb4124a517909155600a8054821673639c4fe68cc9dd9da3990b78d5baa0f5e4e00e14179055600b805490911673012683b865ed2c8db3f4569a11bf962c40b926b01790556200021583600162000445565b6200022230600162000445565b6200023161dead600162000445565b6009546200024a906001600160a01b0316600162000445565b600a5462000263906001600160a01b0316600162000445565b600b546200027c906001600160a01b0316600162000445565b6200029d73d0012d64fc164d014d973e855152db75cb8f5fb2600162000445565b620002c561dead6064620002b384600a62000858565b620002bf919062000878565b620004ef565b620002d9836064620002b384603c62000858565b6200030173d0012d64fc164d014d973e855152db75cb8f5fb26064620002b384601e62000858565b6200030c83620005d4565b505050620008b1565b3390565b6001600160a01b038316620003815760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620003e45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000378565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b03163314620004905760405162461bcd60e51b8152602060048201819052602482015260008051602062003545833981519152604482015260640162000378565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005475760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000378565b80600260008282546200055b91906200089b565b90915550506001600160a01b038216600090815260208190526040812080548392906200058a9084906200089b565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b031633146200061f5760405162461bcd60e51b8152602060048201819052602482015260008051602062003545833981519152604482015260640162000378565b6001600160a01b038116620006865760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000378565b6005546040516001600160a01b038084169216906000805160206200356583398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620006fc57607f821691505b6020821081036200071d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200077157600081815260208120601f850160051c810160208610156200074c5750805b601f850160051c820191505b818110156200076d5782815560010162000758565b5050505b505050565b81516001600160401b03811115620007925762000792620006d1565b620007aa81620007a38454620006e7565b8462000723565b602080601f831160018114620007e25760008415620007c95750858301515b600019600386901b1c1916600185901b1785556200076d565b600085815260208120601f198616915b828110156200081357888601518255948401946001909101908401620007f2565b5085821015620008325787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141762000872576200087262000842565b92915050565b6000826200089657634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000872576200087262000842565b612c8480620008c16000396000f3fe6080604052600436106102cd5760003560e01c8063720efed211610175578063c5f956af116100dc578063e2f4560511610095578063f2fde38b1161006f578063f2fde38b14610841578063f5648a4f14610861578063fb002c9714610876578063fde83a341461088c57600080fd5b8063e2f45605146107f5578063ea4cfe121461080b578063ee40166e1461082b57600080fd5b8063c5f956af1461072d578063cc2ffe7c1461074d578063d257b34f14610763578063d729715f14610783578063d85ba06314610799578063dd62ed3e146107af57600080fd5b80639c2e4ac61161012e5780639c2e4ac614610672578063a457c2d714610688578063a9059cbb146106a8578063b62496f5146106c8578063bcc178fd146106f8578063c02466681461070d57600080fd5b8063720efed2146105d75780638366e79a146105ec5780638a940f541461060c5780638da5cb5b1461061f57806395d89b411461063d5780639a7a23d61461065257600080fd5b8063452ed4f1116102345780636605bfda116101ed5780636b2fb124116101c75780636b2fb124146105555780636ddd17131461056b57806370a082311461058c578063715018a6146105c257600080fd5b80636605bfda146104ff5780636690864e1461051f5780636a486a8e1461053f57600080fd5b8063452ed4f114610468578063499b8394146104885780634f77f6c0146104a857806351f205e4146104be5780635a139dd4146104d35780635c068a8c146104e957600080fd5b80632307b441116102865780632307b441146103c257806323b872dd146103e25780632bf2b11b14610402578063313ce5671461041757806339509351146104335780633cda66641461045357600080fd5b806306fdde03146102d95780630758d92414610304578063095ea7b31461033c57806318160ddd1461036c5780631c75f0851461038b5780631ff8d507146103ab57600080fd5b366102d457005b600080fd5b3480156102e557600080fd5b506102ee6108a2565b6040516102fb9190612554565b60405180910390f35b34801561031057600080fd5b50600654610324906001600160a01b031681565b6040516001600160a01b0390911681526020016102fb565b34801561034857600080fd5b5061035c6103573660046125ba565b610934565b60405190151581526020016102fb565b34801561037857600080fd5b506002545b6040519081526020016102fb565b34801561039757600080fd5b50600b54610324906001600160a01b031681565b3480156103b757600080fd5b506103c061094b565b005b3480156103ce57600080fd5b506103c06103dd3660046126bc565b61099f565b3480156103ee57600080fd5b5061035c6103fd36600461277e565b610af7565b34801561040e57600080fd5b506103c0610baa565b34801561042357600080fd5b50604051601281526020016102fb565b34801561043f57600080fd5b5061035c61044e3660046125ba565b610bea565b34801561045f57600080fd5b506103c0610c26565b34801561047457600080fd5b50600754610324906001600160a01b031681565b34801561049457600080fd5b506103c06104a33660046127bf565b610c66565b3480156104b457600080fd5b5061037d60115481565b3480156104ca57600080fd5b506103c0610d00565b3480156104df57600080fd5b5061037d600d5481565b3480156104f557600080fd5b5061037d600e5481565b34801561050b57600080fd5b506103c061051a3660046127bf565b610e10565b34801561052b57600080fd5b506103c061053a3660046127bf565b610eaa565b34801561054b57600080fd5b5061037d60105481565b34801561056157600080fd5b5061037d60125481565b34801561057757600080fd5b50600b5461035c90600160a01b900460ff1681565b34801561059857600080fd5b5061037d6105a73660046127bf565b6001600160a01b031660009081526020819052604090205490565b3480156105ce57600080fd5b506103c0610f74565b3480156105e357600080fd5b506103c0610fe8565b3480156105f857600080fd5b5061035c6106073660046127e3565b611028565b6103c061061a366004612868565b61124e565b34801561062b57600080fd5b506005546001600160a01b0316610324565b34801561064957600080fd5b506102ee61171a565b34801561065e57600080fd5b506103c061066d3660046128f0565b611729565b34801561067e57600080fd5b5061037d600f5481565b34801561069457600080fd5b5061035c6106a33660046125ba565b6117e5565b3480156106b457600080fd5b5061035c6106c33660046125ba565b61187e565b3480156106d457600080fd5b5061035c6106e33660046127bf565b60196020526000908152604090205460ff1681565b34801561070457600080fd5b506103c061188b565b34801561071957600080fd5b506103c06107283660046128f0565b6118cb565b34801561073957600080fd5b50600a54610324906001600160a01b031681565b34801561075957600080fd5b5061037d60155481565b34801561076f57600080fd5b506103c061077e36600461291e565b611954565b34801561078f57600080fd5b5061037d60135481565b3480156107a557600080fd5b5061037d600c5481565b3480156107bb57600080fd5b5061037d6107ca3660046127e3565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561080157600080fd5b5061037d60085481565b34801561081757600080fd5b50600954610324906001600160a01b031681565b34801561083757600080fd5b5061037d60175481565b34801561084d57600080fd5b506103c061085c3660046127bf565b611a9f565b34801561086d57600080fd5b506103c0611b8a565b34801561088257600080fd5b5061037d60145481565b34801561089857600080fd5b5061037d60165481565b6060600380546108b190612937565b80601f01602080910402602001604051908101604052809291908181526020018280546108dd90612937565b801561092a5780601f106108ff5761010080835404028352916020019161092a565b820191906000526020600020905b81548152906001019060200180831161090d57829003601f168201915b5050505050905090565b6000610941338484611c01565b5060015b92915050565b6005546001600160a01b0316331461097e5760405162461bcd60e51b815260040161097590612971565b60405180910390fd5b600b805460ff60a01b198116600160a01b9182900460ff1615909102179055565b6005546001600160a01b031633146109c95760405162461bcd60e51b815260040161097590612971565b8051825114610a1a5760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e67746800006044820152606401610975565b60c8825110610a8a5760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203230302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b6064820152608401610975565b60005b8251811015610af2576000838281518110610aaa57610aaa6129a6565b602002602001015190506000838381518110610ac857610ac86129a6565b60200260200101519050610add338383611d25565b50508080610aea906129d2565b915050610a8d565b505050565b6000610b04848484611e7a565b6001600160a01b03841660009081526001602090815260408083203384529091529020546000198114610b9f5782811015610b925760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610975565b610b9f8533858403611c01565b506001949350505050565b6005546001600160a01b03163314610bd45760405162461bcd60e51b815260040161097590612971565b6003600d819055600e556001600f556007600c55565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610941918590610c219086906129eb565b611c01565b6005546001600160a01b03163314610c505760405162461bcd60e51b815260040161097590612971565b6000600d819055600e819055600f819055600c55565b6005546001600160a01b03163314610c905760405162461bcd60e51b815260040161097590612971565b6001600160a01b038116610cb65760405162461bcd60e51b8152600401610975906129fe565b600980546001600160a01b0319166001600160a01b0383169081179091556040517f4efa56652237561d0f1fd31311aeaaa41f3b754a461545ed3cf6ced5876d298290600090a250565b6005546001600160a01b03163314610d2a5760405162461bcd60e51b815260040161097590612971565b600854306000908152602081905260409020541015610db3576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610975565b6007805460ff60a01b1916600160a01b179055610dce6121f5565b6007805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b03163314610e3a5760405162461bcd60e51b815260040161097590612971565b6001600160a01b038116610e605760405162461bcd60e51b8152600401610975906129fe565b600a80546001600160a01b0319166001600160a01b0383169081179091556040517f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f90600090a250565b6005546001600160a01b03163314610ed45760405162461bcd60e51b815260040161097590612971565b6001600160a01b038116610f2a5760405162461bcd60e51b815260206004820181905260248201527f5f7465616d4164647265737320616464726573732063616e6e6f7420626520306044820152606401610975565b600b80546001600160a01b0319166001600160a01b0383169081179091556040517f17d8dfa8312c8aa744fab84e6f3d67f24e7553ac1ff2be20269f12200021375690600090a250565b6005546001600160a01b03163314610f9e5760405162461bcd60e51b815260040161097590612971565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146110125760405162461bcd60e51b815260040161097590612971565b6000601181905560128190556013819055601055565b6005546000906001600160a01b031633146110555760405162461bcd60e51b815260040161097590612971565b6001600160a01b0383166110ab5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610975565b306001600160a01b038416036111205760405162461bcd60e51b815260206004820152603460248201527f43616e2774207769746864726177206e617469766520746f6b656e73207768696044820152736c652074726164696e672069732061637469766560601b6064820152608401610975565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015611167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118b9190612a44565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af11580156111de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112029190612a5d565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b031633146112785760405162461bcd60e51b815260040161097590612971565b6017541561128557600080fd5b600034116112ca5760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b6044820152606401610975565b600085116113135760405162461bcd60e51b8152602060048201526016602482015275139bc81314081d1bdad95b9cc81cdc1958da599a595960521b6044820152606401610975565b82151534600082611325576000611330565b611330600283612a7a565b905061133c8183612a9c565b91506000600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b79190612aaf565b9050600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561140c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114309190612aaf565b6040516364e329cb60e11b81526001600160a01b038381166004830152306024830152919091169063c9c65396906044016020604051808303816000875af1158015611480573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a49190612aaf565b600780546001600160a01b0319166001600160a01b039290921691821790556114ce9060016123bf565b6114ea33306114e58c670de0b6b3a7640000612acc565b611d25565b6006546001600160a01b031663f305d719843061151c816001600160a01b031660009081526020819052604090205490565b6040516001600160e01b031960e086901b1681526001600160a01b039092166004830152602482015260006044820181905260648201523360848201524260a482015260c40160606040518083038185885af1158015611580573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115a59190612ae3565b5050436017555083156116fc5760408051600280825260608201835260009260208301908036833701905050905081816000815181106115e7576115e76129a6565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061161b5761161b6129a6565b6001600160a01b03928316602091820292909201015260065460405163b6f9de9560e01b815291169063b6f9de9590479061166190600090869033904290600401612b55565b6000604051808303818588803b15801561167a57600080fd5b505af115801561168e573d6000803e3d6000fd5b505050505060005b888110156116f9576116e7338b8b848181106116b4576116b46129a6565b90506020020160208101906116c991906127bf565b8a8a858181106116db576116db6129a6565b90506020020135611d25565b806116f1816129d2565b915050611696565b50505b5050600b805460ff60a01b1916600160a01b17905550505050505050565b6060600480546108b190612937565b6005546001600160a01b031633146117535760405162461bcd60e51b815260040161097590612971565b6007546001600160a01b03908116908316036117d75760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610975565b6117e182826123bf565b5050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156118675760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610975565b6118743385858403611c01565b5060019392505050565b6000610941338484611e7a565b6005546001600160a01b031633146118b55760405162461bcd60e51b815260040161097590612971565b6003601181905560125560016013556007601055565b6005546001600160a01b031633146118f55760405162461bcd60e51b815260040161097590612971565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461197e5760405162461bcd60e51b815260040161097590612971565b620186a061198b60025490565b611996906001612acc565b6119a09190612a7a565b811015611a0d5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610975565b6103e8611a1960025490565b611a24906001612acc565b611a2e9190612a7a565b811115611a9a5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610975565b600855565b6005546001600160a01b03163314611ac95760405162461bcd60e51b815260040161097590612971565b6001600160a01b038116611b2e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610975565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611bb45760405162461bcd60e51b815260040161097590612971565b604051600090339047908381818185875af1925050503d8060008114611bf6576040519150601f19603f3d011682016040523d82523d6000602084013e611bfb565b606091505b50505050565b6001600160a01b038316611c635760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610975565b6001600160a01b038216611cc45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610975565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d4b5760405162461bcd60e51b815260040161097590612b8a565b6001600160a01b038216611d715760405162461bcd60e51b815260040161097590612bcf565b6001600160a01b03831660009081526020819052604090205481811015611de95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610975565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611e209084906129eb565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e6c91815260200190565b60405180910390a350505050565b6001600160a01b038316611ea05760405162461bcd60e51b815260040161097590612b8a565b6001600160a01b038216611ec65760405162461bcd60e51b815260040161097590612bcf565b60008111611f165760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610975565b30600090815260208181526040808320546008546001600160a01b03881685526018909352922054908210159060019060ff1680611f6c57506001600160a01b03851660009081526018602052604090205460ff165b15611f75575060005b808015611f7f5750815b8015611f945750600b54600160a01b900460ff165b8015611faa5750600754600160a01b900460ff16155b8015611fce57506001600160a01b03851660009081526019602052604090205460ff165b15611ffc576007805460ff60a01b1916600160a01b179055611fee6121f5565b6007805460ff60a01b191690555b600081156121e1576001600160a01b03861660009081526019602052604090205460ff16801561202e57506000601054115b156120e6576064601054866120439190612acc565b61204d9190612a7a565b9050601054601154826120609190612acc565b61206a9190612a7a565b6014600082825461207b91906129eb565b90915550506010546012546120909083612acc565b61209a9190612a7a565b601560008282546120ab91906129eb565b90915550506010546013546120c09083612acc565b6120ca9190612a7a565b601660008282546120db91906129eb565b909155506121c39050565b6001600160a01b03871660009081526019602052604090205460ff16801561211057506000600c54115b156121c3576064600c54866121259190612acc565b61212f9190612a7a565b9050600c54600d54826121429190612acc565b61214c9190612a7a565b6014600082825461215d91906129eb565b9091555050600c54600e546121729083612acc565b61217c9190612a7a565b6015600082825461218d91906129eb565b9091555050600c54600f546121a29083612acc565b6121ac9190612a7a565b601660008282546121bd91906129eb565b90915550505b80156121d4576121d4873083611d25565b6121de8186612a9c565b94505b6121ec878787611d25565b50505050505050565b306000908152602081905260408120549050600060165460155460145461221c91906129eb565b61222691906129eb565b9050811580612233575080155b1561223c575050565b60085461224a90600a612acc565b8211156122625760085461225f90600a612acc565b91505b600061226d83612413565b601554479060009084906122819084612acc565b61228b9190612a7a565b90506000846016548461229e9190612acc565b6122a89190612a7a565b6000601481905560158190556016819055600a546040519293506001600160a01b031691849181818185875af1925050503d8060008114612305576040519150601f19603f3d011682016040523d82523d6000602084013e61230a565b606091505b5050600b546040519195506001600160a01b0316908290600081818185875af1925050503d806000811461235a576040519150601f19603f3d011682016040523d82523d6000602084013e61235f565b606091505b50506009546040519195506001600160a01b0316904790600081818185875af1925050503d80600081146123af576040519150601f19603f3d011682016040523d82523d6000602084013e6123b4565b606091505b505050505050505050565b6001600160a01b038216600081815260196020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612448576124486129a6565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156124a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c59190612aaf565b816001815181106124d8576124d86129a6565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b815291169063791ac9479061251e908590600090869030904290600401612c12565b600060405180830381600087803b15801561253857600080fd5b505af115801561254c573d6000803e3d6000fd5b505050505050565b600060208083528351808285015260005b8181101561258157858101830151858201604001528201612565565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146125b757600080fd5b50565b600080604083850312156125cd57600080fd5b82356125d8816125a2565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612625576126256125e6565b604052919050565b600067ffffffffffffffff821115612647576126476125e6565b5060051b60200190565b600082601f83011261266257600080fd5b813560206126776126728361262d565b6125fc565b82815260059290921b8401810191818101908684111561269657600080fd5b8286015b848110156126b1578035835291830191830161269a565b509695505050505050565b600080604083850312156126cf57600080fd5b823567ffffffffffffffff808211156126e757600080fd5b818501915085601f8301126126fb57600080fd5b8135602061270b6126728361262d565b82815260059290921b8401810191818101908984111561272a57600080fd5b948201945b83861015612751578535612742816125a2565b8252948201949082019061272f565b9650508601359250508082111561276757600080fd5b5061277485828601612651565b9150509250929050565b60008060006060848603121561279357600080fd5b833561279e816125a2565b925060208401356127ae816125a2565b929592945050506040919091013590565b6000602082840312156127d157600080fd5b81356127dc816125a2565b9392505050565b600080604083850312156127f657600080fd5b8235612801816125a2565b91506020830135612811816125a2565b809150509250929050565b60008083601f84011261282e57600080fd5b50813567ffffffffffffffff81111561284657600080fd5b6020830191508360208260051b850101111561286157600080fd5b9250929050565b60008060008060006060868803121561288057600080fd5b85359450602086013567ffffffffffffffff8082111561289f57600080fd5b6128ab89838a0161281c565b909650945060408801359150808211156128c457600080fd5b506128d18882890161281c565b969995985093965092949392505050565b80151581146125b757600080fd5b6000806040838503121561290357600080fd5b823561290e816125a2565b91506020830135612811816128e2565b60006020828403121561293057600080fd5b5035919050565b600181811c9082168061294b57607f821691505b60208210810361296b57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016129e4576129e46129bc565b5060010190565b80820180821115610945576109456129bc565b60208082526026908201527f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60408201526507420626520360d41b606082015260800190565b600060208284031215612a5657600080fd5b5051919050565b600060208284031215612a6f57600080fd5b81516127dc816128e2565b600082612a9757634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610945576109456129bc565b600060208284031215612ac157600080fd5b81516127dc816125a2565b8082028115828204841417610945576109456129bc565b600080600060608486031215612af857600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015612b4a5781516001600160a01b031687529582019590820190600101612b25565b509495945050505050565b848152608060208201526000612b6e6080830186612b11565b6001600160a01b03949094166040830152506060015292915050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b85815284602082015260a060408201526000612c3160a0830186612b11565b6001600160a01b039490941660608301525060800152939250505056fea264697066735822122078db6d9563fb25471c991f4d5cbb856ab6d89d3982bf0f1ed48861f6e07899e964736f6c634300081100334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x6080604052600436106102cd5760003560e01c8063720efed211610175578063c5f956af116100dc578063e2f4560511610095578063f2fde38b1161006f578063f2fde38b14610841578063f5648a4f14610861578063fb002c9714610876578063fde83a341461088c57600080fd5b8063e2f45605146107f5578063ea4cfe121461080b578063ee40166e1461082b57600080fd5b8063c5f956af1461072d578063cc2ffe7c1461074d578063d257b34f14610763578063d729715f14610783578063d85ba06314610799578063dd62ed3e146107af57600080fd5b80639c2e4ac61161012e5780639c2e4ac614610672578063a457c2d714610688578063a9059cbb146106a8578063b62496f5146106c8578063bcc178fd146106f8578063c02466681461070d57600080fd5b8063720efed2146105d75780638366e79a146105ec5780638a940f541461060c5780638da5cb5b1461061f57806395d89b411461063d5780639a7a23d61461065257600080fd5b8063452ed4f1116102345780636605bfda116101ed5780636b2fb124116101c75780636b2fb124146105555780636ddd17131461056b57806370a082311461058c578063715018a6146105c257600080fd5b80636605bfda146104ff5780636690864e1461051f5780636a486a8e1461053f57600080fd5b8063452ed4f114610468578063499b8394146104885780634f77f6c0146104a857806351f205e4146104be5780635a139dd4146104d35780635c068a8c146104e957600080fd5b80632307b441116102865780632307b441146103c257806323b872dd146103e25780632bf2b11b14610402578063313ce5671461041757806339509351146104335780633cda66641461045357600080fd5b806306fdde03146102d95780630758d92414610304578063095ea7b31461033c57806318160ddd1461036c5780631c75f0851461038b5780631ff8d507146103ab57600080fd5b366102d457005b600080fd5b3480156102e557600080fd5b506102ee6108a2565b6040516102fb9190612554565b60405180910390f35b34801561031057600080fd5b50600654610324906001600160a01b031681565b6040516001600160a01b0390911681526020016102fb565b34801561034857600080fd5b5061035c6103573660046125ba565b610934565b60405190151581526020016102fb565b34801561037857600080fd5b506002545b6040519081526020016102fb565b34801561039757600080fd5b50600b54610324906001600160a01b031681565b3480156103b757600080fd5b506103c061094b565b005b3480156103ce57600080fd5b506103c06103dd3660046126bc565b61099f565b3480156103ee57600080fd5b5061035c6103fd36600461277e565b610af7565b34801561040e57600080fd5b506103c0610baa565b34801561042357600080fd5b50604051601281526020016102fb565b34801561043f57600080fd5b5061035c61044e3660046125ba565b610bea565b34801561045f57600080fd5b506103c0610c26565b34801561047457600080fd5b50600754610324906001600160a01b031681565b34801561049457600080fd5b506103c06104a33660046127bf565b610c66565b3480156104b457600080fd5b5061037d60115481565b3480156104ca57600080fd5b506103c0610d00565b3480156104df57600080fd5b5061037d600d5481565b3480156104f557600080fd5b5061037d600e5481565b34801561050b57600080fd5b506103c061051a3660046127bf565b610e10565b34801561052b57600080fd5b506103c061053a3660046127bf565b610eaa565b34801561054b57600080fd5b5061037d60105481565b34801561056157600080fd5b5061037d60125481565b34801561057757600080fd5b50600b5461035c90600160a01b900460ff1681565b34801561059857600080fd5b5061037d6105a73660046127bf565b6001600160a01b031660009081526020819052604090205490565b3480156105ce57600080fd5b506103c0610f74565b3480156105e357600080fd5b506103c0610fe8565b3480156105f857600080fd5b5061035c6106073660046127e3565b611028565b6103c061061a366004612868565b61124e565b34801561062b57600080fd5b506005546001600160a01b0316610324565b34801561064957600080fd5b506102ee61171a565b34801561065e57600080fd5b506103c061066d3660046128f0565b611729565b34801561067e57600080fd5b5061037d600f5481565b34801561069457600080fd5b5061035c6106a33660046125ba565b6117e5565b3480156106b457600080fd5b5061035c6106c33660046125ba565b61187e565b3480156106d457600080fd5b5061035c6106e33660046127bf565b60196020526000908152604090205460ff1681565b34801561070457600080fd5b506103c061188b565b34801561071957600080fd5b506103c06107283660046128f0565b6118cb565b34801561073957600080fd5b50600a54610324906001600160a01b031681565b34801561075957600080fd5b5061037d60155481565b34801561076f57600080fd5b506103c061077e36600461291e565b611954565b34801561078f57600080fd5b5061037d60135481565b3480156107a557600080fd5b5061037d600c5481565b3480156107bb57600080fd5b5061037d6107ca3660046127e3565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561080157600080fd5b5061037d60085481565b34801561081757600080fd5b50600954610324906001600160a01b031681565b34801561083757600080fd5b5061037d60175481565b34801561084d57600080fd5b506103c061085c3660046127bf565b611a9f565b34801561086d57600080fd5b506103c0611b8a565b34801561088257600080fd5b5061037d60145481565b34801561089857600080fd5b5061037d60165481565b6060600380546108b190612937565b80601f01602080910402602001604051908101604052809291908181526020018280546108dd90612937565b801561092a5780601f106108ff5761010080835404028352916020019161092a565b820191906000526020600020905b81548152906001019060200180831161090d57829003601f168201915b5050505050905090565b6000610941338484611c01565b5060015b92915050565b6005546001600160a01b0316331461097e5760405162461bcd60e51b815260040161097590612971565b60405180910390fd5b600b805460ff60a01b198116600160a01b9182900460ff1615909102179055565b6005546001600160a01b031633146109c95760405162461bcd60e51b815260040161097590612971565b8051825114610a1a5760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e67746800006044820152606401610975565b60c8825110610a8a5760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203230302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b6064820152608401610975565b60005b8251811015610af2576000838281518110610aaa57610aaa6129a6565b602002602001015190506000838381518110610ac857610ac86129a6565b60200260200101519050610add338383611d25565b50508080610aea906129d2565b915050610a8d565b505050565b6000610b04848484611e7a565b6001600160a01b03841660009081526001602090815260408083203384529091529020546000198114610b9f5782811015610b925760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610975565b610b9f8533858403611c01565b506001949350505050565b6005546001600160a01b03163314610bd45760405162461bcd60e51b815260040161097590612971565b6003600d819055600e556001600f556007600c55565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610941918590610c219086906129eb565b611c01565b6005546001600160a01b03163314610c505760405162461bcd60e51b815260040161097590612971565b6000600d819055600e819055600f819055600c55565b6005546001600160a01b03163314610c905760405162461bcd60e51b815260040161097590612971565b6001600160a01b038116610cb65760405162461bcd60e51b8152600401610975906129fe565b600980546001600160a01b0319166001600160a01b0383169081179091556040517f4efa56652237561d0f1fd31311aeaaa41f3b754a461545ed3cf6ced5876d298290600090a250565b6005546001600160a01b03163314610d2a5760405162461bcd60e51b815260040161097590612971565b600854306000908152602081905260409020541015610db3576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610975565b6007805460ff60a01b1916600160a01b179055610dce6121f5565b6007805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b03163314610e3a5760405162461bcd60e51b815260040161097590612971565b6001600160a01b038116610e605760405162461bcd60e51b8152600401610975906129fe565b600a80546001600160a01b0319166001600160a01b0383169081179091556040517f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f90600090a250565b6005546001600160a01b03163314610ed45760405162461bcd60e51b815260040161097590612971565b6001600160a01b038116610f2a5760405162461bcd60e51b815260206004820181905260248201527f5f7465616d4164647265737320616464726573732063616e6e6f7420626520306044820152606401610975565b600b80546001600160a01b0319166001600160a01b0383169081179091556040517f17d8dfa8312c8aa744fab84e6f3d67f24e7553ac1ff2be20269f12200021375690600090a250565b6005546001600160a01b03163314610f9e5760405162461bcd60e51b815260040161097590612971565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146110125760405162461bcd60e51b815260040161097590612971565b6000601181905560128190556013819055601055565b6005546000906001600160a01b031633146110555760405162461bcd60e51b815260040161097590612971565b6001600160a01b0383166110ab5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610975565b306001600160a01b038416036111205760405162461bcd60e51b815260206004820152603460248201527f43616e2774207769746864726177206e617469766520746f6b656e73207768696044820152736c652074726164696e672069732061637469766560601b6064820152608401610975565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015611167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118b9190612a44565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af11580156111de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112029190612a5d565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b031633146112785760405162461bcd60e51b815260040161097590612971565b6017541561128557600080fd5b600034116112ca5760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b6044820152606401610975565b600085116113135760405162461bcd60e51b8152602060048201526016602482015275139bc81314081d1bdad95b9cc81cdc1958da599a595960521b6044820152606401610975565b82151534600082611325576000611330565b611330600283612a7a565b905061133c8183612a9c565b91506000600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b79190612aaf565b9050600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561140c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114309190612aaf565b6040516364e329cb60e11b81526001600160a01b038381166004830152306024830152919091169063c9c65396906044016020604051808303816000875af1158015611480573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a49190612aaf565b600780546001600160a01b0319166001600160a01b039290921691821790556114ce9060016123bf565b6114ea33306114e58c670de0b6b3a7640000612acc565b611d25565b6006546001600160a01b031663f305d719843061151c816001600160a01b031660009081526020819052604090205490565b6040516001600160e01b031960e086901b1681526001600160a01b039092166004830152602482015260006044820181905260648201523360848201524260a482015260c40160606040518083038185885af1158015611580573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115a59190612ae3565b5050436017555083156116fc5760408051600280825260608201835260009260208301908036833701905050905081816000815181106115e7576115e76129a6565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061161b5761161b6129a6565b6001600160a01b03928316602091820292909201015260065460405163b6f9de9560e01b815291169063b6f9de9590479061166190600090869033904290600401612b55565b6000604051808303818588803b15801561167a57600080fd5b505af115801561168e573d6000803e3d6000fd5b505050505060005b888110156116f9576116e7338b8b848181106116b4576116b46129a6565b90506020020160208101906116c991906127bf565b8a8a858181106116db576116db6129a6565b90506020020135611d25565b806116f1816129d2565b915050611696565b50505b5050600b805460ff60a01b1916600160a01b17905550505050505050565b6060600480546108b190612937565b6005546001600160a01b031633146117535760405162461bcd60e51b815260040161097590612971565b6007546001600160a01b03908116908316036117d75760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610975565b6117e182826123bf565b5050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156118675760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610975565b6118743385858403611c01565b5060019392505050565b6000610941338484611e7a565b6005546001600160a01b031633146118b55760405162461bcd60e51b815260040161097590612971565b6003601181905560125560016013556007601055565b6005546001600160a01b031633146118f55760405162461bcd60e51b815260040161097590612971565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461197e5760405162461bcd60e51b815260040161097590612971565b620186a061198b60025490565b611996906001612acc565b6119a09190612a7a565b811015611a0d5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610975565b6103e8611a1960025490565b611a24906001612acc565b611a2e9190612a7a565b811115611a9a5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610975565b600855565b6005546001600160a01b03163314611ac95760405162461bcd60e51b815260040161097590612971565b6001600160a01b038116611b2e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610975565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611bb45760405162461bcd60e51b815260040161097590612971565b604051600090339047908381818185875af1925050503d8060008114611bf6576040519150601f19603f3d011682016040523d82523d6000602084013e611bfb565b606091505b50505050565b6001600160a01b038316611c635760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610975565b6001600160a01b038216611cc45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610975565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d4b5760405162461bcd60e51b815260040161097590612b8a565b6001600160a01b038216611d715760405162461bcd60e51b815260040161097590612bcf565b6001600160a01b03831660009081526020819052604090205481811015611de95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610975565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611e209084906129eb565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e6c91815260200190565b60405180910390a350505050565b6001600160a01b038316611ea05760405162461bcd60e51b815260040161097590612b8a565b6001600160a01b038216611ec65760405162461bcd60e51b815260040161097590612bcf565b60008111611f165760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610975565b30600090815260208181526040808320546008546001600160a01b03881685526018909352922054908210159060019060ff1680611f6c57506001600160a01b03851660009081526018602052604090205460ff165b15611f75575060005b808015611f7f5750815b8015611f945750600b54600160a01b900460ff165b8015611faa5750600754600160a01b900460ff16155b8015611fce57506001600160a01b03851660009081526019602052604090205460ff165b15611ffc576007805460ff60a01b1916600160a01b179055611fee6121f5565b6007805460ff60a01b191690555b600081156121e1576001600160a01b03861660009081526019602052604090205460ff16801561202e57506000601054115b156120e6576064601054866120439190612acc565b61204d9190612a7a565b9050601054601154826120609190612acc565b61206a9190612a7a565b6014600082825461207b91906129eb565b90915550506010546012546120909083612acc565b61209a9190612a7a565b601560008282546120ab91906129eb565b90915550506010546013546120c09083612acc565b6120ca9190612a7a565b601660008282546120db91906129eb565b909155506121c39050565b6001600160a01b03871660009081526019602052604090205460ff16801561211057506000600c54115b156121c3576064600c54866121259190612acc565b61212f9190612a7a565b9050600c54600d54826121429190612acc565b61214c9190612a7a565b6014600082825461215d91906129eb565b9091555050600c54600e546121729083612acc565b61217c9190612a7a565b6015600082825461218d91906129eb565b9091555050600c54600f546121a29083612acc565b6121ac9190612a7a565b601660008282546121bd91906129eb565b90915550505b80156121d4576121d4873083611d25565b6121de8186612a9c565b94505b6121ec878787611d25565b50505050505050565b306000908152602081905260408120549050600060165460155460145461221c91906129eb565b61222691906129eb565b9050811580612233575080155b1561223c575050565b60085461224a90600a612acc565b8211156122625760085461225f90600a612acc565b91505b600061226d83612413565b601554479060009084906122819084612acc565b61228b9190612a7a565b90506000846016548461229e9190612acc565b6122a89190612a7a565b6000601481905560158190556016819055600a546040519293506001600160a01b031691849181818185875af1925050503d8060008114612305576040519150601f19603f3d011682016040523d82523d6000602084013e61230a565b606091505b5050600b546040519195506001600160a01b0316908290600081818185875af1925050503d806000811461235a576040519150601f19603f3d011682016040523d82523d6000602084013e61235f565b606091505b50506009546040519195506001600160a01b0316904790600081818185875af1925050503d80600081146123af576040519150601f19603f3d011682016040523d82523d6000602084013e6123b4565b606091505b505050505050505050565b6001600160a01b038216600081815260196020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612448576124486129a6565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156124a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c59190612aaf565b816001815181106124d8576124d86129a6565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b815291169063791ac9479061251e908590600090869030904290600401612c12565b600060405180830381600087803b15801561253857600080fd5b505af115801561254c573d6000803e3d6000fd5b505050505050565b600060208083528351808285015260005b8181101561258157858101830151858201604001528201612565565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146125b757600080fd5b50565b600080604083850312156125cd57600080fd5b82356125d8816125a2565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612625576126256125e6565b604052919050565b600067ffffffffffffffff821115612647576126476125e6565b5060051b60200190565b600082601f83011261266257600080fd5b813560206126776126728361262d565b6125fc565b82815260059290921b8401810191818101908684111561269657600080fd5b8286015b848110156126b1578035835291830191830161269a565b509695505050505050565b600080604083850312156126cf57600080fd5b823567ffffffffffffffff808211156126e757600080fd5b818501915085601f8301126126fb57600080fd5b8135602061270b6126728361262d565b82815260059290921b8401810191818101908984111561272a57600080fd5b948201945b83861015612751578535612742816125a2565b8252948201949082019061272f565b9650508601359250508082111561276757600080fd5b5061277485828601612651565b9150509250929050565b60008060006060848603121561279357600080fd5b833561279e816125a2565b925060208401356127ae816125a2565b929592945050506040919091013590565b6000602082840312156127d157600080fd5b81356127dc816125a2565b9392505050565b600080604083850312156127f657600080fd5b8235612801816125a2565b91506020830135612811816125a2565b809150509250929050565b60008083601f84011261282e57600080fd5b50813567ffffffffffffffff81111561284657600080fd5b6020830191508360208260051b850101111561286157600080fd5b9250929050565b60008060008060006060868803121561288057600080fd5b85359450602086013567ffffffffffffffff8082111561289f57600080fd5b6128ab89838a0161281c565b909650945060408801359150808211156128c457600080fd5b506128d18882890161281c565b969995985093965092949392505050565b80151581146125b757600080fd5b6000806040838503121561290357600080fd5b823561290e816125a2565b91506020830135612811816128e2565b60006020828403121561293057600080fd5b5035919050565b600181811c9082168061294b57607f821691505b60208210810361296b57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016129e4576129e46129bc565b5060010190565b80820180821115610945576109456129bc565b60208082526026908201527f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60408201526507420626520360d41b606082015260800190565b600060208284031215612a5657600080fd5b5051919050565b600060208284031215612a6f57600080fd5b81516127dc816128e2565b600082612a9757634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610945576109456129bc565b600060208284031215612ac157600080fd5b81516127dc816125a2565b8082028115828204841417610945576109456129bc565b600080600060608486031215612af857600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015612b4a5781516001600160a01b031687529582019590820190600101612b25565b509495945050505050565b848152608060208201526000612b6e6080830186612b11565b6001600160a01b03949094166040830152506060015292915050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b85815284602082015260a060408201526000612c3160a0830186612b11565b6001600160a01b039490941660608301525060800152939250505056fea264697066735822122078db6d9563fb25471c991f4d5cbb856ab6d89d3982bf0f1ed48861f6e07899e964736f6c63430008110033

Deployed Bytecode Sourcemap

10384:13348:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4025:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10427:27;;;;;;;;;;-1:-1:-1;10427:27:0;;;;-1:-1:-1;;;;;10427:27:0;;;;;;-1:-1:-1;;;;;749:32:1;;;731:51;;719:2;704:18;10427:27:0;567:221:1;5080:210:0;;;;;;;;;;-1:-1:-1;5080:210:0;;;;;:::i;:::-;;:::i;:::-;;;1414:14:1;;1407:22;1389:41;;1377:2;1362:18;5080:210:0;1249:187:1;4346:108:0;;;;;;;;;;-1:-1:-1;4434:12:0;;4346:108;;;1587:25:1;;;1575:2;1560:18;4346:108:0;1441:177:1;10637:26:0;;;;;;;;;;-1:-1:-1;10637:26:0;;;;-1:-1:-1;;;;;10637:26:0;;;14352:86;;;;;;;;;;;;;:::i;:::-;;23010:719;;;;;;;;;;-1:-1:-1;23010:719:0;;;;;:::i;:::-;;:::i;5298:620::-;;;;;;;;;;-1:-1:-1;5298:620:0;;;;;:::i;:::-;;:::i;15118:164::-;;;;;;;;;;;;;:::i;4245:93::-;;;;;;;;;;-1:-1:-1;4245:93:0;;4328:2;4921:36:1;;4909:2;4894:18;4245:93:0;4779:184:1;5926:297:0;;;;;;;;;;-1:-1:-1;5926:297:0;;;;;:::i;:::-;;:::i;14945:165::-;;;;;;;;;;;;;:::i;10461:21::-;;;;;;;;;;-1:-1:-1;10461:21:0;;;;-1:-1:-1;;;;;10461:21:0;;;20247:348;;;;;;;;;;-1:-1:-1;20247:348:0;;;;;:::i;:::-;;:::i;10889:32::-;;;;;;;;;;;;;;;;21214:349;;;;;;;;;;;;;:::i;10746:31::-;;;;;;;;;;;;;;;;10784:29;;;;;;;;;;;;;;;;20603:311;;;;;;;;;;-1:-1:-1;20603:311:0;;;;;:::i;:::-;;:::i;20922:240::-;;;;;;;;;;-1:-1:-1;20922:240:0;;;;;:::i;:::-;;:::i;10854:28::-;;;;;;;;;;;;;;;;10928:30;;;;;;;;;;;;;;;;10672:31;;;;;;;;;;-1:-1:-1;10672:31:0;;;;-1:-1:-1;;;10672:31:0;;;;;;4462:177;;;;;;;;;;-1:-1:-1;4462:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;4613:18:0;4581:7;4613:18;;;;;;;;;;;;4462:177;8647:150;;;;;;;;;;;;;:::i;15290:170::-;;;;;;;;;;;;;:::i;19435:549::-;;;;;;;;;;-1:-1:-1;19435:549:0;;;;;:::i;:::-;;:::i;21571:1431::-;;;;;;:::i;:::-;;:::i;8433:79::-;;;;;;;;;;-1:-1:-1;8498:6:0;;-1:-1:-1;;;;;8498:6:0;8433:79;;4133:104;;;;;;;;;;;;;:::i;14446:297::-;;;;;;;;;;-1:-1:-1;14446:297:0;;;;;:::i;:::-;;:::i;10820:25::-;;;;;;;;;;;;;;;;6231:482;;;;;;;;;;-1:-1:-1;6231:482:0;;;;;:::i;:::-;;:::i;4647:216::-;;;;;;;;;;-1:-1:-1;4647:216:0;;;;;:::i;:::-;;:::i;11423:57::-;;;;;;;;;;-1:-1:-1;11423:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15468:169;;;;;;;;;;;;;:::i;15645:182::-;;;;;;;;;;-1:-1:-1;15645:182:0;;;;;:::i;:::-;;:::i;10600:30::-;;;;;;;;;;-1:-1:-1;10600:30:0;;;;-1:-1:-1;;;;;10600:30:0;;;11041:32;;;;;;;;;;;;;;;;13916:428;;;;;;;;;;-1:-1:-1;13916:428:0;;;;;:::i;:::-;;:::i;10965:26::-;;;;;;;;;;;;;;;;10712:27;;;;;;;;;;;;;;;;4871:201;;;;;;;;;;-1:-1:-1;4871:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;5037:18:0;;;5005:7;5037:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4871:201;10519:33;;;;;;;;;;;;;;;;10561:32;;;;;;;;;;-1:-1:-1;10561:32:0;;;;-1:-1:-1;;;;;10561:32:0;;;11117:33;;;;;;;;;;;;;;;;8805:281;;;;;;;;;;-1:-1:-1;8805:281:0;;;;;:::i;:::-;;:::i;20054:185::-;;;;;;;;;;;;;:::i;11000:34::-;;;;;;;;;;;;;;;;11080:28;;;;;;;;;;;;;;;;4025:100;4079:13;4112:5;4105:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4025:100;:::o;5080:210::-;5199:4;5221:39;175:10;5244:7;5253:6;5221:8;:39::i;:::-;-1:-1:-1;5278:4:0;5080:210;;;;;:::o;14352:86::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;;;;;;;;;14419:11:::1;::::0;;-1:-1:-1;;;;14404:26:0;::::1;-1:-1:-1::0;;;14419:11:0;;;::::1;;;14418:12;14404:26:::0;;::::1;;::::0;;14352:86::o;23010:719::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;23191:15:::1;:22;23173:7;:14;:40;23151:120;;;::::0;-1:-1:-1;;;23151:120:0;;8474:2:1;23151:120:0::1;::::0;::::1;8456:21:1::0;8513:2;8493:18;;;8486:30;8552:32;8532:18;;;8525:60;8602:18;;23151:120:0::1;8272:354:1::0;23151:120:0::1;23321:3;23304:7;:14;:20;23282:124;;;::::0;-1:-1:-1;;;23282:124:0;;8833:2:1;23282:124:0::1;::::0;::::1;8815:21:1::0;8872:2;8852:18;;;8845:30;8911:34;8891:18;;;8884:62;-1:-1:-1;;;8962:18:1;;;8955:52;9024:19;;23282:124:0::1;8631:418:1::0;23282:124:0::1;23520:9;23515:207;23539:7;:14;23535:1;:18;23515:207;;;23575:14;23592:7;23600:1;23592:10;;;;;;;;:::i;:::-;;;;;;;23575:27;;23617:14;23634:15;23650:1;23634:18;;;;;;;;:::i;:::-;;;;;;;23617:35;;23667:43;23683:10;23695:6;23703;23667:15;:43::i;:::-;23560:162;;23555:3;;;;;:::i;:::-;;;;23515:207;;;;23010:719:::0;;:::o;5298:620::-;5438:4;5455:36;5465:6;5473:9;5484:6;5455:9;:36::i;:::-;-1:-1:-1;;;;;5531:19:0;;5504:24;5531:19;;;:11;:19;;;;;;;;175:10;5531:33;;;;;;;;-1:-1:-1;;5578:37:0;;5575:314;;5679:6;5659:16;:26;;5633:128;;;;-1:-1:-1;;;5633:128:0;;9660:2:1;5633:128:0;;;9642:21:1;9699:2;9679:18;;;9672:30;9738:34;9718:18;;;9711:62;-1:-1:-1;;;9789:18:1;;;9782:38;9837:19;;5633:128:0;9458:404:1;5633:128:0;5805:57;5814:6;175:10;5855:6;5836:16;:25;5805:8;:57::i;:::-;-1:-1:-1;5906:4:0;;5298:620;-1:-1:-1;;;;5298:620:0:o;15118:164::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;15192:1:::1;15173:16;:20:::0;;;15204:14:::1;:18:::0;15246:1:::1;15233:10;:14:::0;15273:1:::1;15258:12;:16:::0;15118:164::o;5926:297::-;175:10;6041:4;6135:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6135:34:0;;;;;;;;;;6041:4;;6063:130;;6113:7;;6135:47;;6172:10;;6135:47;:::i;:::-;6063:8;:130::i;14945:165::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;15020:1:::1;15001:16;:20:::0;;;15032:14:::1;:18:::0;;;15061:10:::1;:14:::0;;;15086:12:::1;:16:::0;14945:165::o;20247:348::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20380:32:0;::::1;20358:120;;;;-1:-1:-1::0;;;20358:120:0::1;;;;;;;:::i;:::-;20489:17;:38:::0;;-1:-1:-1;;;;;;20489:38:0::1;-1:-1:-1::0;;;;;20489:38:0;::::1;::::0;;::::1;::::0;;;20543:44:::1;::::0;::::1;::::0;-1:-1:-1;;20543:44:0::1;20247:348:::0;:::o;21214:349::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;21319:18:::1;::::0;21309:4:::1;4581:7:::0;4613:18;;;;;;;;;;;21291:46:::1;;21269:160;;;::::0;;-1:-1:-1;;;21269:160:0;;10606:2:1;21269:160:0::1;::::0;::::1;10588:21:1::0;10625:18;;;10618:30;;;;10684:34;10664:18;;;10657:62;10755:34;10735:18;;;10728:62;10807:19;;21269:160:0::1;10404:428:1::0;21269:160:0::1;21440:8;:15:::0;;-1:-1:-1;;;;21440:15:0::1;-1:-1:-1::0;;;21440:15:0::1;::::0;;21466:10:::1;:8;:10::i;:::-;21487:8;:16:::0;;-1:-1:-1;;;;21487:16:0::1;::::0;;21519:36:::1;::::0;21539:15:::1;1587:25:1::0;;21519:36:0::1;::::0;1575:2:1;1560:18;21519:36:0::1;;;;;;;21214:349::o:0;20603:311::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20709:30:0;::::1;20687:118;;;;-1:-1:-1::0;;;20687:118:0::1;;;;;;;:::i;:::-;20816:15;:34:::0;;-1:-1:-1;;;;;;20816:34:0::1;-1:-1:-1::0;;;;;20816:34:0;::::1;::::0;;::::1;::::0;;;20866:40:::1;::::0;::::1;::::0;-1:-1:-1;;20866:40:0::1;20603:311:::0;:::o;20922:240::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21006:26:0;::::1;20998:71;;;::::0;-1:-1:-1;;;20998:71:0;;11039:2:1;20998:71:0::1;::::0;::::1;11021:21:1::0;;;11058:18;;;11051:30;11117:34;11097:18;;;11090:62;11169:18;;20998:71:0::1;10837:356:1::0;20998:71:0::1;21080:11;:26:::0;;-1:-1:-1;;;;;;21080:26:0::1;-1:-1:-1::0;;;;;21080:26:0;::::1;::::0;;::::1;::::0;;;21122:32:::1;::::0;::::1;::::0;-1:-1:-1;;21122:32:0::1;20922:240:::0;:::o;8647:150::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;8740:6:::1;::::0;8719:40:::1;::::0;8756:1:::1;::::0;-1:-1:-1;;;;;8740:6:0::1;::::0;8719:40:::1;::::0;8756:1;;8719:40:::1;8770:6;:19:::0;;-1:-1:-1;;;;;;8770:19:0::1;::::0;;8647:150::o;15290:170::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;15367:1:::1;15347:17;:21:::0;;;15379:15:::1;:19:::0;;;15409:11:::1;:15:::0;;;15435:13:::1;:17:::0;15290:170::o;19435:549::-;8560:6;;19549:10;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19585:20:0;::::1;19577:59;;;::::0;-1:-1:-1;;;19577:59:0;;11400:2:1;19577:59:0::1;::::0;::::1;11382:21:1::0;11439:2;11419:18;;;11412:30;11478:28;11458:18;;;11451:56;11524:18;;19577:59:0::1;11198:350:1::0;19577:59:0::1;19687:4;-1:-1:-1::0;;;;;19669:23:0;::::1;::::0;19647:125:::1;;;::::0;-1:-1:-1;;;19647:125:0;;11755:2:1;19647:125:0::1;::::0;::::1;11737:21:1::0;11794:2;11774:18;;;11767:30;11833:34;11813:18;;;11806:62;-1:-1:-1;;;11884:18:1;;;11877:50;11944:19;;19647:125:0::1;11553:416:1::0;19647:125:0::1;19810:39;::::0;-1:-1:-1;;;19810:39:0;;19843:4:::1;19810:39;::::0;::::1;731:51:1::0;19783:24:0::1;::::0;-1:-1:-1;;;;;19810:24:0;::::1;::::0;::::1;::::0;704:18:1;;19810:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19868:46;::::0;-1:-1:-1;;;19868:46:0;;-1:-1:-1;;;;;12355:32:1;;;19868:46:0::1;::::0;::::1;12337:51:1::0;12404:18;;;12397:34;;;19783:66:0;;-1:-1:-1;19868:23:0;;::::1;::::0;::::1;::::0;12310:18:1;;19868:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19930;::::0;;-1:-1:-1;;;;;12355:32:1;;12337:51;;12419:2;12404:18;;12397:34;;;19860:54:0;;-1:-1:-1;19930:46:0::1;::::0;12310:18:1;19930:46:0::1;;;;;;;19566:418;19435:549:::0;;;;:::o;21571:1431::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;21706:18:::1;::::0;:23;21698:32:::1;;;::::0;::::1;;21761:1;21749:9;:13;21741:44;;;::::0;-1:-1:-1;;;21741:44:0;;12894:2:1;21741:44:0::1;::::0;::::1;12876:21:1::0;12933:2;12913:18;;;12906:30;-1:-1:-1;;;12952:18:1;;;12945:48;13010:18;;21741:44:0::1;12692:342:1::0;21741:44:0::1;21813:1;21804:6;:10;21796:45;;;::::0;-1:-1:-1;;;21796:45:0;;13241:2:1;21796:45:0::1;::::0;::::1;13223:21:1::0;13280:2;13260:18;;;13253:30;-1:-1:-1;;;13299:18:1;;;13292:52;13361:18;;21796:45:0::1;13039:346:1::0;21796:45:0::1;21870:19:::0;;;21915:9:::1;21852:15;21870:19:::0;21962:25:::1;;21986:1;21962:25;;;21975:8;21982:1;21975:4:::0;:8:::1;:::i;:::-;21935:53:::0;-1:-1:-1;21999:23:0::1;21935:53:::0;21999:23;::::1;:::i;:::-;;;22035:11;22049:9;;;;;;;;;-1:-1:-1::0;;;;;22049:9:0::1;-1:-1:-1::0;;;;;22049:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22035:30;;22099:9;;;;;;;;;-1:-1:-1::0;;;;;22099:9:0::1;-1:-1:-1::0;;;;;22099:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22087:63;::::0;-1:-1:-1;;;22087:63:0;;-1:-1:-1;;;;;14231:15:1;;;22087:63:0::1;::::0;::::1;14213:34:1::0;22144:4:0::1;14263:18:1::0;;;14256:43;22087::0;;;::::1;::::0;::::1;::::0;14148:18:1;;22087:63:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22078:6;:72:::0;;-1:-1:-1;;;;;;22078:72:0::1;-1:-1:-1::0;;;;;22078:72:0;;;::::1;::::0;;::::1;::::0;;22163:42:::1;::::0;-1:-1:-1;22163:28:0::1;:42::i;:::-;22218:57;22234:10;22254:4;22261:13;:6:::0;22270:4:::1;22261:13;:::i;:::-;22218:15;:57::i;:::-;22288:9;::::0;-1:-1:-1;;;;;22288:9:0::1;:25;22321:4:::0;22335::::1;22341:24;22335:4:::0;-1:-1:-1;;;;;4613:18:0;4581:7;4613:18;;;;;;;;;;;;4462:177;22341:24:::1;22288:109;::::0;-1:-1:-1;;;;;;22288:109:0::1;::::0;;;;;;-1:-1:-1;;;;;14842:15:1;;;22288:109:0::1;::::0;::::1;14824:34:1::0;14874:18;;;14867:34;22366:1:0::1;14917:18:1::0;;;14910:34;;;14960:18;;;14953:34;22370:10:0::1;15003:19:1::0;;;14996:44;22381:15:0::1;15056:19:1::0;;;15049:35;14758:19;;22288:109:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;22431:12:0::1;22410:18;:33:::0;-1:-1:-1;22456:508:0;::::1;;;22510:16;::::0;;22524:1:::1;22510:16:::0;;;;;::::1;::::0;;22486:21:::1;::::0;22510:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;22510:16:0::1;22486:40;;22551:3;22541:4;22546:1;22541:7;;;;;;;;:::i;:::-;;;;;;:13;-1:-1:-1::0;;;;;22541:13:0::1;;;-1:-1:-1::0;;;;;22541:13:0::1;;;::::0;::::1;22587:4;22569;22574:1;22569:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22569:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;22609:9:::1;::::0;:195:::1;::::0;-1:-1:-1;;;22609:195:0;;:9;::::1;::::0;:60:::1;::::0;22677:21:::1;::::0;22609:195:::1;::::0;:9:::1;::::0;22730:4;;22749:10:::1;::::0;22774:15:::1;::::0;22609:195:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;22825:9;22821:132;22840:19:::0;;::::1;22821:132;;;22885:52;22901:10;22913:8;;22922:1;22913:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;22926:7;;22934:1;22926:10;;;;;;;:::i;:::-;;;;;;;22885:15;:52::i;:::-;22861:3:::0;::::1;::::0;::::1;:::i;:::-;;;;22821:132;;;;22471:493;22456:508;-1:-1:-1::0;;22976:11:0::1;:18:::0;;-1:-1:-1;;;;22976:18:0::1;-1:-1:-1::0;;;22976:18:0::1;::::0;;-1:-1:-1;;;;;;;21571:1431:0:o;4133:104::-;4189:13;4222:7;4215:14;;;;;:::i;14446:297::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;14592:6:::1;::::0;-1:-1:-1;;;;;14592:6:0;;::::1;14584:14:::0;;::::1;::::0;14562:121:::1;;;::::0;-1:-1:-1;;;14562:121:0;;16589:2:1;14562:121:0::1;::::0;::::1;16571:21:1::0;16628:2;16608:18;;;16601:30;16667:34;16647:18;;;16640:62;16738:27;16718:18;;;16711:55;16783:19;;14562:121:0::1;16387:421:1::0;14562:121:0::1;14694:41;14723:4;14729:5;14694:28;:41::i;:::-;14446:297:::0;;:::o;6231:482::-;175:10;6351:4;6400:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6400:34:0;;;;;;;;;;6467:35;;;;6445:122;;;;-1:-1:-1;;;6445:122:0;;17015:2:1;6445:122:0;;;16997:21:1;17054:2;17034:18;;;17027:30;17093:34;17073:18;;;17066:62;-1:-1:-1;;;17144:18:1;;;17137:35;17189:19;;6445:122:0;16813:401:1;6445:122:0;6603:67;175:10;6626:7;6654:15;6635:16;:34;6603:8;:67::i;:::-;-1:-1:-1;6701:4:0;;6231:482;-1:-1:-1;;;6231:482:0:o;4647:216::-;4769:4;4791:42;175:10;4815:9;4826:6;4791:9;:42::i;15468:169::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;15544:1:::1;15524:17;:21:::0;;;15556:15:::1;:19:::0;15600:1:::1;15586:11;:15:::0;15628:1:::1;15612:13;:17:::0;15468:169::o;15645:182::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15730:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;15730:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;15785:34;;1389:41:1;;;15785:34:0::1;::::0;1362:18:1;15785:34:0::1;;;;;;;15645:182:::0;;:::o;13916:428::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;14056:6:::1;14035:13;4434:12:::0;;;4346:108;14035:13:::1;:17;::::0;14051:1:::1;14035:17;:::i;:::-;14034:28;;;;:::i;:::-;14021:9;:41;;13999:144;;;::::0;-1:-1:-1;;;13999:144:0;;17421:2:1;13999:144:0::1;::::0;::::1;17403:21:1::0;17460:2;17440:18;;;17433:30;17499:34;17479:18;;;17472:62;-1:-1:-1;;;17550:18:1;;;17543:51;17611:19;;13999:144:0::1;17219:417:1::0;13999:144:0::1;14211:4;14190:13;4434:12:::0;;;4346:108;14190:13:::1;:17;::::0;14206:1:::1;14190:17;:::i;:::-;14189:26;;;;:::i;:::-;14176:9;:39;;14154:141;;;::::0;-1:-1:-1;;;14154:141:0;;17843:2:1;14154:141:0::1;::::0;::::1;17825:21:1::0;17882:2;17862:18;;;17855:30;17921:34;17901:18;;;17894:62;-1:-1:-1;;;17972:18:1;;;17965:50;18032:19;;14154:141:0::1;17641:416:1::0;14154:141:0::1;14306:18;:30:::0;13916:428::o;8805:281::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8908:22:0;::::1;8886:110;;;::::0;-1:-1:-1;;;8886:110:0;;18264:2:1;8886:110:0::1;::::0;::::1;18246:21:1::0;18303:2;18283:18;;;18276:30;18342:34;18322:18;;;18315:62;-1:-1:-1;;;18393:18:1;;;18386:36;18439:19;;8886:110:0::1;18062:402:1::0;8886:110:0::1;9033:6;::::0;9012:38:::1;::::0;-1:-1:-1;;;;;9012:38:0;;::::1;::::0;9033:6:::1;::::0;9012:38:::1;::::0;9033:6:::1;::::0;9012:38:::1;9061:6;:17:::0;;-1:-1:-1;;;;;;9061:17:0::1;-1:-1:-1::0;;;;;9061:17:0;;;::::1;::::0;;;::::1;::::0;;8805:281::o;20054:185::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;20149:82:::1;::::0;20112:12:::1;::::0;20157:10:::1;::::0;20181:21:::1;::::0;20112:12;20149:82;20112:12;20149:82;20181:21;20157:10;20149:82:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;20054:185:0:o;7702:380::-;-1:-1:-1;;;;;7838:19:0;;7830:68;;;;-1:-1:-1;;;7830:68:0;;18881:2:1;7830:68:0;;;18863:21:1;18920:2;18900:18;;;18893:30;18959:34;18939:18;;;18932:62;-1:-1:-1;;;19010:18:1;;;19003:34;19054:19;;7830:68:0;18679:400:1;7830:68:0;-1:-1:-1;;;;;7917:21:0;;7909:68;;;;-1:-1:-1;;;7909:68:0;;19286:2:1;7909:68:0;;;19268:21:1;19325:2;19305:18;;;19298:30;19364:34;19344:18;;;19337:62;-1:-1:-1;;;19415:18:1;;;19408:32;19457:19;;7909:68:0;19084:398:1;7909:68:0;-1:-1:-1;;;;;7990:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8042:32;;1587:25:1;;;8042:32:0;;1560:18:1;8042:32:0;;;;;;;7702:380;;;:::o;6721:651::-;-1:-1:-1;;;;;6861:20:0;;6853:70;;;;-1:-1:-1;;;6853:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6942:23:0;;6934:71;;;;-1:-1:-1;;;6934:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7042:17:0;;7018:21;7042:17;;;;;;;;;;;7092:23;;;;7070:111;;;;-1:-1:-1;;;7070:111:0;;20499:2:1;7070:111:0;;;20481:21:1;20538:2;20518:18;;;20511:30;20577:34;20557:18;;;20550:62;-1:-1:-1;;;20628:18:1;;;20621:36;20674:19;;7070:111:0;20297:402:1;7070:111:0;-1:-1:-1;;;;;7217:17:0;;;:9;:17;;;;;;;;;;;7237:22;;;7217:42;;7281:20;;;;;;;;:30;;7253:6;;7217:9;7281:30;;7253:6;;7281:30;:::i;:::-;;;;;;;;7346:9;-1:-1:-1;;;;;7329:35:0;7338:6;-1:-1:-1;;;;;7329:35:0;;7357:6;7329:35;;;;1587:25:1;;1575:2;1560:18;;1441:177;7329:35:0;;;;;;;;6842:530;6721:651;;;:::o;15835:2022::-;-1:-1:-1;;;;;15967:18:0;;15959:68;;;;-1:-1:-1;;;15959:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16046:16:0;;16038:64;;;;-1:-1:-1;;;16038:64:0;;;;;;;:::i;:::-;16130:1;16121:6;:10;16113:52;;;;-1:-1:-1;;;16113:52:0;;20906:2:1;16113:52:0;;;20888:21:1;20945:2;20925:18;;;20918:30;20984:31;20964:18;;;20957:59;21033:18;;16113:52:0;20704:353:1;16113:52:0;16227:4;16178:28;4613:18;;;;;;;;;;;;16285;;-1:-1:-1;;;;;16435:25:0;;;;:19;:25;;;;;;16261:42;;;;;16331:4;;16435:25;;;:52;;-1:-1:-1;;;;;;16464:23:0;;;;;;:19;:23;;;;;;;;16435:52;16431:100;;;-1:-1:-1;16514:5:0;16431:100;16561:7;:18;;;;;16572:7;16561:18;:33;;;;-1:-1:-1;16583:11:0;;-1:-1:-1;;;16583:11:0;;;;16561:33;:46;;;;-1:-1:-1;16599:8:0;;-1:-1:-1;;;16599:8:0;;;;16598:9;16561:46;:79;;;;-1:-1:-1;;;;;;16611:29:0;;;;;;:25;:29;;;;;;;;16561:79;16543:207;;;16667:8;:15;;-1:-1:-1;;;;16667:15:0;-1:-1:-1;;;16667:15:0;;;16697:10;:8;:10::i;:::-;16722:8;:16;;-1:-1:-1;;;;16722:16:0;;;16543:207;16762:12;16867:7;16863:941;;;-1:-1:-1;;;;;16895:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;16944:1;16928:13;;:17;16895:50;16891:764;;;17000:3;16983:13;;16974:6;:22;;;;:::i;:::-;16973:30;;;;:::i;:::-;16966:37;;17074:13;;17053:17;;17046:4;:24;;;;:::i;:::-;17045:42;;;;:::i;:::-;17022:19;;:65;;;;;;;:::i;:::-;;;;-1:-1:-1;;17154:13:0;;17135:15;;17128:22;;:4;:22;:::i;:::-;17127:40;;;;:::i;:::-;17106:17;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;17226:13:0;;17211:11;;17204:18;;:4;:18;:::i;:::-;17203:36;;;;:::i;:::-;17186:13;;:53;;;;;;;:::i;:::-;;;;-1:-1:-1;16891:764:0;;-1:-1:-1;16891:764:0;;-1:-1:-1;;;;;17301:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;17351:1;17336:12;;:16;17301:51;17297:358;;;17406:3;17390:12;;17381:6;:21;;;;:::i;:::-;17380:29;;;;:::i;:::-;17373:36;;17479:12;;17459:16;;17452:4;:23;;;;:::i;:::-;17451:40;;;;:::i;:::-;17428:19;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;17557:12:0;;17539:14;;17532:21;;:4;:21;:::i;:::-;17531:38;;;;:::i;:::-;17510:17;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;17627:12:0;;17613:10;;17606:17;;:4;:17;:::i;:::-;17605:34;;;;:::i;:::-;17588:13;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;;17297:358:0;17675:8;;17671:91;;17704:42;17720:4;17734;17741;17704:15;:42::i;:::-;17778:14;17788:4;17778:14;;:::i;:::-;;;16863:941;17816:33;17832:4;17838:2;17842:6;17816:15;:33::i;:::-;15948:1909;;;;15835:2022;;;:::o;18375:1052::-;18458:4;18414:23;4613:18;;;;;;;;;;;18414:50;;18475:25;18571:13;;18538:17;;18503:19;;:52;;;;:::i;:::-;:81;;;;:::i;:::-;18475:109;-1:-1:-1;18601:20:0;;;:46;;-1:-1:-1;18625:22:0;;18601:46;18597:85;;;18664:7;;18375:1052::o;18597:85::-;18716:18;;:23;;18737:2;18716:23;:::i;:::-;18698:15;:41;18694:115;;;18774:18;;:23;;18795:2;18774:23;:::i;:::-;18756:41;;18694:115;18821:12;18846:33;18863:15;18846:16;:33::i;:::-;18986:17;;18913:21;;18892:18;;19007:17;;18973:30;;18913:21;18973:30;:::i;:::-;18972:52;;;;:::i;:::-;18947:77;;19035:18;19087:17;19070:13;;19057:10;:26;;;;:::i;:::-;19056:48;;;;:::i;:::-;19139:1;19117:19;:23;;;19151:17;:21;;;19183:13;:17;;;19227:15;;:47;;19035:69;;-1:-1:-1;;;;;;19227:15:0;;19255:14;;19227:47;19139:1;19227:47;19255:14;19227:15;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19299:11:0;;:39;;19213:61;;-1:-1:-1;;;;;;19299:11:0;;19323:10;;19299:39;;;;19323:10;19299:11;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19363:17:0;;:56;;19285:53;;-1:-1:-1;;;;;;19363:17:0;;19393:21;;19363:56;;;;19393:21;19363:17;:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;18375:1052:0:o;14751:186::-;-1:-1:-1;;;;;14834:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;14834:39:0;;;;;;;;;;14889:40;;14834:39;;:31;14889:40;;;14751:186;;:::o;17865:502::-;18015:16;;;18029:1;18015:16;;;;;;;;17991:21;;18015:16;;;;;;;;;;-1:-1:-1;18015:16:0;17991:40;;18060:4;18042;18047:1;18042:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18042:23:0;;;:7;;;;;;;;;;:23;;;;18086:9;;:16;;;-1:-1:-1;;;18086:16:0;;;;:9;;;;;:14;;:16;;;;;18042:7;;18086:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18076:4;18081:1;18076:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18076:26:0;;;:7;;;;;;;;;:26;18141:9;;:218;;-1:-1:-1;;;18141:218:0;;:9;;;:60;;:218;;18216:11;;18141:9;;18286:4;;18313;;18333:15;;18141:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17920:447;17865:502;:::o;14:548: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;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;793:131::-;-1:-1:-1;;;;;868:31:1;;858:42;;848:70;;914:1;911;904:12;848:70;793:131;:::o;929:315::-;997:6;1005;1058:2;1046:9;1037:7;1033:23;1029:32;1026:52;;;1074:1;1071;1064:12;1026:52;1113:9;1100:23;1132:31;1157:5;1132:31;:::i;:::-;1182:5;1234:2;1219:18;;;;1206:32;;-1:-1:-1;;;929:315:1:o;1831:127::-;1892:10;1887:3;1883:20;1880:1;1873:31;1923:4;1920:1;1913:15;1947:4;1944:1;1937:15;1963:275;2034:2;2028:9;2099:2;2080:13;;-1:-1:-1;;2076:27:1;2064:40;;2134:18;2119:34;;2155:22;;;2116:62;2113:88;;;2181:18;;:::i;:::-;2217:2;2210:22;1963:275;;-1:-1:-1;1963:275:1:o;2243:183::-;2303:4;2336:18;2328:6;2325:30;2322:56;;;2358:18;;:::i;:::-;-1:-1:-1;2403:1:1;2399:14;2415:4;2395:25;;2243:183::o;2431:662::-;2485:5;2538:3;2531:4;2523:6;2519:17;2515:27;2505:55;;2556:1;2553;2546:12;2505:55;2592:6;2579:20;2618:4;2642:60;2658:43;2698:2;2658:43;:::i;:::-;2642:60;:::i;:::-;2736:15;;;2822:1;2818:10;;;;2806:23;;2802:32;;;2767:12;;;;2846:15;;;2843:35;;;2874:1;2871;2864:12;2843:35;2910:2;2902:6;2898:15;2922:142;2938:6;2933:3;2930:15;2922:142;;;3004:17;;2992:30;;3042:12;;;;2955;;2922:142;;;-1:-1:-1;3082:5:1;2431:662;-1:-1:-1;;;;;;2431:662:1:o;3098:1215::-;3216:6;3224;3277:2;3265:9;3256:7;3252:23;3248:32;3245:52;;;3293:1;3290;3283:12;3245:52;3333:9;3320:23;3362:18;3403:2;3395:6;3392:14;3389:34;;;3419:1;3416;3409:12;3389:34;3457:6;3446:9;3442:22;3432:32;;3502:7;3495:4;3491:2;3487:13;3483:27;3473:55;;3524:1;3521;3514:12;3473:55;3560:2;3547:16;3582:4;3606:60;3622:43;3662:2;3622:43;:::i;3606:60::-;3700:15;;;3782:1;3778:10;;;;3770:19;;3766:28;;;3731:12;;;;3806:19;;;3803:39;;;3838:1;3835;3828:12;3803:39;3862:11;;;;3882:217;3898:6;3893:3;3890:15;3882:217;;;3978:3;3965:17;3995:31;4020:5;3995:31;:::i;:::-;4039:18;;3915:12;;;;4077;;;;3882:217;;;4118:5;-1:-1:-1;;4161:18:1;;4148:32;;-1:-1:-1;;4192:16:1;;;4189:36;;;4221:1;4218;4211:12;4189:36;;4244:63;4299:7;4288:8;4277:9;4273:24;4244:63;:::i;:::-;4234:73;;;3098:1215;;;;;:::o;4318:456::-;4395:6;4403;4411;4464:2;4452:9;4443:7;4439:23;4435:32;4432:52;;;4480:1;4477;4470:12;4432:52;4519:9;4506:23;4538:31;4563:5;4538:31;:::i;:::-;4588:5;-1:-1:-1;4645:2:1;4630:18;;4617:32;4658:33;4617:32;4658:33;:::i;:::-;4318:456;;4710:7;;-1:-1:-1;;;4764:2:1;4749:18;;;;4736:32;;4318:456::o;4968:247::-;5027:6;5080:2;5068:9;5059:7;5055:23;5051:32;5048:52;;;5096:1;5093;5086:12;5048:52;5135:9;5122:23;5154:31;5179:5;5154:31;:::i;:::-;5204:5;4968:247;-1:-1:-1;;;4968:247:1:o;5220:388::-;5288:6;5296;5349:2;5337:9;5328:7;5324:23;5320:32;5317:52;;;5365:1;5362;5355:12;5317:52;5404:9;5391:23;5423:31;5448:5;5423:31;:::i;:::-;5473:5;-1:-1:-1;5530:2:1;5515:18;;5502:32;5543:33;5502:32;5543:33;:::i;:::-;5595:7;5585:17;;;5220:388;;;;;:::o;5613:367::-;5676:8;5686:6;5740:3;5733:4;5725:6;5721:17;5717:27;5707:55;;5758:1;5755;5748:12;5707:55;-1:-1:-1;5781:20:1;;5824:18;5813:30;;5810:50;;;5856:1;5853;5846:12;5810:50;5893:4;5885:6;5881:17;5869:29;;5953:3;5946:4;5936:6;5933:1;5929:14;5921:6;5917:27;5913:38;5910:47;5907:67;;;5970:1;5967;5960:12;5907:67;5613:367;;;;;:::o;5985:841::-;6116:6;6124;6132;6140;6148;6201:2;6189:9;6180:7;6176:23;6172:32;6169:52;;;6217:1;6214;6207:12;6169:52;6253:9;6240:23;6230:33;;6314:2;6303:9;6299:18;6286:32;6337:18;6378:2;6370:6;6367:14;6364:34;;;6394:1;6391;6384:12;6364:34;6433:70;6495:7;6486:6;6475:9;6471:22;6433:70;:::i;:::-;6522:8;;-1:-1:-1;6407:96:1;-1:-1:-1;6610:2:1;6595:18;;6582:32;;-1:-1:-1;6626:16:1;;;6623:36;;;6655:1;6652;6645:12;6623:36;;6694:72;6758:7;6747:8;6736:9;6732:24;6694:72;:::i;:::-;5985:841;;;;-1:-1:-1;5985:841:1;;-1:-1:-1;6785:8:1;;6668:98;5985:841;-1:-1:-1;;;5985:841:1:o;6831:118::-;6917:5;6910:13;6903:21;6896:5;6893:32;6883:60;;6939:1;6936;6929:12;6954:382;7019:6;7027;7080:2;7068:9;7059:7;7055:23;7051:32;7048:52;;;7096:1;7093;7086:12;7048:52;7135:9;7122:23;7154:31;7179:5;7154:31;:::i;:::-;7204:5;-1:-1:-1;7261:2:1;7246:18;;7233:32;7274:30;7233:32;7274:30;:::i;7341:180::-;7400:6;7453:2;7441:9;7432:7;7428:23;7424:32;7421:52;;;7469:1;7466;7459:12;7421:52;-1:-1:-1;7492:23:1;;7341:180;-1:-1:-1;7341:180:1:o;7526:380::-;7605:1;7601:12;;;;7648;;;7669:61;;7723:4;7715:6;7711:17;7701:27;;7669:61;7776:2;7768:6;7765:14;7745:18;7742:38;7739:161;;7822:10;7817:3;7813:20;7810:1;7803:31;7857:4;7854:1;7847:15;7885:4;7882:1;7875:15;7739:161;;7526:380;;;:::o;7911:356::-;8113:2;8095:21;;;8132:18;;;8125:30;8191:34;8186:2;8171:18;;8164:62;8258:2;8243:18;;7911:356::o;9054:127::-;9115:10;9110:3;9106:20;9103:1;9096:31;9146:4;9143:1;9136:15;9170:4;9167:1;9160:15;9186:127;9247:10;9242:3;9238:20;9235:1;9228:31;9278:4;9275:1;9268:15;9302:4;9299:1;9292:15;9318:135;9357:3;9378:17;;;9375:43;;9398:18;;:::i;:::-;-1:-1:-1;9445:1:1;9434:13;;9318:135::o;9867:125::-;9932:9;;;9953:10;;;9950:36;;;9966:18;;:::i;9997:402::-;10199:2;10181:21;;;10238:2;10218:18;;;10211:30;10277:34;10272:2;10257:18;;10250:62;-1:-1:-1;;;10343:2:1;10328:18;;10321:36;10389:3;10374:19;;9997:402::o;11974:184::-;12044:6;12097:2;12085:9;12076:7;12072:23;12068:32;12065:52;;;12113:1;12110;12103:12;12065:52;-1:-1:-1;12136:16:1;;11974:184;-1:-1:-1;11974:184:1:o;12442:245::-;12509:6;12562:2;12550:9;12541:7;12537:23;12533:32;12530:52;;;12578:1;12575;12568:12;12530:52;12610:9;12604:16;12629:28;12651:5;12629:28;:::i;13390:217::-;13430:1;13456;13446:132;;13500:10;13495:3;13491:20;13488:1;13481:31;13535:4;13532:1;13525:15;13563:4;13560:1;13553:15;13446:132;-1:-1:-1;13592:9:1;;13390:217::o;13612:128::-;13679:9;;;13700:11;;;13697:37;;;13714:18;;:::i;13745:251::-;13815:6;13868:2;13856:9;13847:7;13843:23;13839:32;13836:52;;;13884:1;13881;13874:12;13836:52;13916:9;13910:16;13935:31;13960:5;13935:31;:::i;14310:168::-;14383:9;;;14414;;14431:15;;;14425:22;;14411:37;14401:71;;14452:18;;:::i;15095:306::-;15183:6;15191;15199;15252:2;15240:9;15231:7;15227:23;15223:32;15220:52;;;15268:1;15265;15258:12;15220:52;15297:9;15291:16;15281:26;;15347:2;15336:9;15332:18;15326:25;15316:35;;15391:2;15380:9;15376:18;15370:25;15360:35;;15095:306;;;;;:::o;15406:461::-;15459:3;15497:5;15491:12;15524:6;15519:3;15512:19;15550:4;15579:2;15574:3;15570:12;15563:19;;15616:2;15609:5;15605:14;15637:1;15647:195;15661:6;15658:1;15655:13;15647:195;;;15726:13;;-1:-1:-1;;;;;15722:39:1;15710:52;;15782:12;;;;15817:15;;;;15758:1;15676:9;15647:195;;;-1:-1:-1;15858:3:1;;15406:461;-1:-1:-1;;;;;15406:461:1:o;15872:510::-;16143:6;16132:9;16125:25;16186:3;16181:2;16170:9;16166:18;16159:31;16106:4;16207:57;16259:3;16248:9;16244:19;16236:6;16207:57;:::i;:::-;-1:-1:-1;;;;;16300:32:1;;;;16295:2;16280:18;;16273:60;-1:-1:-1;16364:2:1;16349:18;16342:34;16199:65;15872:510;-1:-1:-1;;15872:510:1:o;19487:401::-;19689:2;19671:21;;;19728:2;19708:18;;;19701:30;19767:34;19762:2;19747:18;;19740:62;-1:-1:-1;;;19833:2:1;19818:18;;19811:35;19878:3;19863:19;;19487:401::o;19893:399::-;20095:2;20077:21;;;20134:2;20114:18;;;20107:30;20173:34;20168:2;20153:18;;20146:62;-1:-1:-1;;;20239:2:1;20224:18;;20217:33;20282:3;20267:19;;19893:399::o;21062:582::-;21361:6;21350:9;21343:25;21404:6;21399:2;21388:9;21384:18;21377:34;21447:3;21442:2;21431:9;21427:18;21420:31;21324:4;21468:57;21520:3;21509:9;21505:19;21497:6;21468:57;:::i;:::-;-1:-1:-1;;;;;21561:32:1;;;;21556:2;21541:18;;21534:60;-1:-1:-1;21625:3:1;21610:19;21603:35;21460:65;21062:582;-1:-1:-1;;;21062:582:1:o

Swarm Source

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