ETH Price: $3,041.52 (+2.78%)
Gas: 2 Gwei

Token

Jokerinu (JOKER)
 

Overview

Max Total Supply

100,000,000,000 JOKER

Holders

166

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
22,784,303.581206804522037869 JOKER

Value
$0.00
0x2d9980158a910219550027adc0b001b347869a06
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:
Jokerinu

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.7;

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 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface 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) internal _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The defaut value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

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

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    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");

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     */
    function _tokengeneration(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: generation to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

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

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    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);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * generation and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be generated for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

library Address {
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

    function WETH() external pure returns (address);

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

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

contract Jokerinu is ERC20, Ownable {
    using Address for address payable;

    IRouter public router;
    address public pair;

    bool private _liquidityMutex = false;
    bool public providingLiquidity = false;
    bool public tradingEnabled = false;

    uint256 public tokenLiquidityThreshold = 250_000_000 * 10**18;
    uint256 public maxBuyLimit = 1_000_000_000 * 10**18;
    uint256 public maxSellLimit = 1_000_000_000 * 10**18;
    uint256 public maxWalletLimit = 2_000_000_000 * 10**18;

    uint256 public genesis_block;
    uint256 private deadline;
    uint256 private launchtax;

    address public marketingWallet = 0x06607bF9AAC33605F4Bf0480d582902756dC9341;
    address public devWallet = 0xc25166e92903390570f2C2315024317d9eAC842f;
    address public opsWallet = 0x2631AF698376054D2E1f586a0Ed6aF37564ec406;
    address public raffleWallet = 0x999648a6ee9062973cC499E93AceFAfc16BEE9E1;
	address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
        uint256 raffle;
        uint256 dev;
        uint256 ops;
    }

    Taxes public taxes = Taxes(5, 2, 2, 1, 1);
    Taxes public sellTaxes = Taxes(5, 2, 2, 1, 1);

    mapping(address => bool) public exemptFee;
    mapping(address => bool) public isBlacklisted;
    mapping(address => bool) public allowedTransfer;

    //Anti Dump
    mapping(address => uint256) private _lastSell;
    bool public coolDownEnabled = true;
    uint256 public coolDownTime = 60 seconds;

    modifier mutexLock() {
        if (!_liquidityMutex) {
            _liquidityMutex = true;
            _;
            _liquidityMutex = false;
        }
    }

    constructor(address routerAdd) ERC20("Jokerinu", "JOKER") {
        _tokengeneration(msg.sender, 1e11 * 10**decimals());
        exemptFee[msg.sender] = true;

        IRouter _router = IRouter(routerAdd);
        // Create a uniswap pair for this new token
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        exemptFee[address(this)] = true;
        exemptFee[marketingWallet] = true;
        exemptFee[raffleWallet] = true;
        exemptFee[devWallet] = true;
        exemptFee[opsWallet] = true;
        exemptFee[deadWallet] = true;
        exemptFee[0xD152f549545093347A162Dce210e7293f1452150] = true;
        exemptFee[0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf] = true;
        exemptFee[0x33d4cC8716Beb13F814F538Ad3b2de3b036f5e2A] = true;
        

        allowedTransfer[address(this)] = true;
        allowedTransfer[owner()] = true;
        allowedTransfer[pair] = true;
        allowedTransfer[marketingWallet] = true;
        allowedTransfer[raffleWallet] = true;
        allowedTransfer[devWallet] = true;
        allowedTransfer[opsWallet] = true;
        allowedTransfer[deadWallet] = true;
        allowedTransfer[0xD152f549545093347A162Dce210e7293f1452150] = true;
        allowedTransfer[0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf] = true;
        allowedTransfer[0x33d4cC8716Beb13F814F538Ad3b2de3b036f5e2A] = true;

    }

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

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

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

        return true;
    }

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

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

        return true;
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
        require(
            !isBlacklisted[sender] && !isBlacklisted[recipient],
            "You can't transfer tokens"
        );

        if (!exemptFee[sender] && !exemptFee[recipient]) {
            require(tradingEnabled, "Trading not enabled");
        }

        if (sender == pair && !exemptFee[recipient] && !_liquidityMutex) {
            require(amount <= maxBuyLimit, "You are exceeding maxBuyLimit");
            require(
                balanceOf(recipient) + amount <= maxWalletLimit,
                "You are exceeding maxWalletLimit"
            );
        }

        if (
            sender != pair && !exemptFee[recipient] && !exemptFee[sender] && !_liquidityMutex
        ) {
            require(amount <= maxSellLimit, "You are exceeding maxSellLimit");
            if (recipient != pair) {
                require(
                    balanceOf(recipient) + amount <= maxWalletLimit,
                    "You are exceeding maxWalletLimit"
                );
            }
            if (coolDownEnabled) {
                uint256 timePassed = block.timestamp - _lastSell[sender];
                require(timePassed >= coolDownTime, "Cooldown enabled");
                _lastSell[sender] = block.timestamp;
            }
        }

        uint256 feeswap;
        uint256 feesum;
        uint256 fee;
        Taxes memory currentTaxes;

        bool useLaunchFee = !exemptFee[sender] &&
            !exemptFee[recipient] &&
            block.number < genesis_block + deadline;

        //set fee to zero if fees in contract are handled or exempted
        if (_liquidityMutex || exemptFee[sender] || exemptFee[recipient])
            fee = 0;

            //calculate fee
        else if (recipient == pair && !useLaunchFee) {
            feeswap =
                sellTaxes.liquidity +
                sellTaxes.marketing +
                sellTaxes.raffle +                
                sellTaxes.dev + 
                sellTaxes.ops;
            feesum = feeswap;
            currentTaxes = sellTaxes;
        } else if (!useLaunchFee) {
            feeswap =
                taxes.liquidity +
                taxes.marketing +
                taxes.raffle +
                taxes.dev +
                taxes.ops ;
            feesum = feeswap;
            currentTaxes = taxes;
        } else if (useLaunchFee) {
            feeswap = launchtax;
            feesum = launchtax;
        }

        fee = (amount * feesum) / 100;

        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (providingLiquidity && sender != pair) handle_fees(feeswap, currentTaxes);

        //rest to recipient
        super._transfer(sender, recipient, amount - fee);
        if (fee > 0) {
            //send the fee to the contract
            if (feeswap > 0) {
                uint256 feeAmount = (amount * feeswap) / 100;
                super._transfer(sender, address(this), feeAmount);
            }

        }
    }

    function handle_fees(uint256 feeswap, Taxes memory swapTaxes) private mutexLock {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= tokenLiquidityThreshold) {
            if (tokenLiquidityThreshold > 1) {
                contractBalance = tokenLiquidityThreshold;
            }

            // Split the contract balance into halves
            uint256 denominator = feeswap * 2;
            uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) /
                denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

            uint256 initialBalance = address(this).balance;

            swapTokensForETH(toSwap);

            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.liquidity;

            if (ethToAddLiquidityWith > 0) {
                // Add liquidity to uniswap
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }

            uint256 marketingAmt = unitBalance * 2 * swapTaxes.marketing;
            if (marketingAmt > 0) {
                payable(marketingWallet).sendValue(marketingAmt);
            }

            uint256 raffleAmt = unitBalance * 2 * swapTaxes.raffle;
            if (raffleAmt > 0) {
                payable(raffleWallet).sendValue(raffleAmt);
            }

            uint256 devAmt = unitBalance * 2 * swapTaxes.dev;
            if (devAmt > 0) {
                payable(devWallet).sendValue(devAmt);
            }

            uint256 opsAmt = unitBalance * 2 * swapTaxes.ops;
            if (opsAmt > 0) {
                payable(opsWallet).sendValue(opsAmt);
            }

        }
    }

    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] = router.WETH();

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

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

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

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

    function updateLiquidityProvide(bool state) external onlyOwner {
        //update liquidity providing state
        providingLiquidity = state;
    }

    function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner {
        //update the treshhold
        tokenLiquidityThreshold = new_amount * 10**decimals();
    }

    function updateTaxes(Taxes memory newTaxes) external onlyOwner {
        taxes = newTaxes;
    }

    function updateSellTaxes(Taxes memory newSellTaxes) external onlyOwner {
        sellTaxes = newSellTaxes;
    }

    function updateRouterAndPair(address newRouter, address newPair) external onlyOwner {
        router = IRouter(newRouter);
        pair = newPair;
    }

    function updateTradingEnabled(
        bool state,
        uint256 _deadline,
        uint256 _launchtax
    ) external onlyOwner {
        deadline = _deadline;
        launchtax = _launchtax;
        tradingEnabled = state;
        providingLiquidity = state;
        if (state == true) genesis_block = block.number;
    }

    function updateMarketingWallet(address newWallet) external onlyOwner {
        marketingWallet = newWallet;
    }

    function updateRaffleWallet(address newWallet) external onlyOwner {
        raffleWallet = newWallet;
    }

    function updateDevWallet(address newWallet) external onlyOwner {
        devWallet = newWallet;
    }

    function updateOpsWallet(address newWallet) external onlyOwner {
        opsWallet = newWallet;
    }

    function updateCooldown(bool state, uint256 time) external onlyOwner {
        coolDownTime = time * 1 seconds;
        coolDownEnabled = state;
    }

    function updateIsBlacklisted(address account, bool state) external onlyOwner {
        isBlacklisted[account] = state;
    }

    function bulkIsBlacklisted(address[] memory accounts, bool state) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            isBlacklisted[accounts[i]] = state;
        }
    }

    function updateAllowedTransfer(address account, bool state) external onlyOwner {
        allowedTransfer[account] = state;
    }

    function bulkAllowedTransfer(address[] memory accounts, bool state) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            allowedTransfer[accounts[i]] = state;
        }
    }

    function updateExemptFee(address _address, bool state) external onlyOwner {
        exemptFee[_address] = state;
    }

    function bulkExemptFee(address[] memory accounts, bool state) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            exemptFee[accounts[i]] = state;
        }
    }

    function updateMaxTxLimit(uint256 maxBuy, uint256 maxSell) external onlyOwner {
        maxBuyLimit = maxBuy * 10**decimals();
        maxSellLimit = maxSell * 10**decimals();
    }

    function updateMaxWalletlimit(uint256 amount) external onlyOwner {
        maxWalletLimit = amount * 10**decimals();
    }

    function rescueETH(uint256 weiAmount) external onlyOwner {
        payable(devWallet).transfer(weiAmount);
    }

    function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner {
        IERC20(tokenAdd).transfer(devWallet, amount);
    }

    // fallbacks
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"routerAdd","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"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":"","type":"address"}],"name":"allowedTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkAllowedTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkIsBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"coolDownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coolDownTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"opsWallet","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"providingLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"raffleWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"raffle","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"ops","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"raffle","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"ops","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenLiquidityThreshold","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":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateAllowedTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"updateCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateIsBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"}],"name":"updateMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletlimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateOpsWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateRaffleWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"raffle","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"ops","type":"uint256"}],"internalType":"struct Jokerinu.Taxes","name":"newSellTaxes","type":"tuple"}],"name":"updateSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"raffle","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"ops","type":"uint256"}],"internalType":"struct Jokerinu.Taxes","name":"newTaxes","type":"tuple"}],"name":"updateTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"},{"internalType":"uint256","name":"_deadline","type":"uint256"},{"internalType":"uint256","name":"_launchtax","type":"uint256"}],"name":"updateTradingEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6007805462ffffff60a01b191690556acecb8f27f4200f3a0000006008556b033b2e3c9fd0803ce80000006009819055600a556b06765c793fa10079d0000000600b55600f80546001600160a01b03199081167306607bf9aac33605f4bf0480d582902756dc93411790915560108054821673c25166e92903390570f2c2315024317d9eac842f179055601180548216732631af698376054d2e1f586a0ed6af37564ec4061790556012805490911673999648a6ee9062973cc499e93acefafc16bee9e117905560056080819052600260a081905260c0819052600160e0819052610100819052601383905560148290556015829055601681905560178190556101c06040526101208390526101408290526101608290526101808190526101a08190526018929092556019819055601a55601b819055601c8190556021805460ff19169091179055603c6022553480156200015a57600080fd5b5060405162003701380380620037018339810160408190526200017d9162000878565b60408051808201825260088152674a6f6b6572696e7560c01b6020808301918252835180850190945260058452642527a5a2a960d91b908401528151919291620001ca91600391620007d2565b508051620001e0906004906020840190620007d2565b505050620001fd620001f76200068660201b60201c565b6200068a565b6200022733620002106012600a6200090e565b620002219064174876e800620009cf565b620006dc565b336000908152601d60209081526040808320805460ff19166001179055805163c45a015560e01b815290518493926001600160a01b0385169263c45a01559260048083019392829003018186803b1580156200028257600080fd5b505afa15801562000297573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bd919062000878565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030657600080fd5b505afa1580156200031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000341919062000878565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200038a57600080fd5b505af11580156200039f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c5919062000878565b600680546001600160a01b038086166001600160a01b031992831617909255600780548385169216919091179055306000818152601d60209081526040808320805460ff199081166001908117909255600f54871685528285208054821683179055601254871685528285208054821683179055601054871685528285208054821683179055601154909616845281842080548716821790557ffa758cef5bd0db441ee78e87b9ceab03f7b5d7b78ff593b3cf8150611abcb99980548716821790557fea6407f468a2e2fee5a6036fbd70bc5140eef70788828119f1f62b8d181e8e2e80548716821790557fbb3f84bce57bdafbdd38932cb2fda6bb43fbfd50f789651610df94558414ba8080548716821790557f6a4db3e8f1719871eb7360df1054cd8971820e9621285041a1d997dd1178ea9f8054871682179055938352601f91829052822080549094168317909355929350916200052e6005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560075482168152601f909352818320805485166001908117909155600f54821684528284208054861682179055601254821684528284208054861682179055601054821684528284208054861682179055601154909116835290822080548416821790557fef94442dfc0e910ca743614215a10fad3ff708bf5378f9c5c958c9192b3bf00480548416821790557fae9c2623a55f822ad962abbca35e25a876e17616f49022faeb25e48e20de259e80548416821790557f3e8bfc7e88aca7cc15d4d584a9cfbb185d3b882bde16ee322da7c69a47c0e62b80548416821790557333d4cc8716beb13f814f538ad3b2de3b036f5e2a9091527f93c3db8e7c1541a20efd82b2412a9e17d913f6553607904d5c48f58cd8567b0380549092161790555062000a44915050565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620007455760405162461bcd60e51b815260206004820152602560248201527f45524332303a2067656e65726174696f6e20746f20746865207a65726f206164604482015264647265737360d81b606482015260840160405180910390fd5b8060026000828254620007599190620008aa565b90915550506001600160a01b0382166000908152602081905260408120805483929062000788908490620008aa565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620007e090620009f1565b90600052602060002090601f0160209004810192826200080457600085556200084f565b82601f106200081f57805160ff19168380011785556200084f565b828001600101855582156200084f579182015b828111156200084f57825182559160200191906001019062000832565b506200085d92915062000861565b5090565b5b808211156200085d576000815560010162000862565b6000602082840312156200088b57600080fd5b81516001600160a01b0381168114620008a357600080fd5b9392505050565b60008219821115620008c057620008c062000a2e565b500190565b600181815b8085111562000906578160001904821115620008ea57620008ea62000a2e565b80851615620008f857918102915b93841c9390800290620008ca565b509250929050565b6000620008a360ff8416836000826200092a57506001620009c9565b816200093957506000620009c9565b81600181146200095257600281146200095d576200097d565b6001915050620009c9565b60ff84111562000971576200097162000a2e565b50506001821b620009c9565b5060208310610133831016604e8410600b8410161715620009a2575081810a620009c9565b620009ae8383620008c5565b8060001904821115620009c557620009c562000a2e565b0290505b92915050565b6000816000190483118215151615620009ec57620009ec62000a2e565b500290565b600181811c9082168062000a0657607f821691505b6020821081141562000a2857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b612cad8062000a546000396000f3fe60806040526004361061036f5760003560e01c8063715018a6116101c6578063aacebbe3116100f7578063e517f2b911610095578063f66895a31161006f578063f66895a314610a57578063f887ea4014610a7e578063fbe6324e14610a9e578063fe575a8714610abf57600080fd5b8063e517f2b9146109fd578063ee36e35914610a1d578063f2fde38b14610a3757600080fd5b8063d189e6e1116100d1578063d189e6e114610961578063d2ce0db214610981578063d8672e5114610997578063dd62ed3e146109b757600080fd5b8063aacebbe3146108f1578063b5c5714514610911578063c5d32bb21461093157600080fd5b80638ea5220f116101645780639e252f001161013e5780639e252f0014610871578063a457c2d714610891578063a8aa1b31146108b1578063a9059cbb146108d157600080fd5b80638ea5220f1461081c57806391feb9501461083c57806395d89b411461085c57600080fd5b806381428be1116101a057806381428be1146107a857806385141a77146107c85780638cd4426d146107de5780638da5cb5b146107fe57600080fd5b8063715018a614610724578063728f8eea1461073957806375f0a8741461078857600080fd5b806339509351116102a057806362695eae1161023e57806368db925a1161021857806368db925a146106985780636a774511146106b85780636aa5b37f146106d857806370a08231146106ee57600080fd5b806362695eae1461063c578063652e2f041461066c57806366a88d961461068257600080fd5b806342b6fa111161027a57806342b6fa11146105bb5780634ada218b146105db57806359759f61146105fc5780635b24ea5e1461061c57600080fd5b8063395093511461055b5780633d30d20b1461057b57806340b28c2f1461059b57600080fd5b80631816467f1161030d578063274a533c116102e7578063274a533c146104d1578063313ce567146104e757806332d382cd14610503578063355496ca1461053b57600080fd5b80631816467f146104715780631c3909e61461049157806323b872dd146104b157600080fd5b80631340538f116103495780631340538f146103f857806313f97a8e146104185780631675d8021461043857806318160ddd1461045c57600080fd5b806306fdde031461037b578063095ea7b3146103a65780630e375a5c146103d657600080fd5b3661037657005b600080fd5b34801561038757600080fd5b50610390610aef565b60405161039d9190612932565b60405180910390f35b3480156103b257600080fd5b506103c66103c13660046126d5565b610b81565b604051901515815260200161039d565b3480156103e257600080fd5b506103f66103f1366004612701565b610b98565b005b34801561040457600080fd5b506103f66104133660046127cc565b610c37565b34801561042457600080fd5b506103f6610433366004612701565b610c7f565b34801561044457600080fd5b5061044e60085481565b60405190815260200161039d565b34801561046857600080fd5b5060025461044e565b34801561047d57600080fd5b506103f661048c3660046125ec565b610d10565b34801561049d57600080fd5b506103f66104ac3660046125ec565b610d5c565b3480156104bd57600080fd5b506103c66104cc366004612666565b610da8565b3480156104dd57600080fd5b5061044e600c5481565b3480156104f357600080fd5b506040516012815260200161039d565b34801561050f57600080fd5b50601254610523906001600160a01b031681565b6040516001600160a01b03909116815260200161039d565b34801561054757600080fd5b506103f66105563660046126a7565b610e59565b34801561056757600080fd5b506103c66105763660046126d5565b610eae565b34801561058757600080fd5b506103f6610596366004612824565b610ee5565b3480156105a757600080fd5b506103f66105b636600461262d565b610f57565b3480156105c757600080fd5b506103f66105d63660046128c9565b610faf565b3480156105e757600080fd5b506007546103c690600160b01b900460ff1681565b34801561060857600080fd5b506103f66106173660046128e2565b610ff5565b34801561062857600080fd5b506103f66106373660046126a7565b611055565b34801561064857600080fd5b506103c66106573660046125ec565b601f6020526000908152604090205460ff1681565b34801561067857600080fd5b5061044e600a5481565b34801561068e57600080fd5b5061044e600b5481565b3480156106a457600080fd5b50601154610523906001600160a01b031681565b3480156106c457600080fd5b506103f66106d3366004612859565b6110aa565b3480156106e457600080fd5b5061044e60095481565b3480156106fa57600080fd5b5061044e6107093660046125ec565b6001600160a01b031660009081526020819052604090205490565b34801561073057600080fd5b506103f66110fa565b34801561074557600080fd5b50601354601454601554601654601754610760949392919085565b604080519586526020860194909452928401919091526060830152608082015260a00161039d565b34801561079457600080fd5b50600f54610523906001600160a01b031681565b3480156107b457600080fd5b506103f66107c3366004612701565b611130565b3480156107d457600080fd5b5061052361dead81565b3480156107ea57600080fd5b506103f66107f93660046126d5565b6111c1565b34801561080a57600080fd5b506005546001600160a01b0316610523565b34801561082857600080fd5b50601054610523906001600160a01b031681565b34801561084857600080fd5b506103f6610857366004612859565b611271565b34801561086857600080fd5b506103906112c1565b34801561087d57600080fd5b506103f661088c3660046128c9565b6112d0565b34801561089d57600080fd5b506103c66108ac3660046126d5565b611338565b3480156108bd57600080fd5b50600754610523906001600160a01b031681565b3480156108dd57600080fd5b506103c66108ec3660046126d5565b6113d3565b3480156108fd57600080fd5b506103f661090c3660046125ec565b6113e0565b34801561091d57600080fd5b506103f661092c3660046126a7565b61142c565b34801561093d57600080fd5b506103c661094c3660046125ec565b601d6020526000908152604090205460ff1681565b34801561096d57600080fd5b506103f661097c3660046125ec565b611481565b34801561098d57600080fd5b5061044e60225481565b3480156109a357600080fd5b506103f66109b23660046128c9565b6114cd565b3480156109c357600080fd5b5061044e6109d236600461262d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a0957600080fd5b506103f6610a18366004612806565b611513565b348015610a2957600080fd5b506021546103c69060ff1681565b348015610a4357600080fd5b506103f6610a523660046125ec565b61155f565b348015610a6357600080fd5b50601854601954601a54601b54601c54610760949392919085565b348015610a8a57600080fd5b50600654610523906001600160a01b031681565b348015610aaa57600080fd5b506007546103c690600160a81b900460ff1681565b348015610acb57600080fd5b506103c6610ada3660046125ec565b601e6020526000908152604090205460ff1681565b606060038054610afe90612bbc565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2a90612bbc565b8015610b775780601f10610b4c57610100808354040283529160200191610b77565b820191906000526020600020905b815481529060010190602001808311610b5a57829003601f168201915b5050505050905090565b6000610b8e3384846115fa565b5060015b92915050565b6005546001600160a01b03163314610bcb5760405162461bcd60e51b8152600401610bc290612987565b60405180910390fd5b60005b8251811015610c325781601d6000858481518110610bee57610bee612c28565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610c2a81612bf7565b915050610bce565b505050565b6005546001600160a01b03163314610c615760405162461bcd60e51b8152600401610bc290612987565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b03163314610ca95760405162461bcd60e51b8152600401610bc290612987565b60005b8251811015610c325781601e6000858481518110610ccc57610ccc612c28565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610d0881612bf7565b915050610cac565b6005546001600160a01b03163314610d3a5760405162461bcd60e51b8152600401610bc290612987565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610d865760405162461bcd60e51b8152600401610bc290612987565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6000610db584848461171e565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610e3a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610bc2565b610e4e8533610e498685612ba5565b6115fa565b506001949350505050565b6005546001600160a01b03163314610e835760405162461bcd60e51b8152600401610bc290612987565b6001600160a01b03919091166000908152601d60205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610b8e918590610e49908690612a5e565b6005546001600160a01b03163314610f0f5760405162461bcd60e51b8152600401610bc290612987565b600d829055600e8190556007805461ffff60a81b1916600160b01b85151590810260ff60a81b191691909117600160a81b82021790915560011415610c325743600c55505050565b6005546001600160a01b03163314610f815760405162461bcd60e51b8152600401610bc290612987565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b03163314610fd95760405162461bcd60e51b8152600401610bc290612987565b610fe56012600a612adb565b610fef9082612b86565b60085550565b6005546001600160a01b0316331461101f5760405162461bcd60e51b8152600401610bc290612987565b61102b6012600a612adb565b6110359083612b86565b6009556110446012600a612adb565b61104e9082612b86565b600a555050565b6005546001600160a01b0316331461107f5760405162461bcd60e51b8152600401610bc290612987565b6001600160a01b03919091166000908152601e60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146110d45760405162461bcd60e51b8152600401610bc290612987565b805160135560208101516014556040810151601555606081015160165560800151601755565b6005546001600160a01b031633146111245760405162461bcd60e51b8152600401610bc290612987565b61112e6000611e60565b565b6005546001600160a01b0316331461115a5760405162461bcd60e51b8152600401610bc290612987565b60005b8251811015610c325781601f600085848151811061117d5761117d612c28565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806111b981612bf7565b91505061115d565b6005546001600160a01b031633146111eb5760405162461bcd60e51b8152600401610bc290612987565b60105460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb90604401602060405180830381600087803b15801561123957600080fd5b505af115801561124d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3291906127e9565b6005546001600160a01b0316331461129b5760405162461bcd60e51b8152600401610bc290612987565b805160185560208101516019556040810151601a556060810151601b5560800151601c55565b606060048054610afe90612bbc565b6005546001600160a01b031633146112fa5760405162461bcd60e51b8152600401610bc290612987565b6010546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611334573d6000803e3d6000fd5b5050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156113ba5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610bc2565b6113c93385610e498685612ba5565b5060019392505050565b6000610b8e33848461171e565b6005546001600160a01b0316331461140a5760405162461bcd60e51b8152600401610bc290612987565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146114565760405162461bcd60e51b8152600401610bc290612987565b6001600160a01b03919091166000908152601f60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146114ab5760405162461bcd60e51b8152600401610bc290612987565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146114f75760405162461bcd60e51b8152600401610bc290612987565b6115036012600a612adb565b61150d9082612b86565b600b5550565b6005546001600160a01b0316331461153d5760405162461bcd60e51b8152600401610bc290612987565b611548816001612b86565b602255506021805460ff1916911515919091179055565b6005546001600160a01b031633146115895760405162461bcd60e51b8152600401610bc290612987565b6001600160a01b0381166115ee5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bc2565b6115f781611e60565b50565b6001600160a01b03831661165c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bc2565b6001600160a01b0382166116bd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bc2565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116117805760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610bc2565b6001600160a01b0383166000908152601e602052604090205460ff161580156117c257506001600160a01b0382166000908152601e602052604090205460ff16155b61180e5760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e73000000000000006044820152606401610bc2565b6001600160a01b0383166000908152601d602052604090205460ff1615801561185057506001600160a01b0382166000908152601d602052604090205460ff16155b156118a457600754600160b01b900460ff166118a45760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610bc2565b6007546001600160a01b0384811691161480156118da57506001600160a01b0382166000908152601d602052604090205460ff16155b80156118f05750600754600160a01b900460ff16155b156119c2576009548111156119475760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610bc2565b600b548161196a846001600160a01b031660009081526020819052604090205490565b6119749190612a5e565b11156119c25760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610bc2565b6007546001600160a01b038481169116148015906119f957506001600160a01b0382166000908152601d602052604090205460ff16155b8015611a1e57506001600160a01b0383166000908152601d602052604090205460ff16155b8015611a345750600754600160a01b900460ff16155b15611bab57600a54811115611a8b5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610bc2565b6007546001600160a01b03838116911614611b1b57600b5481611ac3846001600160a01b031660009081526020819052604090205490565b611acd9190612a5e565b1115611b1b5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610bc2565b60215460ff1615611bab576001600160a01b0383166000908152602080526040812054611b489042612ba5565b9050602254811015611b8f5760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b6044820152606401610bc2565b506001600160a01b038316600090815260208052604090204290555b6000806000611be26040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b0387166000908152601d602052604081205460ff16158015611c2457506001600160a01b0387166000908152601d602052604090205460ff16155b8015611c3e5750600d54600c54611c3b9190612a5e565b43105b600754909150600160a01b900460ff1680611c7157506001600160a01b0388166000908152601d602052604090205460ff165b80611c9457506001600160a01b0387166000908152601d602052604090205460ff165b15611ca25760009250611dc0565b6007546001600160a01b038881169116148015611cbd575080155b15611d3757601c54601b54601a54601854601954611cdb9190612a5e565b611ce59190612a5e565b611cef9190612a5e565b611cf99190612a5e565b6040805160a08101825260185481526019546020820152601a5491810191909152601b546060820152601c5460808201529095508594509150611dc0565b80611db157601754601654601554601354601454611d559190612a5e565b611d5f9190612a5e565b611d699190612a5e565b611d739190612a5e565b6040805160a0810182526013548152601454602082015260155491810191909152601654606082015260175460808201529095508594509150611dc0565b8015611dc057600e5494508493505b6064611dcc8588612b86565b611dd69190612a76565b600754909350600160a81b900460ff168015611e0057506007546001600160a01b03898116911614155b15611e0f57611e0f8583611eb2565b611e238888611e1e868a612ba5565b61209e565b8215611e56578415611e565760006064611e3d8789612b86565b611e479190612a76565b9050611e5489308361209e565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16611334576007805460ff60a01b1916600160a01b179055306000908152602081905260408120549050600854811061208c5760016008541115611f0157506008545b6000611f0e846002612b86565b9050600081846020015184611f239190612b86565b611f2d9190612a76565b90506000611f3b8285612ba5565b905047611f4782612276565b6000611f538247612ba5565b90506000876020015186611f679190612ba5565b611f719083612a76565b90506000886020015182611f859190612b86565b90508015611f9757611f9786826123df565b8851600090611fa7846002612b86565b611fb19190612b86565b90508015611fcf57600f54611fcf906001600160a01b0316826124c3565b60408a0151600090611fe2856002612b86565b611fec9190612b86565b9050801561200a5760125461200a906001600160a01b0316826124c3565b60608b015160009061201d866002612b86565b6120279190612b86565b9050801561204557601054612045906001600160a01b0316826124c3565b60808c0151600090612058876002612b86565b6120629190612b86565b9050801561208057601154612080906001600160a01b0316826124c3565b50505050505050505050505b506007805460ff60a01b191690555050565b6001600160a01b0383166121025760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bc2565b6001600160a01b0382166121645760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bc2565b6001600160a01b038316600090815260208190526040902054818110156121dc5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610bc2565b6121e68282612ba5565b6001600160a01b03808616600090815260208190526040808220939093559085168152908120805484929061221c908490612a5e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161226891815260200190565b60405180910390a350505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106122ab576122ab612c28565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156122ff57600080fd5b505afa158015612313573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123379190612610565b8160018151811061234a5761234a612c28565b6001600160a01b03928316602091820292909201015260065461237091309116846115fa565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906123a99085906000908690309042906004016129bc565b600060405180830381600087803b1580156123c357600080fd5b505af11580156123d7573d6000803e3d6000fd5b505050505050565b6006546123f79030906001600160a01b0316846115fa565b6006546001600160a01b031663f305d7198230856000806124206005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561248357600080fd5b505af1158015612497573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124bc9190612904565b5050505050565b804710156125135760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610bc2565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612560576040519150601f19603f3d011682016040523d82523d6000602084013e612565565b606091505b5050905080610c325760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610bc2565b80356125e781612c69565b919050565b6000602082840312156125fe57600080fd5b813561260981612c54565b9392505050565b60006020828403121561262257600080fd5b815161260981612c54565b6000806040838503121561264057600080fd5b823561264b81612c54565b9150602083013561265b81612c54565b809150509250929050565b60008060006060848603121561267b57600080fd5b833561268681612c54565b9250602084013561269681612c54565b929592945050506040919091013590565b600080604083850312156126ba57600080fd5b82356126c581612c54565b9150602083013561265b81612c69565b600080604083850312156126e857600080fd5b82356126f381612c54565b946020939093013593505050565b6000806040838503121561271457600080fd5b823567ffffffffffffffff8082111561272c57600080fd5b818501915085601f83011261274057600080fd5b813560208282111561275457612754612c3e565b8160051b9250612765818401612a2d565b8281528181019085830185870184018b101561278057600080fd5b600096505b848710156127af578035955061279a86612c54565b85835260019690960195918301918301612785565b5096506127bf90508782016125dc565b9450505050509250929050565b6000602082840312156127de57600080fd5b813561260981612c69565b6000602082840312156127fb57600080fd5b815161260981612c69565b6000806040838503121561281957600080fd5b82356126f381612c69565b60008060006060848603121561283957600080fd5b833561284481612c69565b95602085013595506040909401359392505050565b600060a0828403121561286b57600080fd5b60405160a0810181811067ffffffffffffffff8211171561288e5761288e612c3e565b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b6000602082840312156128db57600080fd5b5035919050565b600080604083850312156128f557600080fd5b50508035926020909101359150565b60008060006060848603121561291957600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b8181101561295f57858101830151858201604001528201612943565b81811115612971576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612a0c5784516001600160a01b0316835293830193918301916001016129e7565b50506001600160a01b03969096166060850152505050608001529392505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715612a5657612a56612c3e565b604052919050565b60008219821115612a7157612a71612c12565b500190565b600082612a9357634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115612ad3578160001904821115612ab957612ab9612c12565b80851615612ac657918102915b93841c9390800290612a9d565b509250929050565b600061260960ff841683600082612af457506001610b92565b81612b0157506000610b92565b8160018114612b175760028114612b2157612b3d565b6001915050610b92565b60ff841115612b3257612b32612c12565b50506001821b610b92565b5060208310610133831016604e8410600b8410161715612b60575081810a610b92565b612b6a8383612a98565b8060001904821115612b7e57612b7e612c12565b029392505050565b6000816000190483118215151615612ba057612ba0612c12565b500290565b600082821015612bb757612bb7612c12565b500390565b600181811c90821680612bd057607f821691505b60208210811415612bf157634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612c0b57612c0b612c12565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146115f757600080fd5b80151581146115f757600080fdfea2646970667358221220c1bd0707d83aa6deae118d7fe85d987ae88a4d6c4151b0b320e10d39fa9419e664736f6c634300080700330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x60806040526004361061036f5760003560e01c8063715018a6116101c6578063aacebbe3116100f7578063e517f2b911610095578063f66895a31161006f578063f66895a314610a57578063f887ea4014610a7e578063fbe6324e14610a9e578063fe575a8714610abf57600080fd5b8063e517f2b9146109fd578063ee36e35914610a1d578063f2fde38b14610a3757600080fd5b8063d189e6e1116100d1578063d189e6e114610961578063d2ce0db214610981578063d8672e5114610997578063dd62ed3e146109b757600080fd5b8063aacebbe3146108f1578063b5c5714514610911578063c5d32bb21461093157600080fd5b80638ea5220f116101645780639e252f001161013e5780639e252f0014610871578063a457c2d714610891578063a8aa1b31146108b1578063a9059cbb146108d157600080fd5b80638ea5220f1461081c57806391feb9501461083c57806395d89b411461085c57600080fd5b806381428be1116101a057806381428be1146107a857806385141a77146107c85780638cd4426d146107de5780638da5cb5b146107fe57600080fd5b8063715018a614610724578063728f8eea1461073957806375f0a8741461078857600080fd5b806339509351116102a057806362695eae1161023e57806368db925a1161021857806368db925a146106985780636a774511146106b85780636aa5b37f146106d857806370a08231146106ee57600080fd5b806362695eae1461063c578063652e2f041461066c57806366a88d961461068257600080fd5b806342b6fa111161027a57806342b6fa11146105bb5780634ada218b146105db57806359759f61146105fc5780635b24ea5e1461061c57600080fd5b8063395093511461055b5780633d30d20b1461057b57806340b28c2f1461059b57600080fd5b80631816467f1161030d578063274a533c116102e7578063274a533c146104d1578063313ce567146104e757806332d382cd14610503578063355496ca1461053b57600080fd5b80631816467f146104715780631c3909e61461049157806323b872dd146104b157600080fd5b80631340538f116103495780631340538f146103f857806313f97a8e146104185780631675d8021461043857806318160ddd1461045c57600080fd5b806306fdde031461037b578063095ea7b3146103a65780630e375a5c146103d657600080fd5b3661037657005b600080fd5b34801561038757600080fd5b50610390610aef565b60405161039d9190612932565b60405180910390f35b3480156103b257600080fd5b506103c66103c13660046126d5565b610b81565b604051901515815260200161039d565b3480156103e257600080fd5b506103f66103f1366004612701565b610b98565b005b34801561040457600080fd5b506103f66104133660046127cc565b610c37565b34801561042457600080fd5b506103f6610433366004612701565b610c7f565b34801561044457600080fd5b5061044e60085481565b60405190815260200161039d565b34801561046857600080fd5b5060025461044e565b34801561047d57600080fd5b506103f661048c3660046125ec565b610d10565b34801561049d57600080fd5b506103f66104ac3660046125ec565b610d5c565b3480156104bd57600080fd5b506103c66104cc366004612666565b610da8565b3480156104dd57600080fd5b5061044e600c5481565b3480156104f357600080fd5b506040516012815260200161039d565b34801561050f57600080fd5b50601254610523906001600160a01b031681565b6040516001600160a01b03909116815260200161039d565b34801561054757600080fd5b506103f66105563660046126a7565b610e59565b34801561056757600080fd5b506103c66105763660046126d5565b610eae565b34801561058757600080fd5b506103f6610596366004612824565b610ee5565b3480156105a757600080fd5b506103f66105b636600461262d565b610f57565b3480156105c757600080fd5b506103f66105d63660046128c9565b610faf565b3480156105e757600080fd5b506007546103c690600160b01b900460ff1681565b34801561060857600080fd5b506103f66106173660046128e2565b610ff5565b34801561062857600080fd5b506103f66106373660046126a7565b611055565b34801561064857600080fd5b506103c66106573660046125ec565b601f6020526000908152604090205460ff1681565b34801561067857600080fd5b5061044e600a5481565b34801561068e57600080fd5b5061044e600b5481565b3480156106a457600080fd5b50601154610523906001600160a01b031681565b3480156106c457600080fd5b506103f66106d3366004612859565b6110aa565b3480156106e457600080fd5b5061044e60095481565b3480156106fa57600080fd5b5061044e6107093660046125ec565b6001600160a01b031660009081526020819052604090205490565b34801561073057600080fd5b506103f66110fa565b34801561074557600080fd5b50601354601454601554601654601754610760949392919085565b604080519586526020860194909452928401919091526060830152608082015260a00161039d565b34801561079457600080fd5b50600f54610523906001600160a01b031681565b3480156107b457600080fd5b506103f66107c3366004612701565b611130565b3480156107d457600080fd5b5061052361dead81565b3480156107ea57600080fd5b506103f66107f93660046126d5565b6111c1565b34801561080a57600080fd5b506005546001600160a01b0316610523565b34801561082857600080fd5b50601054610523906001600160a01b031681565b34801561084857600080fd5b506103f6610857366004612859565b611271565b34801561086857600080fd5b506103906112c1565b34801561087d57600080fd5b506103f661088c3660046128c9565b6112d0565b34801561089d57600080fd5b506103c66108ac3660046126d5565b611338565b3480156108bd57600080fd5b50600754610523906001600160a01b031681565b3480156108dd57600080fd5b506103c66108ec3660046126d5565b6113d3565b3480156108fd57600080fd5b506103f661090c3660046125ec565b6113e0565b34801561091d57600080fd5b506103f661092c3660046126a7565b61142c565b34801561093d57600080fd5b506103c661094c3660046125ec565b601d6020526000908152604090205460ff1681565b34801561096d57600080fd5b506103f661097c3660046125ec565b611481565b34801561098d57600080fd5b5061044e60225481565b3480156109a357600080fd5b506103f66109b23660046128c9565b6114cd565b3480156109c357600080fd5b5061044e6109d236600461262d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a0957600080fd5b506103f6610a18366004612806565b611513565b348015610a2957600080fd5b506021546103c69060ff1681565b348015610a4357600080fd5b506103f6610a523660046125ec565b61155f565b348015610a6357600080fd5b50601854601954601a54601b54601c54610760949392919085565b348015610a8a57600080fd5b50600654610523906001600160a01b031681565b348015610aaa57600080fd5b506007546103c690600160a81b900460ff1681565b348015610acb57600080fd5b506103c6610ada3660046125ec565b601e6020526000908152604090205460ff1681565b606060038054610afe90612bbc565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2a90612bbc565b8015610b775780601f10610b4c57610100808354040283529160200191610b77565b820191906000526020600020905b815481529060010190602001808311610b5a57829003601f168201915b5050505050905090565b6000610b8e3384846115fa565b5060015b92915050565b6005546001600160a01b03163314610bcb5760405162461bcd60e51b8152600401610bc290612987565b60405180910390fd5b60005b8251811015610c325781601d6000858481518110610bee57610bee612c28565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610c2a81612bf7565b915050610bce565b505050565b6005546001600160a01b03163314610c615760405162461bcd60e51b8152600401610bc290612987565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b03163314610ca95760405162461bcd60e51b8152600401610bc290612987565b60005b8251811015610c325781601e6000858481518110610ccc57610ccc612c28565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610d0881612bf7565b915050610cac565b6005546001600160a01b03163314610d3a5760405162461bcd60e51b8152600401610bc290612987565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610d865760405162461bcd60e51b8152600401610bc290612987565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6000610db584848461171e565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610e3a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610bc2565b610e4e8533610e498685612ba5565b6115fa565b506001949350505050565b6005546001600160a01b03163314610e835760405162461bcd60e51b8152600401610bc290612987565b6001600160a01b03919091166000908152601d60205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610b8e918590610e49908690612a5e565b6005546001600160a01b03163314610f0f5760405162461bcd60e51b8152600401610bc290612987565b600d829055600e8190556007805461ffff60a81b1916600160b01b85151590810260ff60a81b191691909117600160a81b82021790915560011415610c325743600c55505050565b6005546001600160a01b03163314610f815760405162461bcd60e51b8152600401610bc290612987565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b03163314610fd95760405162461bcd60e51b8152600401610bc290612987565b610fe56012600a612adb565b610fef9082612b86565b60085550565b6005546001600160a01b0316331461101f5760405162461bcd60e51b8152600401610bc290612987565b61102b6012600a612adb565b6110359083612b86565b6009556110446012600a612adb565b61104e9082612b86565b600a555050565b6005546001600160a01b0316331461107f5760405162461bcd60e51b8152600401610bc290612987565b6001600160a01b03919091166000908152601e60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146110d45760405162461bcd60e51b8152600401610bc290612987565b805160135560208101516014556040810151601555606081015160165560800151601755565b6005546001600160a01b031633146111245760405162461bcd60e51b8152600401610bc290612987565b61112e6000611e60565b565b6005546001600160a01b0316331461115a5760405162461bcd60e51b8152600401610bc290612987565b60005b8251811015610c325781601f600085848151811061117d5761117d612c28565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806111b981612bf7565b91505061115d565b6005546001600160a01b031633146111eb5760405162461bcd60e51b8152600401610bc290612987565b60105460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb90604401602060405180830381600087803b15801561123957600080fd5b505af115801561124d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3291906127e9565b6005546001600160a01b0316331461129b5760405162461bcd60e51b8152600401610bc290612987565b805160185560208101516019556040810151601a556060810151601b5560800151601c55565b606060048054610afe90612bbc565b6005546001600160a01b031633146112fa5760405162461bcd60e51b8152600401610bc290612987565b6010546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611334573d6000803e3d6000fd5b5050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156113ba5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610bc2565b6113c93385610e498685612ba5565b5060019392505050565b6000610b8e33848461171e565b6005546001600160a01b0316331461140a5760405162461bcd60e51b8152600401610bc290612987565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146114565760405162461bcd60e51b8152600401610bc290612987565b6001600160a01b03919091166000908152601f60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146114ab5760405162461bcd60e51b8152600401610bc290612987565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146114f75760405162461bcd60e51b8152600401610bc290612987565b6115036012600a612adb565b61150d9082612b86565b600b5550565b6005546001600160a01b0316331461153d5760405162461bcd60e51b8152600401610bc290612987565b611548816001612b86565b602255506021805460ff1916911515919091179055565b6005546001600160a01b031633146115895760405162461bcd60e51b8152600401610bc290612987565b6001600160a01b0381166115ee5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bc2565b6115f781611e60565b50565b6001600160a01b03831661165c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bc2565b6001600160a01b0382166116bd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bc2565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116117805760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610bc2565b6001600160a01b0383166000908152601e602052604090205460ff161580156117c257506001600160a01b0382166000908152601e602052604090205460ff16155b61180e5760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e73000000000000006044820152606401610bc2565b6001600160a01b0383166000908152601d602052604090205460ff1615801561185057506001600160a01b0382166000908152601d602052604090205460ff16155b156118a457600754600160b01b900460ff166118a45760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610bc2565b6007546001600160a01b0384811691161480156118da57506001600160a01b0382166000908152601d602052604090205460ff16155b80156118f05750600754600160a01b900460ff16155b156119c2576009548111156119475760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610bc2565b600b548161196a846001600160a01b031660009081526020819052604090205490565b6119749190612a5e565b11156119c25760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610bc2565b6007546001600160a01b038481169116148015906119f957506001600160a01b0382166000908152601d602052604090205460ff16155b8015611a1e57506001600160a01b0383166000908152601d602052604090205460ff16155b8015611a345750600754600160a01b900460ff16155b15611bab57600a54811115611a8b5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610bc2565b6007546001600160a01b03838116911614611b1b57600b5481611ac3846001600160a01b031660009081526020819052604090205490565b611acd9190612a5e565b1115611b1b5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610bc2565b60215460ff1615611bab576001600160a01b0383166000908152602080526040812054611b489042612ba5565b9050602254811015611b8f5760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b6044820152606401610bc2565b506001600160a01b038316600090815260208052604090204290555b6000806000611be26040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b0387166000908152601d602052604081205460ff16158015611c2457506001600160a01b0387166000908152601d602052604090205460ff16155b8015611c3e5750600d54600c54611c3b9190612a5e565b43105b600754909150600160a01b900460ff1680611c7157506001600160a01b0388166000908152601d602052604090205460ff165b80611c9457506001600160a01b0387166000908152601d602052604090205460ff165b15611ca25760009250611dc0565b6007546001600160a01b038881169116148015611cbd575080155b15611d3757601c54601b54601a54601854601954611cdb9190612a5e565b611ce59190612a5e565b611cef9190612a5e565b611cf99190612a5e565b6040805160a08101825260185481526019546020820152601a5491810191909152601b546060820152601c5460808201529095508594509150611dc0565b80611db157601754601654601554601354601454611d559190612a5e565b611d5f9190612a5e565b611d699190612a5e565b611d739190612a5e565b6040805160a0810182526013548152601454602082015260155491810191909152601654606082015260175460808201529095508594509150611dc0565b8015611dc057600e5494508493505b6064611dcc8588612b86565b611dd69190612a76565b600754909350600160a81b900460ff168015611e0057506007546001600160a01b03898116911614155b15611e0f57611e0f8583611eb2565b611e238888611e1e868a612ba5565b61209e565b8215611e56578415611e565760006064611e3d8789612b86565b611e479190612a76565b9050611e5489308361209e565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16611334576007805460ff60a01b1916600160a01b179055306000908152602081905260408120549050600854811061208c5760016008541115611f0157506008545b6000611f0e846002612b86565b9050600081846020015184611f239190612b86565b611f2d9190612a76565b90506000611f3b8285612ba5565b905047611f4782612276565b6000611f538247612ba5565b90506000876020015186611f679190612ba5565b611f719083612a76565b90506000886020015182611f859190612b86565b90508015611f9757611f9786826123df565b8851600090611fa7846002612b86565b611fb19190612b86565b90508015611fcf57600f54611fcf906001600160a01b0316826124c3565b60408a0151600090611fe2856002612b86565b611fec9190612b86565b9050801561200a5760125461200a906001600160a01b0316826124c3565b60608b015160009061201d866002612b86565b6120279190612b86565b9050801561204557601054612045906001600160a01b0316826124c3565b60808c0151600090612058876002612b86565b6120629190612b86565b9050801561208057601154612080906001600160a01b0316826124c3565b50505050505050505050505b506007805460ff60a01b191690555050565b6001600160a01b0383166121025760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bc2565b6001600160a01b0382166121645760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bc2565b6001600160a01b038316600090815260208190526040902054818110156121dc5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610bc2565b6121e68282612ba5565b6001600160a01b03808616600090815260208190526040808220939093559085168152908120805484929061221c908490612a5e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161226891815260200190565b60405180910390a350505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106122ab576122ab612c28565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156122ff57600080fd5b505afa158015612313573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123379190612610565b8160018151811061234a5761234a612c28565b6001600160a01b03928316602091820292909201015260065461237091309116846115fa565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906123a99085906000908690309042906004016129bc565b600060405180830381600087803b1580156123c357600080fd5b505af11580156123d7573d6000803e3d6000fd5b505050505050565b6006546123f79030906001600160a01b0316846115fa565b6006546001600160a01b031663f305d7198230856000806124206005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561248357600080fd5b505af1158015612497573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124bc9190612904565b5050505050565b804710156125135760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610bc2565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612560576040519150601f19603f3d011682016040523d82523d6000602084013e612565565b606091505b5050905080610c325760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610bc2565b80356125e781612c69565b919050565b6000602082840312156125fe57600080fd5b813561260981612c54565b9392505050565b60006020828403121561262257600080fd5b815161260981612c54565b6000806040838503121561264057600080fd5b823561264b81612c54565b9150602083013561265b81612c54565b809150509250929050565b60008060006060848603121561267b57600080fd5b833561268681612c54565b9250602084013561269681612c54565b929592945050506040919091013590565b600080604083850312156126ba57600080fd5b82356126c581612c54565b9150602083013561265b81612c69565b600080604083850312156126e857600080fd5b82356126f381612c54565b946020939093013593505050565b6000806040838503121561271457600080fd5b823567ffffffffffffffff8082111561272c57600080fd5b818501915085601f83011261274057600080fd5b813560208282111561275457612754612c3e565b8160051b9250612765818401612a2d565b8281528181019085830185870184018b101561278057600080fd5b600096505b848710156127af578035955061279a86612c54565b85835260019690960195918301918301612785565b5096506127bf90508782016125dc565b9450505050509250929050565b6000602082840312156127de57600080fd5b813561260981612c69565b6000602082840312156127fb57600080fd5b815161260981612c69565b6000806040838503121561281957600080fd5b82356126f381612c69565b60008060006060848603121561283957600080fd5b833561284481612c69565b95602085013595506040909401359392505050565b600060a0828403121561286b57600080fd5b60405160a0810181811067ffffffffffffffff8211171561288e5761288e612c3e565b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b6000602082840312156128db57600080fd5b5035919050565b600080604083850312156128f557600080fd5b50508035926020909101359150565b60008060006060848603121561291957600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b8181101561295f57858101830151858201604001528201612943565b81811115612971576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612a0c5784516001600160a01b0316835293830193918301916001016129e7565b50506001600160a01b03969096166060850152505050608001529392505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715612a5657612a56612c3e565b604052919050565b60008219821115612a7157612a71612c12565b500190565b600082612a9357634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115612ad3578160001904821115612ab957612ab9612c12565b80851615612ac657918102915b93841c9390800290612a9d565b509250929050565b600061260960ff841683600082612af457506001610b92565b81612b0157506000610b92565b8160018114612b175760028114612b2157612b3d565b6001915050610b92565b60ff841115612b3257612b32612c12565b50506001821b610b92565b5060208310610133831016604e8410600b8410161715612b60575081810a610b92565b612b6a8383612a98565b8060001904821115612b7e57612b7e612c12565b029392505050565b6000816000190483118215151615612ba057612ba0612c12565b500290565b600082821015612bb757612bb7612c12565b500390565b600181811c90821680612bd057607f821691505b60208210811415612bf157634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612c0b57612c0b612c12565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146115f757600080fd5b80151581146115f757600080fdfea2646970667358221220c1bd0707d83aa6deae118d7fe85d987ae88a4d6c4151b0b320e10d39fa9419e664736f6c63430008070033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

