ETH Price: $2,280.34 (-2.71%)

Token

PUPPYSHIBA (PUPPY)
 

Overview

Max Total Supply

1,000,000,000 PUPPY

Holders

44

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
183,818.918875160830593686 PUPPY

Value
$0.00
0x53020e522705904a7dbf5d2d2dff3873ea7ba994
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:
Puppyshiba

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-04-19
*/

//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 Puppyshiba 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 = 2_500_000 * 10**18;
    uint256 public maxBuyLimit = 10_000_000 * 10**18;
    uint256 public maxSellLimit = 10_000_000 * 10**18;
    uint256 public maxWalletLimit = 10_000_000 * 10**18;

    uint256 public genesis_block;
    uint256 private deadline = 4;
    uint256 private launchtax = 99;

    address public marketingWallet = 0xba1DC0Fc942aB0154753289c85f2c2FC2677a52d;
    address public devWallet = 0xf5c9d3f40840f76b37Ec8aA320F9370294ce84CA;
    address public buybackWallet = 0x1a9c86193E20501C3134DDbe1f042ab493F17488;    
	address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
        uint256 buyback;
        uint256 dev;
    }

    Taxes public taxes = Taxes(4, 0, 5, 1);
    Taxes public sellTaxes = Taxes(4, 0, 7, 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 = false;
    uint256 public coolDownTime = 60 seconds;

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

    constructor(address routerAdd) ERC20("PUPPYSHIBA", "PUPPY") {
        _tokengeneration(msg.sender, 1000000000 * 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[devWallet] = true;
        exemptFee[buybackWallet] = 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[devWallet] = true;
        allowedTransfer[buybackWallet] = 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.dev + 
                sellTaxes.buyback;
            feesum = feeswap;
            currentTaxes = sellTaxes;
        } else if (!useLaunchFee) {
            feeswap =
                taxes.liquidity +
                taxes.marketing +
                taxes.dev +
                taxes.buyback;
            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 devAmt = unitBalance * 2 * swapTaxes.dev;
            if (devAmt > 0) {
                payable(devWallet).sendValue(devAmt);
            }

            uint256 buybackAmt = unitBalance * 2 * swapTaxes.buyback;
            if (buybackAmt > 0) {
                payable(buybackWallet).sendValue(buybackAmt);
            }

        }
    }

    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() external onlyOwner {
        require(!tradingEnabled, "Cannot re-enable trading"); //Trading can't be disabled once enabled
        tradingEnabled = true;
        providingLiquidity = true;
        genesis_block = block.number;
    }

    function updatedeadline(uint256 _deadline) external onlyOwner {
        require(!tradingEnabled, "Can't change when trading has started");
        deadline = _deadline;
    }

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

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

    function updateBuybackWallet(address newWallet) external onlyOwner {
        buybackWallet = 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":"buybackWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"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":"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":"buyback","type":"uint256"},{"internalType":"uint256","name":"dev","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":"buyback","type":"uint256"},{"internalType":"uint256","name":"dev","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":"address","name":"newWallet","type":"address"}],"name":"updateBuybackWallet","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":"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":"buyback","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"internalType":"struct Puppyshiba.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":"buyback","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"internalType":"struct Puppyshiba.Taxes","name":"newTaxes","type":"tuple"}],"name":"updateTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateTradingEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"updatedeadline","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6007805462ffffff60a01b191681556a02116545850052128000006008556a084595161401484a0000006009819055600a819055600b556004600d8190556063600e55600f80546001600160a01b031990811673ba1dc0fc942ab0154753289c85f2c2fc2677a52d1790915560108054821673f5c9d3f40840f76b37ec8aa320f9370294ce84ca17905560118054909116731a9c86193e20501c3134ddbe1f042ab493f174881790556080819052600060a0819052600560c0819052600160e0819052601284905560138390556014919091556015819055610180604052610100839052610120829052610140849052610160819052601692909255601755601891909155601955601e805460ff19169055603c601f553480156200012357600080fd5b506040516200360f3803806200360f83398101604081905262000146916200081e565b604080518082018252600a8152695055505059534849424160b01b602080830191825283518085019094526005845264505550505960d81b908401528151919291620001959160039162000778565b508051620001ab90600490602084019062000778565b505050620001c8620001c26200062c60201b60201c565b62000630565b620001f133620001db6012600a620008b4565b620001eb90633b9aca0062000975565b62000682565b336000908152601a60209081526040808320805460ff19166001179055805163c45a015560e01b815290518493926001600160a01b0385169263c45a01559260048083019392829003018186803b1580156200024c57600080fd5b505afa15801562000261573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028791906200081e565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002d057600080fd5b505afa158015620002e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030b91906200081e565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200035457600080fd5b505af115801562000369573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038f91906200081e565b600680546001600160a01b038086166001600160a01b031992831617909255600780548385169216919091179055306000818152601a60209081526040808320805460ff199081166001908117909255600f54871685528285208054821683179055601054871685528285208054821683179055601154909616845281842080548716821790557f428bdc965569ef4717764ecfd84e88946a9a226b52b813e6ab6a7f46aad86e8880548716821790557f2fcec17b10d207b56bde579aeb215b58d6c4f64a986f1030b316c9e25b6b832b80548716821790557f54a07289f9bcce50727433c3935d341a715f3569b8d80545229402591066e56480548716821790557fbd707750a2b98938e2aa0099e9e123f406bdd7cb1bf478b0cce8748faec1a4e88054871682179055938352601c9182905282208054909416831790935592935091620004e66005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560075482168152601c909352818320805485166001908117909155600f54821684528284208054861682179055601054821684528284208054861682179055601154909116835290822080548416821790557fa48bd8e7b1565515cde2859b6cc48308ba05b5325bcf90fb096b9ac0b8087dfc80548416821790557f6c1aff534cb60d09ff5c1e28020ddf8fa4318882dab0aa0fb74e99b43cee92b380548416821790557f53e29f4943ea19ad4eb51a2fbaba86ac601fb0df301a1aaed418383a145f58d180548416821790557333d4cc8716beb13f814f538ad3b2de3b036f5e2a9091527fbaadbc58e5d54a41b1a9db84b7ad7ea29ee78350642d4eedf2f0e4ddd5cb0e8f805490921617905550620009ea915050565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620006eb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2067656e65726174696f6e20746f20746865207a65726f206164604482015264647265737360d81b606482015260840160405180910390fd5b8060026000828254620006ff919062000850565b90915550506001600160a01b038216600090815260208190526040812080548392906200072e90849062000850565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620007869062000997565b90600052602060002090601f016020900481019282620007aa5760008555620007f5565b82601f10620007c557805160ff1916838001178555620007f5565b82800160010185558215620007f5579182015b82811115620007f5578251825591602001919060010190620007d8565b506200080392915062000807565b5090565b5b8082111562000803576000815560010162000808565b6000602082840312156200083157600080fd5b81516001600160a01b03811681146200084957600080fd5b9392505050565b60008219821115620008665762000866620009d4565b500190565b600181815b80851115620008ac578160001904821115620008905762000890620009d4565b808516156200089e57918102915b93841c939080029062000870565b509250929050565b60006200084960ff841683600082620008d0575060016200096f565b81620008df575060006200096f565b8160018114620008f85760028114620009035762000923565b60019150506200096f565b60ff841115620009175762000917620009d4565b50506001821b6200096f565b5060208310610133831016604e8410600b841016171562000948575081810a6200096f565b6200095483836200086b565b80600019048211156200096b576200096b620009d4565b0290505b92915050565b6000816000190483118215151615620009925762000992620009d4565b500290565b600181811c90821680620009ac57607f821691505b60208210811415620009ce57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b612c1580620009fa6000396000f3fe6080604052600436106103545760003560e01c806375f0a874116101c6578063c5d32bb2116100f7578063edaa116811610095578063f66895a31161006f578063f66895a314610a05578063f887ea4014610a28578063fbe6324e14610a48578063fe575a8714610a6957600080fd5b8063edaa1168146109ab578063ee36e359146109cb578063f2fde38b146109e557600080fd5b8063dd62ed3e116100d1578063dd62ed3e14610905578063deab8aea1461094b578063e1f8fc161461096b578063e517f2b91461098b57600080fd5b8063c5d32bb21461089f578063d2ce0db2146108cf578063d8672e51146108e557600080fd5b806395d89b4111610164578063a8aa1b311161013e578063a8aa1b311461081f578063a9059cbb1461083f578063aacebbe31461085f578063b5c571451461087f57600080fd5b806395d89b41146107ca5780639e252f00146107df578063a457c2d7146107ff57600080fd5b806385141a77116101a057806385141a77146107565780638cd4426d1461076c5780638da5cb5b1461078c5780638ea5220f146107aa57600080fd5b806375f0a874146106de5780637e554d471461071657806381428be11461073657600080fd5b8063355496ca116102a057806362695eae1161023e5780636aa5b37f116102185780636aa5b37f1461063a57806370a0823114610650578063715018a614610686578063728f8eea1461069b57600080fd5b806362695eae146105de578063652e2f041461060e57806366a88d961461062457600080fd5b806342b6fa111161027a57806342b6fa111461055d5780634ada218b1461057d57806359759f611461059e5780635b24ea5e146105be57600080fd5b8063355496ca146104fd578063395093511461051d57806340b28c2f1461053d57600080fd5b80631675d8021161030d57806323b872dd116102e757806323b872dd14610496578063274a533c146104b65780632a642509146104cc578063313ce567146104e157600080fd5b80631675d8021461043d57806318160ddd146104615780631816467f1461047657600080fd5b806304dacd501461036057806306fdde0314610382578063095ea7b3146103ad5780630e375a5c146103dd5780631340538f146103fd57806313f97a8e1461041d57600080fd5b3661035b57005b600080fd5b34801561036c57600080fd5b5061038061037b366004612593565b610a99565b005b34801561038e57600080fd5b50610397610aee565b6040516103a4919061289a565b60405180910390f35b3480156103b957600080fd5b506103cd6103c836600461267c565b610b80565b60405190151581526020016103a4565b3480156103e957600080fd5b506103806103f83660046126a8565b610b97565b34801561040957600080fd5b50610380610418366004612773565b610c2d565b34801561042957600080fd5b506103806104383660046126a8565b610c75565b34801561044957600080fd5b5061045360085481565b6040519081526020016103a4565b34801561046d57600080fd5b50600254610453565b34801561048257600080fd5b50610380610491366004612593565b610d06565b3480156104a257600080fd5b506103cd6104b136600461260d565b610d52565b3480156104c257600080fd5b50610453600c5481565b3480156104d857600080fd5b50610380610e03565b3480156104ed57600080fd5b50604051601281526020016103a4565b34801561050957600080fd5b5061038061051836600461264e565b610ea2565b34801561052957600080fd5b506103cd61053836600461267c565b610ef7565b34801561054957600080fd5b506103806105583660046125d4565b610f2e565b34801561056957600080fd5b50610380610578366004612831565b610f86565b34801561058957600080fd5b506007546103cd90600160b01b900460ff1681565b3480156105aa57600080fd5b506103806105b936600461284a565b610fcc565b3480156105ca57600080fd5b506103806105d936600461264e565b61102c565b3480156105ea57600080fd5b506103cd6105f9366004612593565b601c6020526000908152604090205460ff1681565b34801561061a57600080fd5b50610453600a5481565b34801561063057600080fd5b50610453600b5481565b34801561064657600080fd5b5061045360095481565b34801561065c57600080fd5b5061045361066b366004612593565b6001600160a01b031660009081526020819052604090205490565b34801561069257600080fd5b50610380611081565b3480156106a757600080fd5b506012546013546014546015546106be9392919084565b6040805194855260208501939093529183015260608201526080016103a4565b3480156106ea57600080fd5b50600f546106fe906001600160a01b031681565b6040516001600160a01b0390911681526020016103a4565b34801561072257600080fd5b506103806107313660046127cb565b6110b7565b34801561074257600080fd5b506103806107513660046126a8565b6110ff565b34801561076257600080fd5b506106fe61dead81565b34801561077857600080fd5b5061038061078736600461267c565b611190565b34801561079857600080fd5b506005546001600160a01b03166106fe565b3480156107b657600080fd5b506010546106fe906001600160a01b031681565b3480156107d657600080fd5b50610397611240565b3480156107eb57600080fd5b506103806107fa366004612831565b61124f565b34801561080b57600080fd5b506103cd61081a36600461267c565b6112b7565b34801561082b57600080fd5b506007546106fe906001600160a01b031681565b34801561084b57600080fd5b506103cd61085a36600461267c565b611352565b34801561086b57600080fd5b5061038061087a366004612593565b61135f565b34801561088b57600080fd5b5061038061089a36600461264e565b6113ab565b3480156108ab57600080fd5b506103cd6108ba366004612593565b601a6020526000908152604090205460ff1681565b3480156108db57600080fd5b50610453601f5481565b3480156108f157600080fd5b50610380610900366004612831565b611400565b34801561091157600080fd5b506104536109203660046125d4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561095757600080fd5b506011546106fe906001600160a01b031681565b34801561097757600080fd5b506103806109863660046127cb565b611446565b34801561099757600080fd5b506103806109a63660046127ad565b61148e565b3480156109b757600080fd5b506103806109c6366004612831565b6114da565b3480156109d757600080fd5b50601e546103cd9060ff1681565b3480156109f157600080fd5b50610380610a00366004612593565b611571565b348015610a1157600080fd5b506016546017546018546019546106be9392919084565b348015610a3457600080fd5b506006546106fe906001600160a01b031681565b348015610a5457600080fd5b506007546103cd90600160a81b900460ff1681565b348015610a7557600080fd5b506103cd610a84366004612593565b601b6020526000908152604090205460ff1681565b6005546001600160a01b03163314610acc5760405162461bcd60e51b8152600401610ac3906128ef565b60405180910390fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b606060038054610afd90612b24565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2990612b24565b8015610b765780601f10610b4b57610100808354040283529160200191610b76565b820191906000526020600020905b815481529060010190602001808311610b5957829003601f168201915b5050505050905090565b6000610b8d33848461160c565b5060015b92915050565b6005546001600160a01b03163314610bc15760405162461bcd60e51b8152600401610ac3906128ef565b60005b8251811015610c285781601a6000858481518110610be457610be4612b90565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610c2081612b5f565b915050610bc4565b505050565b6005546001600160a01b03163314610c575760405162461bcd60e51b8152600401610ac3906128ef565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b03163314610c9f5760405162461bcd60e51b8152600401610ac3906128ef565b60005b8251811015610c285781601b6000858481518110610cc257610cc2612b90565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610cfe81612b5f565b915050610ca2565b6005546001600160a01b03163314610d305760405162461bcd60e51b8152600401610ac3906128ef565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610d5f848484611730565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610de45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ac3565b610df88533610df38685612b0d565b61160c565b506001949350505050565b6005546001600160a01b03163314610e2d5760405162461bcd60e51b8152600401610ac3906128ef565b600754600160b01b900460ff1615610e875760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e6700000000000000006044820152606401610ac3565b6007805461ffff60a81b191661010160a81b17905543600c55565b6005546001600160a01b03163314610ecc5760405162461bcd60e51b8152600401610ac3906128ef565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610b8d918590610df39086906129c6565b6005546001600160a01b03163314610f585760405162461bcd60e51b8152600401610ac3906128ef565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b03163314610fb05760405162461bcd60e51b8152600401610ac3906128ef565b610fbc6012600a612a43565b610fc69082612aee565b60085550565b6005546001600160a01b03163314610ff65760405162461bcd60e51b8152600401610ac3906128ef565b6110026012600a612a43565b61100c9083612aee565b60095561101b6012600a612a43565b6110259082612aee565b600a555050565b6005546001600160a01b031633146110565760405162461bcd60e51b8152600401610ac3906128ef565b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146110ab5760405162461bcd60e51b8152600401610ac3906128ef565b6110b56000611e43565b565b6005546001600160a01b031633146110e15760405162461bcd60e51b8152600401610ac3906128ef565b80516016556020810151601755604081015160185560600151601955565b6005546001600160a01b031633146111295760405162461bcd60e51b8152600401610ac3906128ef565b60005b8251811015610c285781601c600085848151811061114c5761114c612b90565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061118881612b5f565b91505061112c565b6005546001600160a01b031633146111ba5760405162461bcd60e51b8152600401610ac3906128ef565b60105460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb90604401602060405180830381600087803b15801561120857600080fd5b505af115801561121c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c289190612790565b606060048054610afd90612b24565b6005546001600160a01b031633146112795760405162461bcd60e51b8152600401610ac3906128ef565b6010546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156112b3573d6000803e3d6000fd5b5050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156113395760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ac3565b6113483385610df38685612b0d565b5060019392505050565b6000610b8d338484611730565b6005546001600160a01b031633146113895760405162461bcd60e51b8152600401610ac3906128ef565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146113d55760405162461bcd60e51b8152600401610ac3906128ef565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461142a5760405162461bcd60e51b8152600401610ac3906128ef565b6114366012600a612a43565b6114409082612aee565b600b5550565b6005546001600160a01b031633146114705760405162461bcd60e51b8152600401610ac3906128ef565b80516012556020810151601355604081015160145560600151601555565b6005546001600160a01b031633146114b85760405162461bcd60e51b8152600401610ac3906128ef565b6114c3816001612aee565b601f5550601e805460ff1916911515919091179055565b6005546001600160a01b031633146115045760405162461bcd60e51b8152600401610ac3906128ef565b600754600160b01b900460ff161561156c5760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b6064820152608401610ac3565b600d55565b6005546001600160a01b0316331461159b5760405162461bcd60e51b8152600401610ac3906128ef565b6001600160a01b0381166116005760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ac3565b61160981611e43565b50565b6001600160a01b03831661166e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ac3565b6001600160a01b0382166116cf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ac3565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116117925760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ac3565b6001600160a01b0383166000908152601b602052604090205460ff161580156117d457506001600160a01b0382166000908152601b602052604090205460ff16155b6118205760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e73000000000000006044820152606401610ac3565b6001600160a01b0383166000908152601a602052604090205460ff1615801561186257506001600160a01b0382166000908152601a602052604090205460ff16155b156118b657600754600160b01b900460ff166118b65760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610ac3565b6007546001600160a01b0384811691161480156118ec57506001600160a01b0382166000908152601a602052604090205460ff16155b80156119025750600754600160a01b900460ff16155b156119d4576009548111156119595760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610ac3565b600b548161197c846001600160a01b031660009081526020819052604090205490565b61198691906129c6565b11156119d45760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610ac3565b6007546001600160a01b03848116911614801590611a0b57506001600160a01b0382166000908152601a602052604090205460ff16155b8015611a3057506001600160a01b0383166000908152601a602052604090205460ff16155b8015611a465750600754600160a01b900460ff16155b15611bbf57600a54811115611a9d5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610ac3565b6007546001600160a01b03838116911614611b2d57600b5481611ad5846001600160a01b031660009081526020819052604090205490565b611adf91906129c6565b1115611b2d5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610ac3565b601e5460ff1615611bbf576001600160a01b0383166000908152601d6020526040812054611b5b9042612b0d565b9050601f54811015611ba25760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b6044820152606401610ac3565b506001600160a01b0383166000908152601d602052604090204290555b6000806000611bef6040518060800160405280600081526020016000815260200160008152602001600081525090565b6001600160a01b0387166000908152601a602052604081205460ff16158015611c3157506001600160a01b0387166000908152601a602052604090205460ff16155b8015611c4b5750600d54600c54611c4891906129c6565b43105b600754909150600160a01b900460ff1680611c7e57506001600160a01b0388166000908152601a602052604090205460ff165b80611ca157506001600160a01b0387166000908152601a602052604090205460ff165b15611caf5760009250611da3565b6007546001600160a01b038881169116148015611cca575080155b15611d2f57601854601954601654601754611ce591906129c6565b611cef91906129c6565b611cf991906129c6565b60408051608081018252601654815260175460208201526018549181019190915260195460608201529095508594509150611da3565b80611d9457601454601554601254601354611d4a91906129c6565b611d5491906129c6565b611d5e91906129c6565b60408051608081018252601254815260135460208201526014549181019190915260155460608201529095508594509150611da3565b8015611da357600e5494508493505b6064611daf8588612aee565b611db991906129de565b600754909350600160a81b900460ff168015611de357506007546001600160a01b03898116911614155b15611df257611df28583611e95565b611e068888611e01868a612b0d565b612045565b8215611e39578415611e395760006064611e208789612aee565b611e2a91906129de565b9050611e37893083612045565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff166112b3576007805460ff60a01b1916600160a01b17905530600090815260208190526040812054905060085481106120335760016008541115611ee457506008545b6000611ef1846002612aee565b9050600081846020015184611f069190612aee565b611f1091906129de565b90506000611f1e8285612b0d565b905047611f2a8261221d565b6000611f368247612b0d565b90506000876020015186611f4a9190612b0d565b611f5490836129de565b90506000886020015182611f689190612aee565b90508015611f7a57611f7a8682612386565b8851600090611f8a846002612aee565b611f949190612aee565b90508015611fb257600f54611fb2906001600160a01b03168261246a565b60608a0151600090611fc5856002612aee565b611fcf9190612aee565b90508015611fed57601054611fed906001600160a01b03168261246a565b60408b0151600090612000866002612aee565b61200a9190612aee565b9050801561202857601154612028906001600160a01b03168261246a565b505050505050505050505b506007805460ff60a01b191690555050565b6001600160a01b0383166120a95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ac3565b6001600160a01b03821661210b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ac3565b6001600160a01b038316600090815260208190526040902054818110156121835760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ac3565b61218d8282612b0d565b6001600160a01b0380861660009081526020819052604080822093909355908516815290812080548492906121c39084906129c6565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161220f91815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061225257612252612b90565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156122a657600080fd5b505afa1580156122ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122de91906125b7565b816001815181106122f1576122f1612b90565b6001600160a01b039283166020918202929092010152600654612317913091168461160c565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612350908590600090869030904290600401612924565b600060405180830381600087803b15801561236a57600080fd5b505af115801561237e573d6000803e3d6000fd5b505050505050565b60065461239e9030906001600160a01b03168461160c565b6006546001600160a01b031663f305d7198230856000806123c76005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561242a57600080fd5b505af115801561243e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612463919061286c565b5050505050565b804710156124ba5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610ac3565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612507576040519150601f19603f3d011682016040523d82523d6000602084013e61250c565b606091505b5050905080610c285760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610ac3565b803561258e81612bd1565b919050565b6000602082840312156125a557600080fd5b81356125b081612bbc565b9392505050565b6000602082840312156125c957600080fd5b81516125b081612bbc565b600080604083850312156125e757600080fd5b82356125f281612bbc565b9150602083013561260281612bbc565b809150509250929050565b60008060006060848603121561262257600080fd5b833561262d81612bbc565b9250602084013561263d81612bbc565b929592945050506040919091013590565b6000806040838503121561266157600080fd5b823561266c81612bbc565b9150602083013561260281612bd1565b6000806040838503121561268f57600080fd5b823561269a81612bbc565b946020939093013593505050565b600080604083850312156126bb57600080fd5b823567ffffffffffffffff808211156126d357600080fd5b818501915085601f8301126126e757600080fd5b81356020828211156126fb576126fb612ba6565b8160051b925061270c818401612995565b8281528181019085830185870184018b101561272757600080fd5b600096505b84871015612756578035955061274186612bbc565b8583526001969096019591830191830161272c565b5096506127669050878201612583565b9450505050509250929050565b60006020828403121561278557600080fd5b81356125b081612bd1565b6000602082840312156127a257600080fd5b81516125b081612bd1565b600080604083850312156127c057600080fd5b823561269a81612bd1565b6000608082840312156127dd57600080fd5b6040516080810181811067ffffffffffffffff8211171561280057612800612ba6565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b60006020828403121561284357600080fd5b5035919050565b6000806040838503121561285d57600080fd5b50508035926020909101359150565b60008060006060848603121561288157600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b818110156128c7578581018301518582016040015282016128ab565b818111156128d9576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129745784516001600160a01b03168352938301939183019160010161294f565b50506001600160a01b03969096166060850152505050608001529392505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156129be576129be612ba6565b604052919050565b600082198211156129d9576129d9612b7a565b500190565b6000826129fb57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115612a3b578160001904821115612a2157612a21612b7a565b80851615612a2e57918102915b93841c9390800290612a05565b509250929050565b60006125b060ff841683600082612a5c57506001610b91565b81612a6957506000610b91565b8160018114612a7f5760028114612a8957612aa5565b6001915050610b91565b60ff841115612a9a57612a9a612b7a565b50506001821b610b91565b5060208310610133831016604e8410600b8410161715612ac8575081810a610b91565b612ad28383612a00565b8060001904821115612ae657612ae6612b7a565b029392505050565b6000816000190483118215151615612b0857612b08612b7a565b500290565b600082821015612b1f57612b1f612b7a565b500390565b600181811c90821680612b3857607f821691505b60208210811415612b5957634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612b7357612b73612b7a565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461160957600080fd5b801515811461160957600080fdfea2646970667358221220b01acb711548f27094a361b4841f1a1ec0b15d5ccb62841833bb1c1d23b8753464736f6c634300080700330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x6080604052600436106103545760003560e01c806375f0a874116101c6578063c5d32bb2116100f7578063edaa116811610095578063f66895a31161006f578063f66895a314610a05578063f887ea4014610a28578063fbe6324e14610a48578063fe575a8714610a6957600080fd5b8063edaa1168146109ab578063ee36e359146109cb578063f2fde38b146109e557600080fd5b8063dd62ed3e116100d1578063dd62ed3e14610905578063deab8aea1461094b578063e1f8fc161461096b578063e517f2b91461098b57600080fd5b8063c5d32bb21461089f578063d2ce0db2146108cf578063d8672e51146108e557600080fd5b806395d89b4111610164578063a8aa1b311161013e578063a8aa1b311461081f578063a9059cbb1461083f578063aacebbe31461085f578063b5c571451461087f57600080fd5b806395d89b41146107ca5780639e252f00146107df578063a457c2d7146107ff57600080fd5b806385141a77116101a057806385141a77146107565780638cd4426d1461076c5780638da5cb5b1461078c5780638ea5220f146107aa57600080fd5b806375f0a874146106de5780637e554d471461071657806381428be11461073657600080fd5b8063355496ca116102a057806362695eae1161023e5780636aa5b37f116102185780636aa5b37f1461063a57806370a0823114610650578063715018a614610686578063728f8eea1461069b57600080fd5b806362695eae146105de578063652e2f041461060e57806366a88d961461062457600080fd5b806342b6fa111161027a57806342b6fa111461055d5780634ada218b1461057d57806359759f611461059e5780635b24ea5e146105be57600080fd5b8063355496ca146104fd578063395093511461051d57806340b28c2f1461053d57600080fd5b80631675d8021161030d57806323b872dd116102e757806323b872dd14610496578063274a533c146104b65780632a642509146104cc578063313ce567146104e157600080fd5b80631675d8021461043d57806318160ddd146104615780631816467f1461047657600080fd5b806304dacd501461036057806306fdde0314610382578063095ea7b3146103ad5780630e375a5c146103dd5780631340538f146103fd57806313f97a8e1461041d57600080fd5b3661035b57005b600080fd5b34801561036c57600080fd5b5061038061037b366004612593565b610a99565b005b34801561038e57600080fd5b50610397610aee565b6040516103a4919061289a565b60405180910390f35b3480156103b957600080fd5b506103cd6103c836600461267c565b610b80565b60405190151581526020016103a4565b3480156103e957600080fd5b506103806103f83660046126a8565b610b97565b34801561040957600080fd5b50610380610418366004612773565b610c2d565b34801561042957600080fd5b506103806104383660046126a8565b610c75565b34801561044957600080fd5b5061045360085481565b6040519081526020016103a4565b34801561046d57600080fd5b50600254610453565b34801561048257600080fd5b50610380610491366004612593565b610d06565b3480156104a257600080fd5b506103cd6104b136600461260d565b610d52565b3480156104c257600080fd5b50610453600c5481565b3480156104d857600080fd5b50610380610e03565b3480156104ed57600080fd5b50604051601281526020016103a4565b34801561050957600080fd5b5061038061051836600461264e565b610ea2565b34801561052957600080fd5b506103cd61053836600461267c565b610ef7565b34801561054957600080fd5b506103806105583660046125d4565b610f2e565b34801561056957600080fd5b50610380610578366004612831565b610f86565b34801561058957600080fd5b506007546103cd90600160b01b900460ff1681565b3480156105aa57600080fd5b506103806105b936600461284a565b610fcc565b3480156105ca57600080fd5b506103806105d936600461264e565b61102c565b3480156105ea57600080fd5b506103cd6105f9366004612593565b601c6020526000908152604090205460ff1681565b34801561061a57600080fd5b50610453600a5481565b34801561063057600080fd5b50610453600b5481565b34801561064657600080fd5b5061045360095481565b34801561065c57600080fd5b5061045361066b366004612593565b6001600160a01b031660009081526020819052604090205490565b34801561069257600080fd5b50610380611081565b3480156106a757600080fd5b506012546013546014546015546106be9392919084565b6040805194855260208501939093529183015260608201526080016103a4565b3480156106ea57600080fd5b50600f546106fe906001600160a01b031681565b6040516001600160a01b0390911681526020016103a4565b34801561072257600080fd5b506103806107313660046127cb565b6110b7565b34801561074257600080fd5b506103806107513660046126a8565b6110ff565b34801561076257600080fd5b506106fe61dead81565b34801561077857600080fd5b5061038061078736600461267c565b611190565b34801561079857600080fd5b506005546001600160a01b03166106fe565b3480156107b657600080fd5b506010546106fe906001600160a01b031681565b3480156107d657600080fd5b50610397611240565b3480156107eb57600080fd5b506103806107fa366004612831565b61124f565b34801561080b57600080fd5b506103cd61081a36600461267c565b6112b7565b34801561082b57600080fd5b506007546106fe906001600160a01b031681565b34801561084b57600080fd5b506103cd61085a36600461267c565b611352565b34801561086b57600080fd5b5061038061087a366004612593565b61135f565b34801561088b57600080fd5b5061038061089a36600461264e565b6113ab565b3480156108ab57600080fd5b506103cd6108ba366004612593565b601a6020526000908152604090205460ff1681565b3480156108db57600080fd5b50610453601f5481565b3480156108f157600080fd5b50610380610900366004612831565b611400565b34801561091157600080fd5b506104536109203660046125d4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561095757600080fd5b506011546106fe906001600160a01b031681565b34801561097757600080fd5b506103806109863660046127cb565b611446565b34801561099757600080fd5b506103806109a63660046127ad565b61148e565b3480156109b757600080fd5b506103806109c6366004612831565b6114da565b3480156109d757600080fd5b50601e546103cd9060ff1681565b3480156109f157600080fd5b50610380610a00366004612593565b611571565b348015610a1157600080fd5b506016546017546018546019546106be9392919084565b348015610a3457600080fd5b506006546106fe906001600160a01b031681565b348015610a5457600080fd5b506007546103cd90600160a81b900460ff1681565b348015610a7557600080fd5b506103cd610a84366004612593565b601b6020526000908152604090205460ff1681565b6005546001600160a01b03163314610acc5760405162461bcd60e51b8152600401610ac3906128ef565b60405180910390fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b606060038054610afd90612b24565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2990612b24565b8015610b765780601f10610b4b57610100808354040283529160200191610b76565b820191906000526020600020905b815481529060010190602001808311610b5957829003601f168201915b5050505050905090565b6000610b8d33848461160c565b5060015b92915050565b6005546001600160a01b03163314610bc15760405162461bcd60e51b8152600401610ac3906128ef565b60005b8251811015610c285781601a6000858481518110610be457610be4612b90565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610c2081612b5f565b915050610bc4565b505050565b6005546001600160a01b03163314610c575760405162461bcd60e51b8152600401610ac3906128ef565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b03163314610c9f5760405162461bcd60e51b8152600401610ac3906128ef565b60005b8251811015610c285781601b6000858481518110610cc257610cc2612b90565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610cfe81612b5f565b915050610ca2565b6005546001600160a01b03163314610d305760405162461bcd60e51b8152600401610ac3906128ef565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610d5f848484611730565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610de45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ac3565b610df88533610df38685612b0d565b61160c565b506001949350505050565b6005546001600160a01b03163314610e2d5760405162461bcd60e51b8152600401610ac3906128ef565b600754600160b01b900460ff1615610e875760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e6700000000000000006044820152606401610ac3565b6007805461ffff60a81b191661010160a81b17905543600c55565b6005546001600160a01b03163314610ecc5760405162461bcd60e51b8152600401610ac3906128ef565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610b8d918590610df39086906129c6565b6005546001600160a01b03163314610f585760405162461bcd60e51b8152600401610ac3906128ef565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b03163314610fb05760405162461bcd60e51b8152600401610ac3906128ef565b610fbc6012600a612a43565b610fc69082612aee565b60085550565b6005546001600160a01b03163314610ff65760405162461bcd60e51b8152600401610ac3906128ef565b6110026012600a612a43565b61100c9083612aee565b60095561101b6012600a612a43565b6110259082612aee565b600a555050565b6005546001600160a01b031633146110565760405162461bcd60e51b8152600401610ac3906128ef565b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146110ab5760405162461bcd60e51b8152600401610ac3906128ef565b6110b56000611e43565b565b6005546001600160a01b031633146110e15760405162461bcd60e51b8152600401610ac3906128ef565b80516016556020810151601755604081015160185560600151601955565b6005546001600160a01b031633146111295760405162461bcd60e51b8152600401610ac3906128ef565b60005b8251811015610c285781601c600085848151811061114c5761114c612b90565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061118881612b5f565b91505061112c565b6005546001600160a01b031633146111ba5760405162461bcd60e51b8152600401610ac3906128ef565b60105460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb90604401602060405180830381600087803b15801561120857600080fd5b505af115801561121c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c289190612790565b606060048054610afd90612b24565b6005546001600160a01b031633146112795760405162461bcd60e51b8152600401610ac3906128ef565b6010546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156112b3573d6000803e3d6000fd5b5050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156113395760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ac3565b6113483385610df38685612b0d565b5060019392505050565b6000610b8d338484611730565b6005546001600160a01b031633146113895760405162461bcd60e51b8152600401610ac3906128ef565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146113d55760405162461bcd60e51b8152600401610ac3906128ef565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461142a5760405162461bcd60e51b8152600401610ac3906128ef565b6114366012600a612a43565b6114409082612aee565b600b5550565b6005546001600160a01b031633146114705760405162461bcd60e51b8152600401610ac3906128ef565b80516012556020810151601355604081015160145560600151601555565b6005546001600160a01b031633146114b85760405162461bcd60e51b8152600401610ac3906128ef565b6114c3816001612aee565b601f5550601e805460ff1916911515919091179055565b6005546001600160a01b031633146115045760405162461bcd60e51b8152600401610ac3906128ef565b600754600160b01b900460ff161561156c5760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b6064820152608401610ac3565b600d55565b6005546001600160a01b0316331461159b5760405162461bcd60e51b8152600401610ac3906128ef565b6001600160a01b0381166116005760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ac3565b61160981611e43565b50565b6001600160a01b03831661166e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ac3565b6001600160a01b0382166116cf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ac3565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116117925760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ac3565b6001600160a01b0383166000908152601b602052604090205460ff161580156117d457506001600160a01b0382166000908152601b602052604090205460ff16155b6118205760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e73000000000000006044820152606401610ac3565b6001600160a01b0383166000908152601a602052604090205460ff1615801561186257506001600160a01b0382166000908152601a602052604090205460ff16155b156118b657600754600160b01b900460ff166118b65760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610ac3565b6007546001600160a01b0384811691161480156118ec57506001600160a01b0382166000908152601a602052604090205460ff16155b80156119025750600754600160a01b900460ff16155b156119d4576009548111156119595760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610ac3565b600b548161197c846001600160a01b031660009081526020819052604090205490565b61198691906129c6565b11156119d45760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610ac3565b6007546001600160a01b03848116911614801590611a0b57506001600160a01b0382166000908152601a602052604090205460ff16155b8015611a3057506001600160a01b0383166000908152601a602052604090205460ff16155b8015611a465750600754600160a01b900460ff16155b15611bbf57600a54811115611a9d5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610ac3565b6007546001600160a01b03838116911614611b2d57600b5481611ad5846001600160a01b031660009081526020819052604090205490565b611adf91906129c6565b1115611b2d5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610ac3565b601e5460ff1615611bbf576001600160a01b0383166000908152601d6020526040812054611b5b9042612b0d565b9050601f54811015611ba25760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b6044820152606401610ac3565b506001600160a01b0383166000908152601d602052604090204290555b6000806000611bef6040518060800160405280600081526020016000815260200160008152602001600081525090565b6001600160a01b0387166000908152601a602052604081205460ff16158015611c3157506001600160a01b0387166000908152601a602052604090205460ff16155b8015611c4b5750600d54600c54611c4891906129c6565b43105b600754909150600160a01b900460ff1680611c7e57506001600160a01b0388166000908152601a602052604090205460ff165b80611ca157506001600160a01b0387166000908152601a602052604090205460ff165b15611caf5760009250611da3565b6007546001600160a01b038881169116148015611cca575080155b15611d2f57601854601954601654601754611ce591906129c6565b611cef91906129c6565b611cf991906129c6565b60408051608081018252601654815260175460208201526018549181019190915260195460608201529095508594509150611da3565b80611d9457601454601554601254601354611d4a91906129c6565b611d5491906129c6565b611d5e91906129c6565b60408051608081018252601254815260135460208201526014549181019190915260155460608201529095508594509150611da3565b8015611da357600e5494508493505b6064611daf8588612aee565b611db991906129de565b600754909350600160a81b900460ff168015611de357506007546001600160a01b03898116911614155b15611df257611df28583611e95565b611e068888611e01868a612b0d565b612045565b8215611e39578415611e395760006064611e208789612aee565b611e2a91906129de565b9050611e37893083612045565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff166112b3576007805460ff60a01b1916600160a01b17905530600090815260208190526040812054905060085481106120335760016008541115611ee457506008545b6000611ef1846002612aee565b9050600081846020015184611f069190612aee565b611f1091906129de565b90506000611f1e8285612b0d565b905047611f2a8261221d565b6000611f368247612b0d565b90506000876020015186611f4a9190612b0d565b611f5490836129de565b90506000886020015182611f689190612aee565b90508015611f7a57611f7a8682612386565b8851600090611f8a846002612aee565b611f949190612aee565b90508015611fb257600f54611fb2906001600160a01b03168261246a565b60608a0151600090611fc5856002612aee565b611fcf9190612aee565b90508015611fed57601054611fed906001600160a01b03168261246a565b60408b0151600090612000866002612aee565b61200a9190612aee565b9050801561202857601154612028906001600160a01b03168261246a565b505050505050505050505b506007805460ff60a01b191690555050565b6001600160a01b0383166120a95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ac3565b6001600160a01b03821661210b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ac3565b6001600160a01b038316600090815260208190526040902054818110156121835760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ac3565b61218d8282612b0d565b6001600160a01b0380861660009081526020819052604080822093909355908516815290812080548492906121c39084906129c6565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161220f91815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061225257612252612b90565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156122a657600080fd5b505afa1580156122ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122de91906125b7565b816001815181106122f1576122f1612b90565b6001600160a01b039283166020918202929092010152600654612317913091168461160c565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612350908590600090869030904290600401612924565b600060405180830381600087803b15801561236a57600080fd5b505af115801561237e573d6000803e3d6000fd5b505050505050565b60065461239e9030906001600160a01b03168461160c565b6006546001600160a01b031663f305d7198230856000806123c76005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561242a57600080fd5b505af115801561243e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612463919061286c565b5050505050565b804710156124ba5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610ac3565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612507576040519150601f19603f3d011682016040523d82523d6000602084013e61250c565b606091505b5050905080610c285760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610ac3565b803561258e81612bd1565b919050565b6000602082840312156125a557600080fd5b81356125b081612bbc565b9392505050565b6000602082840312156125c957600080fd5b81516125b081612bbc565b600080604083850312156125e757600080fd5b82356125f281612bbc565b9150602083013561260281612bbc565b809150509250929050565b60008060006060848603121561262257600080fd5b833561262d81612bbc565b9250602084013561263d81612bbc565b929592945050506040919091013590565b6000806040838503121561266157600080fd5b823561266c81612bbc565b9150602083013561260281612bd1565b6000806040838503121561268f57600080fd5b823561269a81612bbc565b946020939093013593505050565b600080604083850312156126bb57600080fd5b823567ffffffffffffffff808211156126d357600080fd5b818501915085601f8301126126e757600080fd5b81356020828211156126fb576126fb612ba6565b8160051b925061270c818401612995565b8281528181019085830185870184018b101561272757600080fd5b600096505b84871015612756578035955061274186612bbc565b8583526001969096019591830191830161272c565b5096506127669050878201612583565b9450505050509250929050565b60006020828403121561278557600080fd5b81356125b081612bd1565b6000602082840312156127a257600080fd5b81516125b081612bd1565b600080604083850312156127c057600080fd5b823561269a81612bd1565b6000608082840312156127dd57600080fd5b6040516080810181811067ffffffffffffffff8211171561280057612800612ba6565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b60006020828403121561284357600080fd5b5035919050565b6000806040838503121561285d57600080fd5b50508035926020909101359150565b60008060006060848603121561288157600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b818110156128c7578581018301518582016040015282016128ab565b818111156128d9576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129745784516001600160a01b03168352938301939183019160010161294f565b50506001600160a01b03969096166060850152505050608001529392505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156129be576129be612ba6565b604052919050565b600082198211156129d9576129d9612b7a565b500190565b6000826129fb57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115612a3b578160001904821115612a2157612a21612b7a565b80851615612a2e57918102915b93841c9390800290612a05565b509250929050565b60006125b060ff841683600082612a5c57506001610b91565b81612a6957506000610b91565b8160018114612a7f5760028114612a8957612aa5565b6001915050610b91565b60ff841115612a9a57612a9a612b7a565b50506001821b610b91565b5060208310610133831016604e8410600b8410161715612ac8575081810a610b91565b612ad28383612a00565b8060001904821115612ae657612ae6612b7a565b029392505050565b6000816000190483118215151615612b0857612b08612b7a565b500290565b600082821015612b1f57612b1f612b7a565b500390565b600181811c90821680612b3857607f821691505b60208210811415612b5957634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612b7357612b73612b7a565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461160957600080fd5b801515811461160957600080fdfea2646970667358221220b01acb711548f27094a361b4841f1a1ec0b15d5ccb62841833bb1c1d23b8753464736f6c63430008070033

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:13949:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25579:111;;;;;;;;;;-1:-1:-1;25579:111:0;;;;;:::i;:::-;;:::i;:::-;;2377:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16675:161;;;;;;;;;;-1:-1:-1;16675:161:0;;;;;:::i;:::-;;:::i;:::-;;;6996:14:1;;6989:22;6971:41;;6959:2;6944:18;16675:161:0;6831:187:1;26699:202:0;;;;;;;;;;-1:-1:-1;26699:202:0;;;;;:::i;:::-;;:::i;24146:152::-;;;;;;;;;;-1:-1:-1;24146:152:0;;;;;:::i;:::-;;:::i;25993:210::-;;;;;;;;;;-1:-1:-1;25993:210:0;;;;;:::i;:::-;;:::i;13875:59::-;;;;;;;;;;;;;;;;;;;15681:25:1;;;15669:2;15654:18;13875:59:0;15535:177:1;3497:108:0;;;;;;;;;;-1:-1:-1;3585:12:0;;3497:108;;25468:103;;;;;;;;;;-1:-1:-1;25468:103:0;;;;;:::i;:::-;;:::i;16844:448::-;;;;;;;;;;-1:-1:-1;16844:448:0;;;;;:::i;:::-;;:::i;14112:28::-;;;;;;;;;;;;;;;;24882:270;;;;;;;;;;;;;:::i;3339:93::-;;;;;;;;;;-1:-1:-1;3339:93:0;;3422:2;17240:36:1;;17228:2;17213:18;3339:93:0;17098:184:1;26571:120:0;;;;;;;;;;-1:-1:-1;26571:120:0;;;;;:::i;:::-;;:::i;17300:248::-;;;;;;;;;;-1:-1:-1;17300:248:0;;;;;:::i;:::-;;:::i;24719:155::-;;;;;;;;;;-1:-1:-1;24719:155:0;;;;;:::i;:::-;;:::i;24306:177::-;;;;;;;;;;-1:-1:-1;24306:177:0;;;;;:::i;:::-;;:::i;13832:34::-;;;;;;;;;;-1:-1:-1;13832:34:0;;;;-1:-1:-1;;;13832:34:0;;;;;;26909:184;;;;;;;;;;-1:-1:-1;26909:184:0;;;;;:::i;:::-;;:::i;25859:126::-;;;;;;;;;;-1:-1:-1;25859:126:0;;;;;:::i;:::-;;:::i;14877:47::-;;;;;;;;;;-1:-1:-1;14877:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13996:49;;;;;;;;;;;;;;;;14052:51;;;;;;;;;;;;;;;;13941:48;;;;;;;;;;;;;;;;3668:127;;;;;;;;;;-1:-1:-1;3668:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3769:18:0;3742:7;3769:18;;;;;;;;;;;;3668:127;12264:94;;;;;;;;;;;;;:::i;14681:38::-;;;;;;;;;;-1:-1:-1;14681:38:0;;;;;;;;;;;;;;;;;;;16933:25:1;;;16989:2;16974:18;;16967:34;;;;17017:18;;;17010:34;17075:2;17060:18;;17053:34;16920:3;16905:19;14681:38:0;16702:391:1;14221:75:0;;;;;;;;;;-1:-1:-1;14221:75:0;;;;-1:-1:-1;;;;;14221:75:0;;;;;;-1:-1:-1;;;;;5896:32:1;;;5878:51;;5866:2;5851:18;14221:75:0;5732:203:1;24597:114:0;;;;;;;;;;-1:-1:-1;24597:114:0;;;;;:::i;:::-;;:::i;26349:214::-;;;;;;;;;;-1:-1:-1;26349:214:0;;;;;:::i;:::-;;:::i;14460:79::-;;;;;;;;;;;;14497:42;14460:79;;27355:137;;;;;;;;;;-1:-1:-1;27355: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;;;2596:104;;;;;;;;;;;;;:::i;27233:114::-;;;;;;;;;;-1:-1:-1;27233:114:0;;;;;:::i;:::-;;:::i;17556:410::-;;;;;;;;;;-1:-1:-1;17556:410:0;;;;;:::i;:::-;;:::i;13716:19::-;;;;;;;;;;-1:-1:-1;13716:19:0;;;;-1:-1:-1;;;;;13716:19:0;;;17974:165;;;;;;;;;;-1:-1:-1;17974:165:0;;;;;:::i;:::-;;:::i;25345:115::-;;;;;;;;;;-1:-1:-1;25345:115:0;;;;;:::i;:::-;;:::i;26211:130::-;;;;;;;;;;-1:-1:-1;26211:130:0;;;;;:::i;:::-;;:::i;14777:41::-;;;;;;;;;;-1:-1:-1;14777:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15044:40;;;;;;;;;;;;;;;;27101:124;;;;;;;;;;-1:-1:-1;27101: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;14379:73;;;;;;;;;;-1:-1:-1;14379:73:0;;;;-1:-1:-1;;;;;14379:73:0;;;24491:98;;;;;;;;;;-1:-1:-1;24491:98:0;;;;;:::i;:::-;;:::i;25698:153::-;;;;;;;;;;-1:-1:-1;25698:153:0;;;;;:::i;:::-;;:::i;25160:177::-;;;;;;;;;;-1:-1:-1;25160:177:0;;;;;:::i;:::-;;:::i;15002:35::-;;;;;;;;;;-1:-1:-1;15002:35:0;;;;;;;;12366:192;;;;;;;;;;-1:-1:-1;12366:192:0;;;;;:::i;:::-;;:::i;14726:42::-;;;;;;;;;;-1:-1:-1;14726:42:0;;;;;;;;;;;;;;;13688:21;;;;;;;;;;-1:-1:-1;13688:21:0;;;;-1:-1:-1;;;;;13688:21:0;;;13787:38;;;;;;;;;;-1:-1:-1;13787:38:0;;;;-1:-1:-1;;;13787:38:0;;;;;;14825:45;;;;;;;;;;-1:-1:-1;14825:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;25579:111;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;;;;;;;;;25657:13:::1;:25:::0;;-1:-1:-1;;;;;;25657:25:0::1;-1:-1:-1::0;;;;;25657:25:0;;;::::1;::::0;;;::::1;::::0;;25579:111::o;2377:100::-;2431:13;2464:5;2457:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2377:100;:::o;16675:161::-;16750:4;16767:39;179:10;16790:7;16799:6;16767:8;:39::i;:::-;-1:-1:-1;16824:4:0;16675:161;;;;;:::o;26699:202::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;26796:9:::1;26791:103;26815:8;:15;26811:1;:19;26791:103;;;26877:5;26852:9;:22;26862:8;26871:1;26862:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;26852:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;26852:22:0;:30;;-1:-1:-1;;26852:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26832:3;::::1;::::0;::::1;:::i;:::-;;;;26791:103;;;;26699:202:::0;;:::o;24146:152::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;24264:18:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;24264:26:0::1;-1:-1:-1::0;;;;24264:26:0;;::::1;::::0;;;::::1;::::0;;24146:152::o;25993:210::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;26094:9:::1;26089:107;26113:8;:15;26109:1;:19;26089:107;;;26179:5;26150:13;:26;26164:8;26173:1;26164:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;26150:26:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;26150:26:0;:34;;-1:-1:-1;;26150:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26130:3;::::1;::::0;::::1;:::i;:::-;;;;26089:107;;25468:103:::0;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;25542:9:::1;:21:::0;;-1:-1:-1;;;;;;25542:21:0::1;-1:-1:-1::0;;;;;25542:21:0;;;::::1;::::0;;;::::1;::::0;;25468:103::o;16844:448::-;16976:4;16993:36;17003:6;17011:9;17022:6;16993:9;:36::i;:::-;-1:-1:-1;;;;;17069:19:0;;17042:24;17069:19;;;:11;:19;;;;;;;;179:10;17069:33;;;;;;;;17121:26;;;;17113:79;;;;-1:-1:-1;;;17113:79:0;;11934:2:1;17113:79:0;;;11916:21:1;11973:2;11953:18;;;11946:30;12012:34;11992:18;;;11985:62;-1:-1:-1;;;12063:18:1;;;12056:38;12111:19;;17113:79:0;11732:404:1;17113:79:0;17203:57;17212:6;179:10;17234:25;17253:6;17234:16;:25;:::i;:::-;17203:8;:57::i;:::-;-1:-1:-1;17280:4:0;;16844:448;-1:-1:-1;;;;16844:448:0:o;24882:270::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;24953:14:::1;::::0;-1:-1:-1;;;24953:14:0;::::1;;;24952:15;24944:52;;;::::0;-1:-1:-1;;;24944:52:0;;11175:2:1;24944:52:0::1;::::0;::::1;11157:21:1::0;11214:2;11194:18;;;11187:30;11253:26;11233:18;;;11226:54;11297:18;;24944:52:0::1;10973:348:1::0;24944:52:0::1;25048:14;:21:::0;;-1:-1:-1;;;;25080:25:0;-1:-1:-1;;;25080:25:0;;;25132:12:::1;25116:13;:28:::0;24882:270::o;26571: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;;;;;26656:19:0;;;::::1;;::::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;26656:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26571:120::o;17300:248::-;179:10;17416:4;17470:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;17470:34:0;;;;;;;;;;17416:4;;17438:80;;17461:7;;17470:47;;17507:10;;17470:47;:::i;24719:155::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;24814:6:::1;:27:::0;;-1:-1:-1;;;;;24814:27:0;;::::1;-1:-1:-1::0;;;;;;24814:27:0;;::::1;;::::0;;;24852:4:::1;:14:::0;;;;;::::1;::::0;::::1;;::::0;;24719:155::o;24306:177::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;24461:14:::1;3422:2:::0;24461::::1;:14;:::i;:::-;24448:27;::::0;:10;:27:::1;:::i;:::-;24422:23;:53:::0;-1:-1:-1;24306:177:0:o;26909:184::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;27021:14:::1;3422:2:::0;27021::::1;:14;:::i;:::-;27012:23;::::0;:6;:23:::1;:::i;:::-;26998:11;:37:::0;27071:14:::1;3422:2:::0;27071::::1;:14;:::i;:::-;27061:24;::::0;:7;:24:::1;:::i;:::-;27046:12;:39:::0;-1:-1:-1;;26909:184:0:o;25859: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;;;;;25947:22:0;;;::::1;;::::0;;;:13:::1;:22;::::0;;;;:30;;-1:-1:-1;;25947:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25859:126::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;24597:114::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;24679:24;;:9:::1;:24:::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;;::::0;;;24597:114::o;26349:214::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;26452:9:::1;26447:109;26471:8;:15;26467:1;:19;26447:109;;;26539:5;26508:15;:28;26524:8;26533:1;26524:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;26508:28:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;26508:28:0;:36;;-1:-1:-1;;26508:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26488:3;::::1;::::0;::::1;:::i;:::-;;;;26447:109;;27355:137:::0;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;27466:9:::1;::::0;27440:44:::1;::::0;-1:-1:-1;;;27440:44:0;;-1:-1:-1;;;;;27466:9:0;;::::1;27440:44;::::0;::::1;6114:51:1::0;6181:18;;;6174:34;;;27440:25:0;;::::1;::::0;::::1;::::0;6087:18:1;;27440:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2596:104::-:0;2652:13;2685:7;2678:14;;;;;:::i;27233:114::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;27309:9:::1;::::0;27301:38:::1;::::0;-1:-1:-1;;;;;27309:9:0;;::::1;::::0;27301:38;::::1;;;::::0;27329:9;;27309::::1;27301:38:::0;27309:9;27301:38;27329:9;27309;27301:38;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;27233:114:::0;:::o;17556:410::-;179:10;17677:4;17726:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;17726:34:0;;;;;;;;;;17779:35;;;;17771:85;;;;-1:-1:-1;;;17771:85:0;;15331:2:1;17771:85:0;;;15313:21:1;15370:2;15350:18;;;15343:30;15409:34;15389:18;;;15382:62;-1:-1:-1;;;15460:18:1;;;15453:35;15505:19;;17771:85:0;15129:401:1;17771:85:0;17867:67;179:10;17890:7;17899:34;17918:15;17899:16;:34;:::i;17867:67::-;-1:-1:-1;17954:4:0;;17556:410;-1:-1:-1;;;17556:410:0:o;17974:165::-;18052:4;18069:40;18079:10;18091:9;18102:6;18069:9;:40::i;25345:115::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;25425:15:::1;:27:::0;;-1:-1:-1;;;;;;25425:27:0::1;-1:-1:-1::0;;;;;25425:27:0;;;::::1;::::0;;;::::1;::::0;;25345:115::o;26211: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;;;;;26301:24:0;;;::::1;;::::0;;;:15:::1;:24;::::0;;;;:32;;-1:-1:-1;;26301:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26211:130::o;27101:124::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;27203:14:::1;3422:2:::0;27203::::1;:14;:::i;:::-;27194:23;::::0;:6;:23:::1;:::i;:::-;27177:14;:40:::0;-1:-1:-1;27101:124:0:o;24491:98::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;24565:16;;:5:::1;:16:::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;;::::0;;;24491:98::o;25698:153::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;25793:16:::1;:4:::0;25800:9:::1;25793:16;:::i;:::-;25778:12;:31:::0;-1:-1:-1;25820:15:0::1;:23:::0;;-1:-1:-1;;25820:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25698:153::o;25160:177::-;12114:6;;-1:-1:-1;;;;;12114:6:0;179:10;12176:23;12168:68;;;;-1:-1:-1;;;12168:68:0;;;;;;;:::i;:::-;25242:14:::1;::::0;-1:-1:-1;;;25242:14:0;::::1;;;25241:15;25233:65;;;::::0;-1:-1:-1;;;25233:65:0;;11528:2:1;25233:65:0::1;::::0;::::1;11510:21:1::0;11567:2;11547:18;;;11540:30;11606:34;11586:18;;;11579:62;-1:-1:-1;;;11657:18:1;;;11650:35;11702:19;;25233:65:0::1;11326:401:1::0;25233:65:0::1;25309:8;:20:::0;25160:177::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;;8812:2:1;12447:73:0::1;::::0;::::1;8794:21:1::0;8851:2;8831:18;;;8824:30;8890:34;8870:18;;;8863:62;-1:-1:-1;;;8941:18:1;;;8934:36;8987:19;;12447:73:0::1;8610: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;;14567:2:1;10468:68:0;;;14549:21:1;14606:2;14586:18;;;14579:30;14645:34;14625:18;;;14618:62;-1:-1:-1;;;14696:18:1;;;14689:34;14740:19;;10468:68:0;14365:400:1;10468:68:0;-1:-1:-1;;;;;10555:21:0;;10547:68;;;;-1:-1:-1;;;10547:68:0;;9219:2:1;10547:68:0;;;9201:21:1;9258:2;9238:18;;;9231:30;9297:34;9277:18;;;9270:62;-1:-1:-1;;;9348:18:1;;;9341:32;9390:19;;10547:68:0;9017:398:1;10547:68:0;-1:-1:-1;;;;;10628:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10680:32;;15681:25:1;;;10680:32:0;;15654:18:1;10680:32:0;;;;;;;10340:380;;;:::o;18147:3208::-;18297:1;18288:6;:10;18280:64;;;;-1:-1:-1;;;18280:64:0;;12704:2:1;18280:64:0;;;12686:21:1;12743:2;12723:18;;;12716:30;12782:34;12762:18;;;12755:62;-1:-1:-1;;;12833:18:1;;;12826:39;12882:19;;18280:64:0;12502:405:1;18280:64:0;-1:-1:-1;;;;;18378:21:0;;;;;;:13;:21;;;;;;;;18377:22;:51;;;;-1:-1:-1;;;;;;18404:24:0;;;;;;:13;:24;;;;;;;;18403:25;18377:51;18355:126;;;;-1:-1:-1;;;18355:126:0;;13807:2:1;18355:126:0;;;13789:21:1;13846:2;13826:18;;;13819:30;13885:27;13865:18;;;13858:55;13930:18;;18355:126:0;13605:349:1;18355:126:0;-1:-1:-1;;;;;18499:17:0;;;;;;:9;:17;;;;;;;;18498:18;:43;;;;-1:-1:-1;;;;;;18521:20:0;;;;;;:9;:20;;;;;;;;18520:21;18498:43;18494:122;;;18566:14;;-1:-1:-1;;;18566:14:0;;;;18558:46;;;;-1:-1:-1;;;18558:46:0;;13114:2:1;18558:46:0;;;13096:21:1;13153:2;13133:18;;;13126:30;-1:-1:-1;;;13172:18:1;;;13165:49;13231:18;;18558:46:0;12912:343:1;18558:46:0;18642:4;;-1:-1:-1;;;;;18632:14:0;;;18642:4;;18632:14;:39;;;;-1:-1:-1;;;;;;18651:20:0;;;;;;:9;:20;;;;;;;;18650:21;18632:39;:59;;;;-1:-1:-1;18676:15:0;;-1:-1:-1;;;18676:15:0;;;;18675:16;18632:59;18628:311;;;18726:11;;18716:6;:21;;18708:63;;;;-1:-1:-1;;;18708:63:0;;8454:2:1;18708:63:0;;;8436:21:1;8493:2;8473:18;;;8466:30;8532:31;8512:18;;;8505:59;8581:18;;18708:63:0;8252:353:1;18708:63:0;18845:14;;18835:6;18812:20;18822:9;-1:-1:-1;;;;;3769:18:0;3742:7;3769:18;;;;;;;;;;;;3668:127;18812:20;:29;;;;:::i;:::-;:47;;18786:141;;;;-1:-1:-1;;;18786:141:0;;10029:2:1;18786:141:0;;;10011:21:1;;;10048:18;;;10041:30;10107:34;10087:18;;;10080:62;10159:18;;18786:141:0;9827:356:1;18786:141:0;18979:4;;-1:-1:-1;;;;;18969:14:0;;;18979:4;;18969:14;;;;:39;;-1:-1:-1;;;;;;18988:20:0;;;;;;:9;:20;;;;;;;;18987:21;18969:39;:61;;;;-1:-1:-1;;;;;;19013:17:0;;;;;;:9;:17;;;;;;;;19012:18;18969:61;:81;;;;-1:-1:-1;19035:15:0;;-1:-1:-1;;;19035:15:0;;;;19034:16;18969:81;18951:682;;;19095:12;;19085:6;:22;;19077:65;;;;-1:-1:-1;;;19077:65:0;;14972:2:1;19077:65:0;;;14954:21:1;15011:2;14991:18;;;14984:30;15050:32;15030:18;;;15023:60;15100:18;;19077:65:0;14770:354:1;19077:65:0;19174:4;;-1:-1:-1;;;;;19161:17:0;;;19174:4;;19161:17;19157:211;;19262:14;;19252:6;19229:20;19239:9;-1:-1:-1;;;;;3769:18:0;3742:7;3769:18;;;;;;;;;;;;3668:127;19229:20;:29;;;;:::i;:::-;:47;;19199:153;;;;-1:-1:-1;;;19199:153:0;;10029:2:1;19199:153:0;;;10011:21:1;;;10048:18;;;10041:30;10107:34;10087:18;;;10080:62;10159:18;;19199:153:0;9827:356:1;19199:153:0;19386:15;;;;19382:240;;;-1:-1:-1;;;;;19461:17:0;;19422:18;19461:17;;;:9;:17;;;;;;19443:35;;:15;:35;:::i;:::-;19422:56;;19519:12;;19505:10;:26;;19497:55;;;;-1:-1:-1;;;19497:55:0;;13462:2:1;19497:55:0;;;13444:21:1;13501:2;13481:18;;;13474:30;-1:-1:-1;;;13520:18:1;;;13513:46;13576:18;;19497:55:0;13260:340:1;19497:55:0;-1:-1:-1;;;;;;19571:17:0;;;;;;:9;:17;;;;;19591:15;19571:35;;19382:240;19645:15;19671:14;19696:11;19718:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19718:25:0;-1:-1:-1;;;;;19777:17:0;;19756;19777;;;:9;:17;;;;;;;;19776:18;:56;;;;-1:-1:-1;;;;;;19812:20:0;;;;;;:9;:20;;;;;;;;19811:21;19776:56;:112;;;;;19880:8;;19864:13;;:24;;;;:::i;:::-;19849:12;:39;19776:112;19976:15;;19756:132;;-1:-1:-1;;;;19976:15:0;;;;;:36;;-1:-1:-1;;;;;;19995:17:0;;;;;;:9;:17;;;;;;;;19976:36;:60;;;-1:-1:-1;;;;;;20016:20:0;;;;;;:9;:20;;;;;;;;19976:60;19972:799;;;20057:1;20051:7;;19972:799;;;20122:4;;-1:-1:-1;;;;;20109:17:0;;;20122:4;;20109:17;:34;;;;;20131:12;20130:13;20109:34;20105:666;;;20312:17;;20278:13;;20312:9;20226:19;20187;;:58;;20226:19;20187:58;:::i;:::-;:104;;;;:::i;:::-;:142;;;;:::i;:::-;20375:24;;;;;;;;20390:9;20375:24;;;;;;;;;;;;;;;;;;;;;;;;20160:169;;-1:-1:-1;20160:169:0;;-1:-1:-1;20375:24:0;-1:-1:-1;20105:666:0;;;20422:12;20417:354;;20577:13;;20548:9;;20577:5;20513:15;20478;;:50;;20513:15;20478:50;:::i;:::-;:79;;;;:::i;:::-;:112;;;;:::i;:::-;20636:20;;;;;;;;20651:5;20636:20;;;;;;;;;;;;;;;;;;;;;;;;20451:139;;-1:-1:-1;20451:139:0;;-1:-1:-1;20636:20:0;-1:-1:-1;20417:354:0;;;20678:12;20674:97;;;20717:9;;;-1:-1:-1;20717:9:0;;-1:-1:-1;20674:97:0;20809:3;20790:15;20799:6;20790;:15;:::i;:::-;20789:23;;;;:::i;:::-;20926:18;;20783:29;;-1:-1:-1;;;;20926:18:0;;;;:36;;;;-1:-1:-1;20958:4:0;;-1:-1:-1;;;;;20948:14:0;;;20958:4;;20948:14;;20926:36;20922:76;;;20964:34;20976:7;20985:12;20964:11;:34::i;:::-;21040:48;21056:6;21064:9;21075:12;21084:3;21075:6;:12;:::i;:::-;21040:15;:48::i;:::-;21103:7;;21099:249;;21175:11;;21171:164;;21207:17;21248:3;21228:16;21237:7;21228:6;:16;:::i;:::-;21227:24;;;;:::i;:::-;21207:44;;21270:49;21286:6;21302:4;21309:9;21270:15;:49::i;:::-;21188:147;21171:164;18269:3086;;;;;18147:3208;;;:::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;21363:1728::-;15130:15;;-1:-1:-1;;;15130:15:0;;;;15125:125;;15162:15;:22;;-1:-1:-1;;;;15162:22:0;-1:-1:-1;;;15162:22:0;;;21498:4:::1;-1:-1:-1::0;3769:18:0;;;;;;;;;;;21454:50:::1;;21538:23;;21519:15;:42;21515:1569;;21608:1;21582:23;;:27;21578:109;;;-1:-1:-1::0;21648:23:0::1;::::0;21578:109:::1;21758:19;21780:11;:7:::0;21790:1:::1;21780:11;:::i;:::-;21758:33;;21806:32;21900:11;21860:9;:19;;;21842:15;:37;;;;:::i;:::-;21841:70;;;;:::i;:::-;21806:105:::0;-1:-1:-1;21926:14:0::1;21943:42;21806:105:::0;21943:15;:42:::1;:::i;:::-;21926:59:::0;-1:-1:-1;22027:21:0::1;22065:24;21926:59:::0;22065:16:::1;:24::i;:::-;22106:20;22129:38;22153:14:::0;22129:21:::1;:38;:::i;:::-;22106:61;;22182:19;22234:9;:19;;;22220:11;:33;;;;:::i;:::-;22204:50;::::0;:12;:50:::1;:::i;:::-;22182:72;;22269:29;22315:9;:19;;;22301:11;:33;;;;:::i;:::-;22269:65:::0;-1:-1:-1;22355:25:0;;22351:172:::1;;22446:61;22459:24;22485:21;22446:12;:61::i;:::-;22580:19:::0;;22539:20:::1;::::0;22562:15:::1;:11:::0;22576:1:::1;22562:15;:::i;:::-;:37;;;;:::i;:::-;22539:60:::0;-1:-1:-1;22618:16:0;;22614:105:::1;;22663:15;::::0;22655:48:::1;::::0;-1:-1:-1;;;;;22663:15:0::1;22690:12:::0;22655:34:::1;:48::i;:::-;22770:13;::::0;::::1;::::0;22735:14:::1;::::0;22752:15:::1;:11:::0;22766:1:::1;22752:15;:::i;:::-;:31;;;;:::i;:::-;22735:48:::0;-1:-1:-1;22802:10:0;;22798:87:::1;;22841:9;::::0;22833:36:::1;::::0;-1:-1:-1;;;;;22841:9:0::1;22862:6:::0;22833:28:::1;:36::i;:::-;22940:17;::::0;::::1;::::0;22901:18:::1;::::0;22922:15:::1;:11:::0;22936:1:::1;22922:15;:::i;:::-;:35;;;;:::i;:::-;22901:56:::0;-1:-1:-1;22976:14:0;;22972:99:::1;;23019:13;::::0;23011:44:::1;::::0;-1:-1:-1;;;;;23019:13:0::1;23044:10:::0;23011:32:::1;:44::i;:::-;21563:1521;;;;;;;;;;21515:1569;-1:-1:-1::0;15215:15:0;:23;;-1:-1:-1;;;;15215:23:0;;;21363:1728;;:::o;7800:638::-;-1:-1:-1;;;;;7940:20:0;;7932:70;;;;-1:-1:-1;;;7932:70:0;;14161:2:1;7932:70:0;;;14143:21:1;14200:2;14180:18;;;14173:30;14239:34;14219:18;;;14212:62;-1:-1:-1;;;14290:18:1;;;14283:35;14335:19;;7932:70:0;13959:401:1;7932:70:0;-1:-1:-1;;;;;8021:23:0;;8013:71;;;;-1:-1:-1;;;8013:71:0;;8050:2:1;8013:71:0;;;8032:21:1;8089:2;8069:18;;;8062:30;8128:34;8108:18;;;8101:62;-1:-1:-1;;;8179:18:1;;;8172:33;8222:19;;8013:71:0;7848: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;;9622:2:1;8209:74:0;;;9604:21:1;9661:2;9641:18;;;9634:30;9700:34;9680:18;;;9673:62;-1:-1:-1;;;9751:18:1;;;9744:36;9797:19;;8209:74:0;9420: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;;;;15681:25:1;;15669:2;15654:18;;15535:177;8395:35:0;;;;;;;;7921:517;7800:638;;;:::o;23099:534::-;23249:16;;;23263:1;23249:16;;;;;;;;23225:21;;23249:16;;;;;;;;;;-1:-1:-1;23249:16:0;23225:40;;23294:4;23276;23281:1;23276:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23276:23:0;;;:7;;;;;;;;;;:23;;;;23320:6;;:13;;;-1:-1:-1;;;23320:13:0;;;;:6;;;;;:11;;:13;;;;;23276:7;;23320:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23310:4;23315:1;23310:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23310:23:0;;;:7;;;;;;;;;:23;23378:6;;23346:53;;23363:4;;23378:6;23387:11;23346:8;:53::i;:::-;23438:6;;:187;;-1:-1:-1;;;23438:187:0;;-1:-1:-1;;;;;23438:6:0;;;;:57;;:187;;23510:11;;23438:6;;23552:4;;23579;;23599:15;;23438:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23154:479;23099:534;:::o;23641:497::-;23821:6;;23789:53;;23806:4;;-1:-1:-1;;;;;23821:6:0;23830:11;23789:8;:53::i;:::-;23885:6;;-1:-1:-1;;;;;23885:6:0;:22;23916:9;23950:4;23970:11;23885:6;;24082:7;12114:6;;-1:-1:-1;;;;;12114:6:0;;12041:87;24082:7;23885:245;;;;;;-1:-1:-1;;;;;;23885:245:0;;;-1:-1:-1;;;;;6578:15:1;;;23885:245:0;;;6560:34:1;6610:18;;;6603:34;;;;6653:18;;;6646:34;;;;6696:18;;;6689:34;6760:15;;;6739:19;;;6732:44;24104:15:0;6792:19:1;;;6785:35;6494:19;;23885:245:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23641:497;;:::o;11484:319::-;11599:6;11574:21;:31;;11566:73;;;;-1:-1:-1;;;11566:73:0;;10817:2:1;11566:73:0;;;10799:21:1;10856:2;10836:18;;;10829:30;10895:31;10875:18;;;10868:59;10944:18;;11566:73:0;10615: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;;10390:2:1;11717:78:0;;;10372:21:1;10429:2;10409:18;;;10402:30;10468:34;10448:18;;;10441:62;10539:28;10519:18;;;10512:56;10585:19;;11717:78:0;10188: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:635::-;4214:6;4267:3;4255:9;4246:7;4242:23;4238:33;4235:53;;;4284:1;4281;4274:12;4235:53;4317:2;4311:9;4359:3;4351:6;4347:16;4429:6;4417:10;4414:22;4393:18;4381:10;4378:34;4375:62;4372:88;;;4440:18;;:::i;:::-;4480:10;4476:2;4469:22;;4528:9;4515:23;4507:6;4500:39;4600:2;4589:9;4585:18;4572:32;4567:2;4559:6;4555:15;4548:57;4666:2;4655:9;4651:18;4638:32;4633:2;4625:6;4621:15;4614:57;4732:2;4721:9;4717:18;4704:32;4699:2;4691:6;4687:15;4680:57;4756:6;4746:16;;;4133:635;;;;:::o;4773:180::-;4832:6;4885:2;4873:9;4864:7;4860:23;4856:32;4853:52;;;4901:1;4898;4891:12;4853:52;-1:-1:-1;4924:23:1;;4773:180;-1:-1:-1;4773:180:1:o;4958:248::-;5026:6;5034;5087:2;5075:9;5066:7;5062:23;5058:32;5055:52;;;5103:1;5100;5093:12;5055:52;-1:-1:-1;;5126:23:1;;;5196:2;5181:18;;;5168:32;;-1:-1:-1;4958:248:1:o;5211:306::-;5299:6;5307;5315;5368:2;5356:9;5347:7;5343:23;5339:32;5336:52;;;5384:1;5381;5374:12;5336:52;5413:9;5407:16;5397:26;;5463:2;5452:9;5448:18;5442:25;5432:35;;5507:2;5496:9;5492:18;5486:25;5476:35;;5211:306;;;;;:::o;7246:597::-;7358:4;7387:2;7416;7405:9;7398:21;7448:6;7442:13;7491:6;7486:2;7475:9;7471:18;7464:34;7516:1;7526:140;7540:6;7537:1;7534:13;7526:140;;;7635:14;;;7631:23;;7625:30;7601:17;;;7620:2;7597:26;7590:66;7555:10;;7526:140;;;7684:6;7681:1;7678:13;7675:91;;;7754:1;7749:2;7740:6;7729:9;7725:22;7721:31;7714:42;7675:91;-1:-1:-1;7827:2:1;7806:15;-1:-1:-1;;7802:29:1;7787:45;;;;7834:2;7783:54;;7246:597;-1:-1:-1;;;7246:597:1:o;12141:356::-;12343:2;12325:21;;;12362:18;;;12355:30;12421:34;12416:2;12401:18;;12394:62;12488:2;12473:18;;12141:356::o;15717:980::-;15979:4;16027:3;16016:9;16012:19;16058:6;16047:9;16040:25;16084:2;16122:6;16117:2;16106:9;16102:18;16095:34;16165:3;16160:2;16149:9;16145:18;16138:31;16189:6;16224;16218:13;16255:6;16247;16240:22;16293:3;16282:9;16278:19;16271:26;;16332:2;16324:6;16320:15;16306:29;;16353:1;16363:195;16377:6;16374:1;16371:13;16363:195;;;16442:13;;-1:-1:-1;;;;;16438:39:1;16426:52;;16533:15;;;;16498:12;;;;16474:1;16392:9;16363:195;;;-1:-1:-1;;;;;;;16614:32:1;;;;16609:2;16594:18;;16587:60;-1:-1:-1;;;16678:3:1;16663:19;16656:35;16575:3;15717:980;-1:-1:-1;;;15717:980:1:o;17287:275::-;17358:2;17352:9;17423:2;17404:13;;-1:-1:-1;;17400:27:1;17388:40;;17458:18;17443:34;;17479:22;;;17440:62;17437:88;;;17505:18;;:::i;:::-;17541:2;17534:22;17287:275;;-1:-1:-1;17287:275:1:o;17567:128::-;17607:3;17638:1;17634:6;17631:1;17628:13;17625:39;;;17644:18;;:::i;:::-;-1:-1:-1;17680:9:1;;17567:128::o;17700:217::-;17740:1;17766;17756:132;;17810:10;17805:3;17801:20;17798:1;17791:31;17845:4;17842:1;17835:15;17873:4;17870:1;17863:15;17756:132;-1:-1:-1;17902:9:1;;17700:217::o;17922:422::-;18011:1;18054:5;18011:1;18068:270;18089:7;18079:8;18076:21;18068:270;;;18148:4;18144:1;18140:6;18136:17;18130:4;18127:27;18124:53;;;18157:18;;:::i;:::-;18207:7;18197:8;18193:22;18190:55;;;18227:16;;;;18190:55;18306:22;;;;18266:15;;;;18068:270;;;18072:3;17922:422;;;;;:::o;18349:140::-;18407:5;18436:47;18477:4;18467:8;18463:19;18457:4;18543:5;18573:8;18563:80;;-1:-1:-1;18614:1:1;18628:5;;18563:80;18662:4;18652:76;;-1:-1:-1;18699:1:1;18713:5;;18652:76;18744:4;18762:1;18757:59;;;;18830:1;18825:130;;;;18737:218;;18757:59;18787:1;18778:10;;18801:5;;;18825:130;18862:3;18852:8;18849:17;18846:43;;;18869:18;;:::i;:::-;-1:-1:-1;;18925:1:1;18911:16;;18940:5;;18737:218;;19039:2;19029:8;19026:16;19020:3;19014:4;19011:13;19007:36;19001:2;18991:8;18988:16;18983:2;18977:4;18974:12;18970:35;18967:77;18964:159;;;-1:-1:-1;19076:19:1;;;19108:5;;18964:159;19155:34;19180:8;19174:4;19155:34;:::i;:::-;19225:6;19221:1;19217:6;19213:19;19204:7;19201:32;19198:58;;;19236:18;;:::i;:::-;19274:20;;18494:806;-1:-1:-1;;;18494:806:1:o;19305:168::-;19345:7;19411:1;19407;19403:6;19399:14;19396:1;19393:21;19388:1;19381:9;19374:17;19370:45;19367:71;;;19418:18;;:::i;:::-;-1:-1:-1;19458:9:1;;19305:168::o;19478:125::-;19518:4;19546:1;19543;19540:8;19537:34;;;19551:18;;:::i;:::-;-1:-1:-1;19588:9:1;;19478:125::o;19608:380::-;19687:1;19683:12;;;;19730;;;19751:61;;19805:4;19797:6;19793:17;19783:27;;19751:61;19858:2;19850:6;19847:14;19827:18;19824:38;19821:161;;;19904:10;19899:3;19895:20;19892:1;19885:31;19939:4;19936:1;19929:15;19967:4;19964:1;19957:15;19821:161;;19608:380;;;:::o;19993:135::-;20032:3;-1:-1:-1;;20053:17:1;;20050:43;;;20073:18;;:::i;:::-;-1:-1:-1;20120:1:1;20109:13;;19993:135::o;20133:127::-;20194:10;20189:3;20185:20;20182:1;20175:31;20225:4;20222:1;20215:15;20249:4;20246:1;20239:15;20265:127;20326:10;20321:3;20317:20;20314:1;20307:31;20357:4;20354:1;20347:15;20381:4;20378:1;20371:15;20397:127;20458:10;20453:3;20449:20;20446:1;20439:31;20489:4;20486:1;20479:15;20513:4;20510:1;20503:15;20529:131;-1:-1:-1;;;;;20604:31:1;;20594:42;;20584:70;;20650:1;20647;20640:12;20665:118;20751:5;20744:13;20737:21;20730:5;20727:32;20717:60;;20773:1;20770;20763:12

Swarm Source

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