-----Decoded View---------------
Arg [0] : routerAdd (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d


Deployed Bytecode Sourcemap

13601:14333:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2377:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16846:161;;;;;;;;;;-1:-1:-1;16846:161:0;;;;;:::i;:::-;;:::i;:::-;;;7446:14:1;;7439:22;7421:41;;7409:2;7394:18;16846:161:0;7281:187:1;27083:202:0;;;;;;;;;;-1:-1:-1;27083:202:0;;;;;:::i;:::-;;:::i;:::-;;24542:152;;;;;;;;;;-1:-1:-1;24542:152:0;;;;;:::i;:::-;;:::i;26377:210::-;;;;;;;;;;-1:-1:-1;26377:210:0;;;;;:::i;:::-;;:::i;13873:61::-;;;;;;;;;;;;;;;;;;;15372:25:1;;;15360:2;15345:18;13873:61:0;15226:177:1;3497:108:0;;;;;;;;;;-1:-1:-1;3585:12:0;;3497:108;;25860:103;;;;;;;;;;-1:-1:-1;25860:103:0;;;;;:::i;:::-;;:::i;25971:::-;;;;;;;;;;-1:-1:-1;25971:103:0;;;;;:::i;:::-;;:::i;17015:448::-;;;;;;;;;;-1:-1:-1;17015:448:0;;;;;:::i;:::-;;:::i;14121:28::-;;;;;;;;;;;;;;;;3339:93;;;;;;;;;;-1:-1:-1;3339:93:0;;3422:2;17003:36:1;;16991:2;16976:18;3339:93:0;16861:184:1;14455:72:0;;;;;;;;;;-1:-1:-1;14455:72:0;;;;-1:-1:-1;;;;;14455:72:0;;;;;;-1:-1:-1;;;;;6346:32:1;;;6328:51;;6316:2;6301:18;14455:72:0;6182:203:1;26955:120:0;;;;;;;;;;-1:-1:-1;26955:120:0;;;;;:::i;:::-;;:::i;17471:248::-;;;;;;;;;;-1:-1:-1;17471:248:0;;;;;:::i;:::-;;:::i;25278:334::-;;;;;;;;;;-1:-1:-1;25278:334:0;;;;;:::i;:::-;;:::i;25115:155::-;;;;;;;;;;-1:-1:-1;25115:155:0;;;;;:::i;:::-;;:::i;24702:177::-;;;;;;;;;;-1:-1:-1;24702:177:0;;;;;:::i;:::-;;:::i;13830:34::-;;;;;;;;;;-1:-1:-1;13830:34:0;;;;-1:-1:-1;;;13830:34:0;;;;;;27293:184;;;;;;;;;;-1:-1:-1;27293:184:0;;;;;:::i;:::-;;:::i;26243:126::-;;;;;;;;;;-1:-1:-1;26243:126:0;;;;;:::i;:::-;;:::i;14975:47::-;;;;;;;;;;-1:-1:-1;14975:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13999:52;;;;;;;;;;;;;;;;14058:54;;;;;;;;;;;;;;;;14379:69;;;;;;;;;;-1:-1:-1;14379:69:0;;;;-1:-1:-1;;;;;14379:69:0;;;24887:98;;;;;;;;;;-1:-1:-1;24887:98:0;;;;;:::i;:::-;;:::i;13941:51::-;;;;;;;;;;;;;;;;3668:127;;;;;;;;;;-1:-1:-1;3668:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3769:18:0;3742:7;3769:18;;;;;;;;;;;;3668:127;12264:94;;;;;;;;;;;;;:::i;14773:41::-;;;;;;;;;;-1:-1:-1;14773:41:0;;;;;;;;;;;;;;;;;;;;;;16652:25:1;;;16708:2;16693:18;;16686:34;;;;16736:18;;;16729:34;;;;16794:2;16779:18;;16772:34;16837:3;16822:19;;16815:35;16639:3;16624:19;14773:41:0;16393:463:1;14221:75:0;;;;;;;;;;-1:-1:-1;14221:75:0;;;;-1:-1:-1;;;;;14221:75:0;;;26733:214;;;;;;;;;;-1:-1:-1;26733:214:0;;;;;:::i;:::-;;:::i;14531:79::-;;;;;;;;;;;;14568:42;14531:79;;27739:137;;;;;;;;;;-1:-1:-1;27739:137:0;;;;;:::i;:::-;;:::i;12041:87::-;;;;;;;;;;-1:-1:-1;12114:6:0;;-1:-1:-1;;;;;12114:6:0;12041:87;;14303:69;;;;;;;;;;-1:-1:-1;14303:69:0;;;;-1:-1:-1;;;;;14303:69:0;;;24993:114;;;;;;;;;;-1:-1:-1;24993:114:0;;;;;:::i;:::-;;:::i;2596:104::-;;;;;;;;;;;;;:::i;27617:114::-;;;;;;;;;;-1:-1:-1;27617:114:0;;;;;:::i;:::-;;:::i;17727:410::-;;;;;;;;;;-1:-1:-1;17727:410:0;;;;;:::i;:::-;;:::i;13714:19::-;;;;;;;;;;-1:-1:-1;13714:19:0;;;;-1:-1:-1;;;;;13714:19:0;;;18145:165;;;;;;;;;;-1:-1:-1;18145:165:0;;;;;:::i;:::-;;:::i;25620:115::-;;;;;;;;;;-1:-1:-1;25620:115:0;;;;;:::i;:::-;;:::i;26595:130::-;;;;;;;;;;-1:-1:-1;26595:130:0;;;;;:::i;:::-;;:::i;14875:41::-;;;;;;;;;;-1:-1:-1;14875:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;25743:109;;;;;;;;;;-1:-1:-1;25743:109:0;;;;;:::i;:::-;;:::i;15141:40::-;;;;;;;;;;;;;;;;27485:124;;;;;;;;;;-1:-1:-1;27485:124:0;;;;;:::i;:::-;;:::i;4287:201::-;;;;;;;;;;-1:-1:-1;4287:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;4453:18:0;;;4421:7;4453:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4287:201;26082:153;;;;;;;;;;-1:-1:-1;26082:153:0;;;;;:::i;:::-;;:::i;15100:34::-;;;;;;;;;;-1:-1:-1;15100:34:0;;;;;;;;12366:192;;;;;;;;;;-1:-1:-1;12366:192:0;;;;;:::i;:::-;;:::i;14821:45::-;;;;;;;;;;-1:-1:-1;14821:45:0;;;;;;;;;;;;;;;;;;13686:21;;;;;;;;;;-1:-1:-1;13686:21:0;;;;-1:-1:-1;;;;;13686:21:0;;;13785:38;;;;;;;;;;-1:-1:-1;13785:38:0;;;;-1:-1:-1;;;13785:38:0;;;;;;14923:45;;;;;;;;;;-1:-1:-1;14923:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2377:100;2431:13;2464:5;2457:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2377:100;:::o;16846:161::-;16921:4;16938:39;179:10;16961:7;16970:6;16938:8;:39::i;:::-;-1:-1:-1;16995:4:0;16846:161;;;;;:::o;27083:202::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;;;;;;;;;27180:9:::1;27175:103;27199:8;:15;27195:1;:19;27175:103;;;27261:5;27236:9;:22;27246:8;27255:1;27246:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;27236:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;27236:22:0;:30;;-1:-1:-1;;27236:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27216:3;::::1;::::0;::::1;:::i;:::-;;;;27175:103;;;;27083:202:::0;;:::o;24542:152::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;24660:18:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;24660:26:0::1;-1:-1:-1::0;;;;24660:26:0;;::::1;::::0;;;::::1;::::0;;24542:152::o;26377:210::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;26478:9:::1;26473:107;26497:8;:15;26493:1;:19;26473:107;;;26563:5;26534:13;:26;26548:8;26557:1;26548:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;26534:26:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;26534:26:0;:34;;-1:-1:-1;;26534:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26514:3;::::1;::::0;::::1;:::i;:::-;;;;26473:107;;25860:103:::0;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;25934:9:::1;:21:::0;;-1:-1:-1;;;;;;25934:21:0::1;-1:-1:-1::0;;;;;25934:21:0;;;::::1;::::0;;;::::1;::::0;;25860:103::o;25971:::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;26045:9:::1;:21:::0;;-1:-1:-1;;;;;;26045:21:0::1;-1:-1:-1::0;;;;;26045:21:0;;;::::1;::::0;;;::::1;::::0;;25971:103::o;17015:448::-;17147:4;17164:36;17174:6;17182:9;17193:6;17164:9;:36::i;:::-;-1:-1:-1;;;;;17240:19:0;;17213:24;17240:19;;;:11;:19;;;;;;;;179:10;17240:33;;;;;;;;17292:26;;;;17284:79;;;;-1:-1:-1;;;17284:79:0;;11625:2:1;17284:79:0;;;11607:21:1;11664:2;11644:18;;;11637:30;11703:34;11683:18;;;11676:62;-1:-1:-1;;;11754:18:1;;;11747:38;11802:19;;17284:79:0;11423:404:1;17284:79:0;17374:57;17383:6;179:10;17405:25;17424:6;17405:16;:25;:::i;:::-;17374:8;:57::i;:::-;-1:-1:-1;17451:4:0;;17015:448;-1:-1:-1;;;;17015:448:0:o;26955:120::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27040:19:0;;;::::1;;::::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;27040:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26955:120::o;17471:248::-;179:10;17587:4;17641:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;17641:34:0;;;;;;;;;;17587:4;;17609:80;;17632:7;;17641:47;;17678:10;;17641:47;:::i;25278:334::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;25423:8:::1;:20:::0;;;25454:9:::1;:22:::0;;;25487:14:::1;:22:::0;;-1:-1:-1;;;;25520:26:0;-1:-1:-1;;;25487:22:0;::::1;;::::0;;::::1;-1:-1:-1::0;;;;25520:26:0;;;;;-1:-1:-1;;;25520:26:0;::::1;;::::0;;;-1:-1:-1;25561:13:0::1;25557:47;;;25592:12;25576:13;:28:::0;25278:334;;;:::o;25115:155::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;25210:6:::1;:27:::0;;-1:-1:-1;;;;;25210:27:0;;::::1;-1:-1:-1::0;;;;;;25210:27:0;;::::1;;::::0;;;25248:4:::1;:14:::0;;;;;::::1;::::0;::::1;;::::0;;25115:155::o;24702:177::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;24857:14:::1;3422:2:::0;24857::::1;:14;:::i;:::-;24844:27;::::0;:10;:27:::1;:::i;:::-;24818:23;:53:::0;-1:-1:-1;24702:177:0:o;27293:184::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;27405:14:::1;3422:2:::0;27405::::1;:14;:::i;:::-;27396:23;::::0;:6;:23:::1;:::i;:::-;27382:11;:37:::0;27455:14:::1;3422:2:::0;27455::::1;:14;:::i;:::-;27445:24;::::0;:7;:24:::1;:::i;:::-;27430:12;:39:::0;-1:-1:-1;;27293:184:0:o;26243:126::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26331:22:0;;;::::1;;::::0;;;:13:::1;:22;::::0;;;;:30;;-1:-1:-1;;26331:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26243:126::o;24887:98::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;24961:16;;:5:::1;:16:::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;;::::0;;;24887:98::o;12264:94::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;12329:21:::1;12347:1;12329:9;:21::i;:::-;12264:94::o:0;26733:214::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;26836:9:::1;26831:109;26855:8;:15;26851:1;:19;26831:109;;;26923:5;26892:15;:28;26908:8;26917:1;26908:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;26892:28:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;26892:28:0;:36;;-1:-1:-1;;26892:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26872:3;::::1;::::0;::::1;:::i;:::-;;;;26831:109;;27739:137:::0;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;27850:9:::1;::::0;27824:44:::1;::::0;-1:-1:-1;;;27824:44:0;;-1:-1:-1;;;;;27850:9:0;;::::1;27824:44;::::0;::::1;6564:51:1::0;6631:18;;;6624:34;;;27824:25:0;;::::1;::::0;::::1;::::0;6537:18:1;;27824:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;24993:114::-:0;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;25075:24;;:9:::1;:24:::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;;::::0;;;24993:114::o;2596:104::-;2652:13;2685:7;2678:14;;;;;:::i;27617:114::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;27693:9:::1;::::0;27685:38:::1;::::0;-1:-1:-1;;;;;27693:9:0;;::::1;::::0;27685:38;::::1;;;::::0;27713:9;;27693::::1;27685:38:::0;27693:9;27685:38;27713:9;27693;27685:38;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;27617:114:::0;:::o;17727:410::-;179:10;17848:4;17897:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;17897:34:0;;;;;;;;;;17950:35;;;;17942:85;;;;-1:-1:-1;;;17942:85:0;;15022:2:1;17942:85:0;;;15004:21:1;15061:2;15041:18;;;15034:30;15100:34;15080:18;;;15073:62;-1:-1:-1;;;15151:18:1;;;15144:35;15196:19;;17942:85:0;14820:401:1;17942:85:0;18038:67;179:10;18061:7;18070:34;18089:15;18070:16;:34;:::i;18038:67::-;-1:-1:-1;18125:4:0;;17727:410;-1:-1:-1;;;17727:410:0:o;18145:165::-;18223:4;18240:40;18250:10;18262:9;18273:6;18240:9;:40::i;25620:115::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;25700:15:::1;:27:::0;;-1:-1:-1;;;;;;25700:27:0::1;-1:-1:-1::0;;;;;25700:27:0;;;::::1;::::0;;;::::1;::::0;;25620:115::o;26595:130::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26685:24:0;;;::::1;;::::0;;;:15:::1;:24;::::0;;;;:32;;-1:-1:-1;;26685:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26595:130::o;25743:109::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;25820:12:::1;:24:::0;;-1:-1:-1;;;;;;25820:24:0::1;-1:-1:-1::0;;;;;25820:24:0;;;::::1;::::0;;;::::1;::::0;;25743:109::o;27485:124::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;27587:14:::1;3422:2:::0;27587::::1;:14;:::i;:::-;27578:23;::::0;:6;:23:::1;:::i;:::-;27561:14;:40:::0;-1:-1:-1;27485:124:0:o;26082:153::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;26177:16:::1;:4:::0;26184:9:::1;26177:16;:::i;:::-;26162:12;:31:::0;-1:-1:-1;26204:15:0::1;:23:::0;;-1:-1:-1;;26204:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26082:153::o;12366:192::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12455:22:0;::::1;12447:73;;;::::0;-1:-1:-1;;;12447:73:0;;9262:2:1;12447:73:0::1;::::0;::::1;9244:21:1::0;9301:2;9281:18;;;9274:30;9340:34;9320:18;;;9313:62;-1:-1:-1;;;9391:18:1;;;9384:36;9437:19;;12447:73:0::1;9060:402:1::0;12447:73:0::1;12531:19;12541:8;12531:9;:19::i;:::-;12366:192:::0;:::o;10340:380::-;-1:-1:-1;;;;;10476:19:0;;10468:68;;;;-1:-1:-1;;;10468:68:0;;14258:2:1;10468:68:0;;;14240:21:1;14297:2;14277:18;;;14270:30;14336:34;14316:18;;;14309:62;-1:-1:-1;;;14387:18:1;;;14380:34;14431:19;;10468:68:0;14056:400:1;10468:68:0;-1:-1:-1;;;;;10555:21:0;;10547:68;;;;-1:-1:-1;;;10547:68:0;;9669:2:1;10547:68:0;;;9651:21:1;9708:2;9688:18;;;9681:30;9747:34;9727:18;;;9720:62;-1:-1:-1;;;9798:18:1;;;9791:32;9840:19;;10547:68:0;9467:398:1;10547:68:0;-1:-1:-1;;;;;10628:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10680:32;;15372:25:1;;;10680:32:0;;15345:18:1;10680:32:0;;;;;;;10340:380;;;:::o;18318:3272::-;18468:1;18459:6;:10;18451:64;;;;-1:-1:-1;;;18451:64:0;;12395:2:1;18451:64:0;;;12377:21:1;12434:2;12414:18;;;12407:30;12473:34;12453:18;;;12446:62;-1:-1:-1;;;12524:18:1;;;12517:39;12573:19;;18451:64:0;12193:405:1;18451:64:0;-1:-1:-1;;;;;18549:21:0;;;;;;:13;:21;;;;;;;;18548:22;:51;;;;-1:-1:-1;;;;;;18575:24:0;;;;;;:13;:24;;;;;;;;18574:25;18548:51;18526:126;;;;-1:-1:-1;;;18526:126:0;;13498:2:1;18526:126:0;;;13480:21:1;13537:2;13517:18;;;13510:30;13576:27;13556:18;;;13549:55;13621:18;;18526:126:0;13296:349:1;18526:126:0;-1:-1:-1;;;;;18670:17:0;;;;;;:9;:17;;;;;;;;18669:18;:43;;;;-1:-1:-1;;;;;;18692:20:0;;;;;;:9;:20;;;;;;;;18691:21;18669:43;18665:122;;;18737:14;;-1:-1:-1;;;18737:14:0;;;;18729:46;;;;-1:-1:-1;;;18729:46:0;;12805:2:1;18729:46:0;;;12787:21:1;12844:2;12824:18;;;12817:30;-1:-1:-1;;;12863:18:1;;;12856:49;12922:18;;18729:46:0;12603:343:1;18729:46:0;18813:4;;-1:-1:-1;;;;;18803:14:0;;;18813:4;;18803:14;:39;;;;-1:-1:-1;;;;;;18822:20:0;;;;;;:9;:20;;;;;;;;18821:21;18803:39;:59;;;;-1:-1:-1;18847:15:0;;-1:-1:-1;;;18847:15:0;;;;18846:16;18803:59;18799:311;;;18897:11;;18887:6;:21;;18879:63;;;;-1:-1:-1;;;18879:63:0;;8904:2:1;18879:63:0;;;8886:21:1;8943:2;8923:18;;;8916:30;8982:31;8962:18;;;8955:59;9031:18;;18879:63:0;8702:353:1;18879:63:0;19016:14;;19006:6;18983:20;18993:9;-1:-1:-1;;;;;3769:18:0;3742:7;3769:18;;;;;;;;;;;;3668:127;18983:20;:29;;;;:::i;:::-;:47;;18957:141;;;;-1:-1:-1;;;18957:141:0;;10479:2:1;18957:141:0;;;10461:21:1;;;10498:18;;;10491:30;10557:34;10537:18;;;10530:62;10609:18;;18957:141:0;10277:356:1;18957:141:0;19150:4;;-1:-1:-1;;;;;19140:14:0;;;19150:4;;19140:14;;;;:39;;-1:-1:-1;;;;;;19159:20:0;;;;;;:9;:20;;;;;;;;19158:21;19140:39;:61;;;;-1:-1:-1;;;;;;19184:17:0;;;;;;:9;:17;;;;;;;;19183:18;19140:61;:81;;;;-1:-1:-1;19206:15:0;;-1:-1:-1;;;19206:15:0;;;;19205:16;19140:81;19122:682;;;19266:12;;19256:6;:22;;19248:65;;;;-1:-1:-1;;;19248:65:0;;14663:2:1;19248:65:0;;;14645:21:1;14702:2;14682:18;;;14675:30;14741:32;14721:18;;;14714:60;14791:18;;19248:65:0;14461:354:1;19248:65:0;19345:4;;-1:-1:-1;;;;;19332:17:0;;;19345:4;;19332:17;19328:211;;19433:14;;19423:6;19400:20;19410:9;-1:-1:-1;;;;;3769:18:0;3742:7;3769:18;;;;;;;;;;;;3668:127;19400:20;:29;;;;:::i;:::-;:47;;19370:153;;;;-1:-1:-1;;;19370:153:0;;10479:2:1;19370:153:0;;;10461:21:1;;;10498:18;;;10491:30;10557:34;10537:18;;;10530:62;10609:18;;19370:153:0;10277:356:1;19370:153:0;19557:15;;;;19553:240;;;-1:-1:-1;;;;;19632:17:0;;19593:18;19632:17;;;:9;:17;;;;;;19614:35;;:15;:35;:::i;:::-;19593:56;;19690:12;;19676:10;:26;;19668:55;;;;-1:-1:-1;;;19668:55:0;;13153:2:1;19668:55:0;;;13135:21:1;13192:2;13172:18;;;13165:30;-1:-1:-1;;;13211:18:1;;;13204:46;13267:18;;19668:55:0;12951:340:1;19668:55:0;-1:-1:-1;;;;;;19742:17:0;;;;;;:9;:17;;;;;19762:15;19742:35;;19553:240;19816:15;19842:14;19867:11;19889:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19889:25:0;-1:-1:-1;;;;;19948:17:0;;19927;19948;;;:9;:17;;;;;;;;19947:18;:56;;;;-1:-1:-1;;;;;;19983:20:0;;;;;;:9;:20;;;;;;;;19982:21;19947:56;:112;;;;;20051:8;;20035:13;;:24;;;;:::i;:::-;20020:12;:39;19947:112;20147:15;;19927:132;;-1:-1:-1;;;;20147:15:0;;;;;:36;;-1:-1:-1;;;;;;20166:17:0;;;;;;:9;:17;;;;;;;;20147:36;:60;;;-1:-1:-1;;;;;;20187:20:0;;;;;;:9;:20;;;;;;;;20147:60;20143:863;;;20228:1;20222:7;;20143:863;;;20293:4;;-1:-1:-1;;;;;20280:17:0;;;20293:4;;20280:17;:34;;;;;20302:12;20301:13;20280:34;20276:730;;;20522:13;;20488;;20436:16;;20522:9;20397:19;20358;;:58;;20397:19;20358:58;:::i;:::-;:94;;;;:::i;:::-;:143;;;;:::i;:::-;:177;;;;:::i;:::-;20581:24;;;;;;;;20596:9;20581:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20331:204;;-1:-1:-1;20331:204:0;;-1:-1:-1;20581:24:0;-1:-1:-1;20276:730:0;;;20628:12;20623:383;;20815:9;;20786;;20754:12;;20815:5;20719:15;20684;;:50;;20719:15;20684:50;:::i;:::-;:82;;;;:::i;:::-;:111;;;;:::i;:::-;:140;;;;:::i;:::-;20871:20;;;;;;;;20886:5;20871:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20657:167;;-1:-1:-1;20657:167:0;;-1:-1:-1;20871:20:0;-1:-1:-1;20623:383:0;;;20913:12;20909:97;;;20952:9;;;-1:-1:-1;20952:9:0;;-1:-1:-1;20909:97:0;21044:3;21025:15;21034:6;21025;:15;:::i;:::-;21024:23;;;;:::i;:::-;21161:18;;21018:29;;-1:-1:-1;;;;21161:18:0;;;;:36;;;;-1:-1:-1;21193:4:0;;-1:-1:-1;;;;;21183:14:0;;;21193:4;;21183:14;;21161:36;21157:76;;;21199:34;21211:7;21220:12;21199:11;:34::i;:::-;21275:48;21291:6;21299:9;21310:12;21319:3;21310:6;:12;:::i;:::-;21275:15;:48::i;:::-;21338:7;;21334:249;;21410:11;;21406:164;;21442:17;21483:3;21463:16;21472:7;21463:6;:16;:::i;:::-;21462:24;;;;:::i;:::-;21442:44;;21505:49;21521:6;21537:4;21544:9;21505:15;:49::i;:::-;21423:147;21406:164;18440:3150;;;;;18318:3272;;;:::o;12566:173::-;12641:6;;;-1:-1:-1;;;;;12658:17:0;;;-1:-1:-1;;;;;;12658:17:0;;;;;;;12691:40;;12641:6;;;12658:17;12641:6;;12691:40;;12622:16;;12691:40;12611:128;12566:173;:::o;21598:1889::-;15227:15;;-1:-1:-1;;;15227:15:0;;;;15222:125;;15259:15;:22;;-1:-1:-1;;;;15259:22:0;-1:-1:-1;;;15259:22:0;;;21733:4:::1;-1:-1:-1::0;3769:18:0;;;;;;;;;;;21689:50:::1;;21773:23;;21754:15;:42;21750:1730;;21843:1;21817:23;;:27;21813:109;;;-1:-1:-1::0;21883:23:0::1;::::0;21813:109:::1;21993:19;22015:11;:7:::0;22025:1:::1;22015:11;:::i;:::-;21993:33;;22041:32;22135:11;22095:9;:19;;;22077:15;:37;;;;:::i;:::-;22076:70;;;;:::i;:::-;22041:105:::0;-1:-1:-1;22161:14:0::1;22178:42;22041:105:::0;22178:15;:42:::1;:::i;:::-;22161:59:::0;-1:-1:-1;22262:21:0::1;22300:24;22161:59:::0;22300:16:::1;:24::i;:::-;22341:20;22364:38;22388:14:::0;22364:21:::1;:38;:::i;:::-;22341:61;;22417:19;22469:9;:19;;;22455:11;:33;;;;:::i;:::-;22439:50;::::0;:12;:50:::1;:::i;:::-;22417:72;;22504:29;22550:9;:19;;;22536:11;:33;;;;:::i;:::-;22504:65:::0;-1:-1:-1;22590:25:0;;22586:172:::1;;22681:61;22694:24;22720:21;22681:12;:61::i;:::-;22815:19:::0;;22774:20:::1;::::0;22797:15:::1;:11:::0;22811:1:::1;22797:15;:::i;:::-;:37;;;;:::i;:::-;22774:60:::0;-1:-1:-1;22853:16:0;;22849:105:::1;;22898:15;::::0;22890:48:::1;::::0;-1:-1:-1;;;;;22898:15:0::1;22925:12:::0;22890:34:::1;:48::i;:::-;23008:16;::::0;::::1;::::0;22970:17:::1;::::0;22990:15:::1;:11:::0;23004:1:::1;22990:15;:::i;:::-;:34;;;;:::i;:::-;22970:54:::0;-1:-1:-1;23043:13:0;;23039:96:::1;;23085:12;::::0;23077:42:::1;::::0;-1:-1:-1;;;;;23085:12:0::1;23109:9:::0;23077:31:::1;:42::i;:::-;23186:13;::::0;::::1;::::0;23151:14:::1;::::0;23168:15:::1;:11:::0;23182:1:::1;23168:15;:::i;:::-;:31;;;;:::i;:::-;23151:48:::0;-1:-1:-1;23218:10:0;;23214:87:::1;;23257:9;::::0;23249:36:::1;::::0;-1:-1:-1;;;;;23257:9:0::1;23278:6:::0;23249:28:::1;:36::i;:::-;23352:13;::::0;::::1;::::0;23317:14:::1;::::0;23334:15:::1;:11:::0;23348:1:::1;23334:15;:::i;:::-;:31;;;;:::i;:::-;23317:48:::0;-1:-1:-1;23384:10:0;;23380:87:::1;;23423:9;::::0;23415:36:::1;::::0;-1:-1:-1;;;;;23423:9:0::1;23444:6:::0;23415:28:::1;:36::i;:::-;21798:1682;;;;;;;;;;;21750:1730;-1:-1:-1::0;15312:15:0;:23;;-1:-1:-1;;;;15312:23:0;;;21598:1889;;:::o;7800:638::-;-1:-1:-1;;;;;7940:20:0;;7932:70;;;;-1:-1:-1;;;7932:70:0;;13852:2:1;7932:70:0;;;13834:21:1;13891:2;13871:18;;;13864:30;13930:34;13910:18;;;13903:62;-1:-1:-1;;;13981:18:1;;;13974:35;14026:19;;7932:70:0;13650:401:1;7932:70:0;-1:-1:-1;;;;;8021:23:0;;8013:71;;;;-1:-1:-1;;;8013:71:0;;8500:2:1;8013:71:0;;;8482:21:1;8539:2;8519:18;;;8512:30;8578:34;8558:18;;;8551:62;-1:-1:-1;;;8629:18:1;;;8622:33;8672:19;;8013:71:0;8298:399:1;8013:71:0;-1:-1:-1;;;;;8181:17:0;;8157:21;8181:17;;;;;;;;;;;8217:23;;;;8209:74;;;;-1:-1:-1;;;8209:74:0;;10072:2:1;8209:74:0;;;10054:21:1;10111:2;10091:18;;;10084:30;10150:34;10130:18;;;10123:62;-1:-1:-1;;;10201:18:1;;;10194:36;10247:19;;8209:74:0;9870:402:1;8209:74:0;8314:22;8330:6;8314:13;:22;:::i;:::-;-1:-1:-1;;;;;8294:17:0;;;:9;:17;;;;;;;;;;;:42;;;;8347:20;;;;;;;;:30;;8371:6;;8294:9;8347:30;;8371:6;;8347:30;:::i;:::-;;;;;;;;8412:9;-1:-1:-1;;;;;8395:35:0;8404:6;-1:-1:-1;;;;;8395:35:0;;8423:6;8395:35;;;;15372:25:1;;15360:2;15345:18;;15226:177;8395:35:0;;;;;;;;7921:517;7800:638;;;:::o;23495:534::-;23645:16;;;23659:1;23645:16;;;;;;;;23621:21;;23645:16;;;;;;;;;;-1:-1:-1;23645:16:0;23621:40;;23690:4;23672;23677:1;23672:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23672:23:0;;;:7;;;;;;;;;;:23;;;;23716:6;;:13;;;-1:-1:-1;;;23716:13:0;;;;:6;;;;;:11;;:13;;;;;23672:7;;23716:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23706:4;23711:1;23706:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23706:23:0;;;:7;;;;;;;;;:23;23774:6;;23742:53;;23759:4;;23774:6;23783:11;23742:8;:53::i;:::-;23834:6;;:187;;-1:-1:-1;;;23834:187:0;;-1:-1:-1;;;;;23834:6:0;;;;:57;;:187;;23906:11;;23834:6;;23948:4;;23975;;23995:15;;23834:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23550:479;23495:534;:::o;24037:497::-;24217:6;;24185:53;;24202:4;;-1:-1:-1;;;;;24217:6:0;24226:11;24185:8;:53::i;:::-;24281:6;;-1:-1:-1;;;;;24281:6:0;:22;24312:9;24346:4;24366:11;24281:6;;24478:7;12114:6;;-1:-1:-1;;;;;12114:6:0;;12041:87;24478:7;24281:245;;;;;;-1:-1:-1;;;;;;24281:245:0;;;-1:-1:-1;;;;;7028:15:1;;;24281:245:0;;;7010:34:1;7060:18;;;7053:34;;;;7103:18;;;7096:34;;;;7146:18;;;7139:34;7210:15;;;7189:19;;;7182:44;24500:15:0;7242:19:1;;;7235:35;6944:19;;24281:245:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24037:497;;:::o;11484:319::-;11599:6;11574:21;:31;;11566:73;;;;-1:-1:-1;;;11566:73:0;;11267:2:1;11566:73:0;;;11249:21:1;11306:2;11286:18;;;11279:30;11345:31;11325:18;;;11318:59;11394:18;;11566:73:0;11065:353:1;11566:73:0;11653:12;11671:9;-1:-1:-1;;;;;11671:14:0;11694:6;11671:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11652:54;;;11725:7;11717:78;;;;-1:-1:-1;;;11717:78:0;;10840:2:1;11717:78:0;;;10822:21:1;10879:2;10859:18;;;10852:30;10918:34;10898:18;;;10891:62;10989:28;10969:18;;;10962:56;11035:19;;11717:78:0;10638:422:1;14:128;79:20;;108:28;79:20;108:28;:::i;:::-;14:128;;;:::o;147:247::-;206:6;259:2;247:9;238:7;234:23;230:32;227:52;;;275:1;272;265:12;227:52;314:9;301:23;333:31;358:5;333:31;:::i;:::-;383:5;147:247;-1:-1:-1;;;147:247:1:o;399:251::-;469:6;522:2;510:9;501:7;497:23;493:32;490:52;;;538:1;535;528:12;490:52;570:9;564:16;589:31;614:5;589:31;:::i;655:388::-;723:6;731;784:2;772:9;763:7;759:23;755:32;752:52;;;800:1;797;790:12;752:52;839:9;826:23;858:31;883:5;858:31;:::i;:::-;908:5;-1:-1:-1;965:2:1;950:18;;937:32;978:33;937:32;978:33;:::i;:::-;1030:7;1020:17;;;655:388;;;;;:::o;1048:456::-;1125:6;1133;1141;1194:2;1182:9;1173:7;1169:23;1165:32;1162:52;;;1210:1;1207;1200:12;1162:52;1249:9;1236:23;1268:31;1293:5;1268:31;:::i;:::-;1318:5;-1:-1:-1;1375:2:1;1360:18;;1347:32;1388:33;1347:32;1388:33;:::i;:::-;1048:456;;1440:7;;-1:-1:-1;;;1494:2:1;1479:18;;;;1466:32;;1048:456::o;1509:382::-;1574:6;1582;1635:2;1623:9;1614:7;1610:23;1606:32;1603:52;;;1651:1;1648;1641:12;1603:52;1690:9;1677:23;1709:31;1734:5;1709:31;:::i;:::-;1759:5;-1:-1:-1;1816:2:1;1801:18;;1788:32;1829:30;1788:32;1829:30;:::i;1896:315::-;1964:6;1972;2025:2;2013:9;2004:7;2000:23;1996:32;1993:52;;;2041:1;2038;2031:12;1993:52;2080:9;2067:23;2099:31;2124:5;2099:31;:::i;:::-;2149:5;2201:2;2186:18;;;;2173:32;;-1:-1:-1;;;1896:315:1:o;2216:1102::-;2306:6;2314;2367:2;2355:9;2346:7;2342:23;2338:32;2335:52;;;2383:1;2380;2373:12;2335:52;2423:9;2410:23;2452:18;2493:2;2485:6;2482:14;2479:34;;;2509:1;2506;2499:12;2479:34;2547:6;2536:9;2532:22;2522:32;;2592:7;2585:4;2581:2;2577:13;2573:27;2563:55;;2614:1;2611;2604:12;2563:55;2650:2;2637:16;2672:4;2695:2;2691;2688:10;2685:36;;;2701:18;;:::i;:::-;2747:2;2744:1;2740:10;2730:20;;2770:28;2794:2;2790;2786:11;2770:28;:::i;:::-;2832:15;;;2863:12;;;;2895:11;;;2925;;;2921:20;;2918:33;-1:-1:-1;2915:53:1;;;2964:1;2961;2954:12;2915:53;2986:1;2977:10;;2996:238;3010:2;3007:1;3004:9;2996:238;;;3081:3;3068:17;3055:30;;3098:31;3123:5;3098:31;:::i;:::-;3142:18;;;3028:1;3021:9;;;;;3180:12;;;;3212;;2996:238;;;-1:-1:-1;3253:5:1;-1:-1:-1;3277:35:1;;-1:-1:-1;3293:18:1;;;3277:35;:::i;:::-;3267:45;;;;;;2216:1102;;;;;:::o;3323:241::-;3379:6;3432:2;3420:9;3411:7;3407:23;3403:32;3400:52;;;3448:1;3445;3438:12;3400:52;3487:9;3474:23;3506:28;3528:5;3506:28;:::i;3569:245::-;3636:6;3689:2;3677:9;3668:7;3664:23;3660:32;3657:52;;;3705:1;3702;3695:12;3657:52;3737:9;3731:16;3756:28;3778:5;3756:28;:::i;3819:309::-;3884:6;3892;3945:2;3933:9;3924:7;3920:23;3916:32;3913:52;;;3961:1;3958;3951:12;3913:52;4000:9;3987:23;4019:28;4041:5;4019:28;:::i;4133:377::-;4207:6;4215;4223;4276:2;4264:9;4255:7;4251:23;4247:32;4244:52;;;4292:1;4289;4282:12;4244:52;4331:9;4318:23;4350:28;4372:5;4350:28;:::i;:::-;4397:5;4449:2;4434:18;;4421:32;;-1:-1:-1;4500:2:1;4485:18;;;4472:32;;4133:377;-1:-1:-1;;;4133:377:1:o;4515:703::-;4596:6;4649:3;4637:9;4628:7;4624:23;4620:33;4617:53;;;4666:1;4663;4656:12;4617:53;4699:2;4693:9;4741:3;4733:6;4729:16;4811:6;4799:10;4796:22;4775:18;4763:10;4760:34;4757:62;4754:88;;;4822:18;;:::i;:::-;4862:10;4858:2;4851:22;;4910:9;4897:23;4889:6;4882:39;4982:2;4971:9;4967:18;4954:32;4949:2;4941:6;4937:15;4930:57;5048:2;5037:9;5033:18;5020:32;5015:2;5007:6;5003:15;4996:57;5114:2;5103:9;5099:18;5086:32;5081:2;5073:6;5069:15;5062:57;5181:3;5170:9;5166:19;5153:33;5147:3;5139:6;5135:16;5128:59;5206:6;5196:16;;;4515:703;;;;:::o;5223:180::-;5282:6;5335:2;5323:9;5314:7;5310:23;5306:32;5303:52;;;5351:1;5348;5341:12;5303:52;-1:-1:-1;5374:23:1;;5223:180;-1:-1:-1;5223:180:1:o;5408:248::-;5476:6;5484;5537:2;5525:9;5516:7;5512:23;5508:32;5505:52;;;5553:1;5550;5543:12;5505:52;-1:-1:-1;;5576:23:1;;;5646:2;5631:18;;;5618:32;;-1:-1:-1;5408:248:1:o;5661:306::-;5749:6;5757;5765;5818:2;5806:9;5797:7;5793:23;5789:32;5786:52;;;5834:1;5831;5824:12;5786:52;5863:9;5857:16;5847:26;;5913:2;5902:9;5898:18;5892:25;5882:35;;5957:2;5946:9;5942:18;5936:25;5926:35;;5661:306;;;;;:::o;7696:597::-;7808:4;7837:2;7866;7855:9;7848:21;7898:6;7892:13;7941:6;7936:2;7925:9;7921:18;7914:34;7966:1;7976:140;7990:6;7987:1;7984:13;7976:140;;;8085:14;;;8081:23;;8075:30;8051:17;;;8070:2;8047:26;8040:66;8005:10;;7976:140;;;8134:6;8131:1;8128:13;8125:91;;;8204:1;8199:2;8190:6;8179:9;8175:22;8171:31;8164:42;8125:91;-1:-1:-1;8277:2:1;8256:15;-1:-1:-1;;8252:29:1;8237:45;;;;8284:2;8233:54;;7696:597;-1:-1:-1;;;7696:597:1:o;11832:356::-;12034:2;12016:21;;;12053:18;;;12046:30;12112:34;12107:2;12092:18;;12085:62;12179:2;12164:18;;11832:356::o;15408:980::-;15670:4;15718:3;15707:9;15703:19;15749:6;15738:9;15731:25;15775:2;15813:6;15808:2;15797:9;15793:18;15786:34;15856:3;15851:2;15840:9;15836:18;15829:31;15880:6;15915;15909:13;15946:6;15938;15931:22;15984:3;15973:9;15969:19;15962:26;;16023:2;16015:6;16011:15;15997:29;;16044:1;16054:195;16068:6;16065:1;16062:13;16054:195;;;16133:13;;-1:-1:-1;;;;;16129:39:1;16117:52;;16224:15;;;;16189:12;;;;16165:1;16083:9;16054:195;;;-1:-1:-1;;;;;;;16305:32:1;;;;16300:2;16285:18;;16278:60;-1:-1:-1;;;16369:3:1;16354:19;16347:35;16266:3;15408:980;-1:-1:-1;;;15408:980:1:o;17050:275::-;17121:2;17115:9;17186:2;17167:13;;-1:-1:-1;;17163:27:1;17151:40;;17221:18;17206:34;;17242:22;;;17203:62;17200:88;;;17268:18;;:::i;:::-;17304:2;17297:22;17050:275;;-1:-1:-1;17050:275:1:o;17330:128::-;17370:3;17401:1;17397:6;17394:1;17391:13;17388:39;;;17407:18;;:::i;:::-;-1:-1:-1;17443:9:1;;17330:128::o;17463:217::-;17503:1;17529;17519:132;;17573:10;17568:3;17564:20;17561:1;17554:31;17608:4;17605:1;17598:15;17636:4;17633:1;17626:15;17519:132;-1:-1:-1;17665:9:1;;17463:217::o;17685:422::-;17774:1;17817:5;17774:1;17831:270;17852:7;17842:8;17839:21;17831:270;;;17911:4;17907:1;17903:6;17899:17;17893:4;17890:27;17887:53;;;17920:18;;:::i;:::-;17970:7;17960:8;17956:22;17953:55;;;17990:16;;;;17953:55;18069:22;;;;18029:15;;;;17831:270;;;17835:3;17685:422;;;;;:::o;18112:140::-;18170:5;18199:47;18240:4;18230:8;18226:19;18220:4;18306:5;18336:8;18326:80;;-1:-1:-1;18377:1:1;18391:5;;18326:80;18425:4;18415:76;;-1:-1:-1;18462:1:1;18476:5;;18415:76;18507:4;18525:1;18520:59;;;;18593:1;18588:130;;;;18500:218;;18520:59;18550:1;18541:10;;18564:5;;;18588:130;18625:3;18615:8;18612:17;18609:43;;;18632:18;;:::i;:::-;-1:-1:-1;;18688:1:1;18674:16;;18703:5;;18500:218;;18802:2;18792:8;18789:16;18783:3;18777:4;18774:13;18770:36;18764:2;18754:8;18751:16;18746:2;18740:4;18737:12;18733:35;18730:77;18727:159;;;-1:-1:-1;18839:19:1;;;18871:5;;18727:159;18918:34;18943:8;18937:4;18918:34;:::i;:::-;18988:6;18984:1;18980:6;18976:19;18967:7;18964:32;18961:58;;;18999:18;;:::i;:::-;19037:20;;18257:806;-1:-1:-1;;;18257:806:1:o;19068:168::-;19108:7;19174:1;19170;19166:6;19162:14;19159:1;19156:21;19151:1;19144:9;19137:17;19133:45;19130:71;;;19181:18;;:::i;:::-;-1:-1:-1;19221:9:1;;19068:168::o;19241:125::-;19281:4;19309:1;19306;19303:8;19300:34;;;19314:18;;:::i;:::-;-1:-1:-1;19351:9:1;;19241:125::o;19371:380::-;19450:1;19446:12;;;;19493;;;19514:61;;19568:4;19560:6;19556:17;19546:27;;19514:61;19621:2;19613:6;19610:14;19590:18;19587:38;19584:161;;;19667:10;19662:3;19658:20;19655:1;19648:31;19702:4;19699:1;19692:15;19730:4;19727:1;19720:15;19584:161;;19371:380;;;:::o;19756:135::-;19795:3;-1:-1:-1;;19816:17:1;;19813:43;;;19836:18;;:::i;:::-;-1:-1:-1;19883:1:1;19872:13;;19756:135::o;19896:127::-;19957:10;19952:3;19948:20;19945:1;19938:31;19988:4;19985:1;19978:15;20012:4;20009:1;20002:15;20028:127;20089:10;20084:3;20080:20;20077:1;20070:31;20120:4;20117:1;20110:15;20144:4;20141:1;20134:15;20160:127;20221:10;20216:3;20212:20;20209:1;20202:31;20252:4;20249:1;20242:15;20276:4;20273:1;20266:15;20292:131;-1:-1:-1;;;;;20367:31:1;;20357:42;;20347:70;;20413:1;20410;20403:12;20428:118;20514:5;20507:13;20500:21;20493:5;20490:32;20480:60;;20536:1;20533;20526:12

Swarm Source

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