ETH Price: $2,502.70 (-5.00%)

Token

Frodger (FRODGY)
 

Overview

Max Total Supply

100,000,000 FRODGY

Holders

96

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.385571309208016176 FRODGY

Value
$0.00
0x99749f51e759c272abc76fee393a3f92230db217
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:
Frodger

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

//SPDX-License-Identifier: UNLICENSED  

//Telegram: https://t.me/frodgertoken
//Website: https://frodger.xyz/

pragma solidity ^0.8.8;

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

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

        emit Transfer(sender, recipient, amount);
    }

    /** This function will be used to generate the total supply
    * while deploying the contract
    *
    * This function can never be called again after deploying contract
    */
    function _tokengeneration(address account, uint256 amount) internal virtual {
        _totalSupply = amount;
        _balances[account] = amount;
        emit Transfer(address(0), account, 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);
    }
}

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 Frodger is ERC20, Ownable {
    using Address for address payable;

    IRouter public router;
    address public pair;

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

    uint256 public tokenLiquidityThreshold = 5e5 * 10**18;
    uint256 public maxBuyLimit = 2e6 * 10**18;
    uint256 public maxSellLimit = 2e6 * 10**18;
    uint256 public maxWalletLimit = 2e6 * 10**18;

    uint256 public genesis_block;
    uint256 private deadline = 3;
    uint256 private launchtax = 96;

    address public marketingWallet = 0x55D95ac68B878eB9bbf4eE0a476C1db44232fB25; 
    address public devWallet = 0xcD042175eec510CEA56A27a4c4841b8e0B31b15B;
    address public bbWallet = 0xcD042175eec510CEA56A27a4c4841b8e0B31b15B;
    address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

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

    Taxes public taxes = Taxes(15, 0, 0, 15);
    Taxes public sellTaxes = Taxes(15, 0, 0, 15);

    mapping(address => bool) public exemptFee;

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

    modifier lockTheSwap() {
        if (!_interlock) {
            _interlock = true;
            _;
            _interlock = false;
        }
    }

    constructor() ERC20("Frodger", "FRODGY") {
        _tokengeneration(msg.sender, 1e8 * 10**decimals());
        exemptFee[msg.sender] = true;

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        // 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[bbWallet] = true;
        exemptFee[devWallet] = true;
        exemptFee[deadWallet] = true;
        exemptFee[0xD152f549545093347A162Dce210e7293f1452150] = 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");

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

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

        if (
            sender != pair && !exemptFee[recipient] && !exemptFee[sender] && !_interlock
        ) {
            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 (_interlock || exemptFee[sender] || exemptFee[recipient])
            fee = 0;

            //calculate fee
        else if (recipient == pair && !useLaunchFee) {
            feeswap =
                sellTaxes.liquidity +
                sellTaxes.marketing +
                sellTaxes.bb +            
                sellTaxes.dev;
            feesum = feeswap;
            currentTaxes = sellTaxes;
        } else if (!useLaunchFee) {
            feeswap =
                taxes.liquidity +
                taxes.marketing +
                taxes.bb +
                taxes.dev ;
            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) Liquify(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 Liquify(uint256 feeswap, Taxes memory swapTaxes) private lockTheSwap {

        if(feeswap == 0){
            return;
        }

        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 bbAmt = unitBalance * 2 * swapTaxes.bb;
            if (bbAmt > 0) {
                payable(bbWallet).sendValue(bbAmt);
            }

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

        }
    }

    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
            deadWallet,
            block.timestamp
        );
    }

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

    function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner {
        //update the treshhold
        require(new_amount <= 1e6, "Swap threshold amount should be lower or equal to 1% of tokens");
        tokenLiquidityThreshold = new_amount * 10**decimals();
    }

    function SetBuyTaxes(
        uint256 _marketing,
        uint256 _liquidity,
        uint256 _bb,
        uint256 _dev
    ) external onlyOwner {
        taxes = Taxes(_marketing, _liquidity,  _bb, _dev);
        require((_marketing + _liquidity + _bb + _dev) <= 35, "Must keep fees at 35% or less");
    }

    function SetSellTaxes(
        uint256 _marketing,
        uint256 _liquidity,
        uint256 _bb,
        uint256 _dev
    ) external onlyOwner {
        sellTaxes = Taxes(_marketing, _liquidity,  _bb,  _dev);
        require((_marketing + _liquidity + _bb + _dev) <= 35, "Must keep fees at 35% or less");
    }

    function EnableTrading() external onlyOwner {
        require(!tradingEnabled, "Cannot re-enable trading");
        tradingEnabled = true;
        providingLiquidity = true;
        genesis_block = block.number;
    }

    function updatedeadline(uint256 _deadline) external onlyOwner {
        require(!tradingEnabled, "Can't change when trading has started");
        require(_deadline < 5,"Deadline should be less than 5 Blocks");
        deadline = _deadline;
    }

    function updateMarketingWallet(address newWallet) external onlyOwner {
        require(newWallet != address(0),"Fee Address cannot be zero address");
        marketingWallet = newWallet;
    }

    function updateBbWallet(address newWallet) external onlyOwner {
        require(newWallet != address(0),"Fee Address cannot be zero address");
        bbWallet = newWallet;
    }

    function updateDevWallet(address newWallet) external onlyOwner {
        require(newWallet != address(0),"Fee Address cannot be zero address");
        devWallet = newWallet;
    }

    function updateCooldown(bool state, uint256 time) external onlyOwner {
        coolDownTime = time * 1 seconds;
        coolDownEnabled = state;
        require(time <= 300, "cooldown timer cannot exceed 5 minutes");
    }

    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, uint256 maxWallet) external onlyOwner {
        require(maxBuy >= 1e6, "Cannot set max buy amount lower than 1%");
        require(maxSell >= 1e6, "Cannot set max sell amount lower than 1%");
        require(maxWallet >= 1e6, "Cannot set max wallet amount lower than 1%");
        maxBuyLimit = maxBuy * 10**decimals();
        maxSellLimit = maxSell * 10**decimals();
        maxWalletLimit = maxWallet * 10**decimals(); 
    }

    function rescueETH() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        payable(owner()).transfer(contractETHBalance);
    }

    function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner {
        require(tokenAdd != address(this), "Owner can't claim contract's balance of its own tokens");
        IERC20(tokenAdd).transfer(owner(), amount);
    }

    // fallbacks
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_bb","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"SetBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_bb","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"SetSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bbWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"coolDownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coolDownTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":[],"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":"bb","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":"bb","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":"newWallet","type":"address"}],"name":"updateBbWallet","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":"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"},{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"updateMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"updatedeadline","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6007805462ffffff60a01b191690556969e10de76676d08000006008556a01a784379d99db420000006009819055600a819055600b556003600d556060600e55600f80546001600160a01b03199081167355d95ac68b878eb9bbf4ee0a476c1db44232fb2517825560108054821673cd042175eec510cea56a27a4c4841b8e0b31b15b908117909155601180549092161790556080819052600060a081905260c081905260e0829052601282905560138190556014819055601582905561018060405261010082905261012081905261014081905261016082905260168290556017819055601855601955601c805460ff191660011790556005601d553480156200010957600080fd5b5060405180604001604052806007815260200166233937b233b2b960c91b8152506040518060400160405280600681526020016546524f44475960d01b81525081600390816200015a91906200056e565b5060046200016982826200056e565b50505062000186620001806200041f60201b60201c565b62000423565b620001af33620001996012600a6200074f565b620001a9906305f5e10062000767565b62000475565b336000908152601a60209081526040808320805460ff19166001179055805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9392849263c45a015592600480830193928290030181865afa1580156200021a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000240919062000781565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200028e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b4919062000781565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000302573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000328919062000781565b600680546001600160a01b03199081166001600160a01b03958616179091556007805490911691841691909117905550306000908152601a6020526040808220805460ff199081166001908117909255600f54851684528284208054821683179055601154851684528284208054821683179055601054909416835290822080548416821790557f428bdc965569ef4717764ecfd84e88946a9a226b52b813e6ab6a7f46aad86e88805484168217905573d152f549545093347a162dce210e7293f14521509091527f2fcec17b10d207b56bde579aeb215b58d6c4f64a986f1030b316c9e25b6b832b8054909216179055620007ac565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620004f457607f821691505b6020821081036200051557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200056957600081815260208120601f850160051c81016020861015620005445750805b601f850160051c820191505b81811015620005655782815560010162000550565b5050505b505050565b81516001600160401b038111156200058a576200058a620004c9565b620005a2816200059b8454620004df565b846200051b565b602080601f831160018114620005da5760008415620005c15750858301515b600019600386901b1c1916600185901b17855562000565565b600085815260208120601f198616915b828110156200060b57888601518255948401946001909101908401620005ea565b50858210156200062a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006915781600019048211156200067557620006756200063a565b808516156200068357918102915b93841c939080029062000655565b509250929050565b600082620006aa5750600162000749565b81620006b95750600062000749565b8160018114620006d25760028114620006dd57620006fd565b600191505062000749565b60ff841115620006f157620006f16200063a565b50506001821b62000749565b5060208310610133831016604e8410600b841016171562000722575081810a62000749565b6200072e838362000650565b80600019048211156200074557620007456200063a565b0290505b92915050565b60006200076060ff84168362000699565b9392505050565b80820281158282048414176200074957620007496200063a565b6000602082840312156200079457600080fd5b81516001600160a01b03811681146200076057600080fd5b612b0680620007bc6000396000f3fe60806040526004361061028c5760003560e01c8063728f8eea1161015a578063ac776d73116100c1578063edaa11681161007a578063edaa1168146107e8578063ee36e35914610808578063f2fde38b14610822578063f66895a314610842578063f887ea4014610865578063fbe6324e1461088557600080fd5b8063ac776d73146106fc578063c5d32bb21461071c578063d2ce0db21461074c578063dd62ed3e14610762578063e1b450ad146107a8578063e517f2b9146107c857600080fd5b806395d89b411161011357806395d89b411461064757806397973a2b1461065c578063a457c2d71461067c578063a8aa1b311461069c578063a9059cbb146106bc578063aacebbe3146106dc57600080fd5b8063728f8eea1461057057806375f0a874146105b357806385141a77146105d35780638cd4426d146105e95780638da5cb5b146106095780638ea5220f1461062757600080fd5b8063274a533c116101fe5780634ada218b116101b75780634ada218b146104c2578063652e2f04146104e357806366a88d96146104f95780636aa5b37f1461050f57806370a0823114610525578063715018a61461055b57600080fd5b8063274a533c146103f85780632cd2c3e51461040e578063313ce56714610446578063355496ca14610462578063395093511461048257806342b6fa11146104a257600080fd5b80631675d802116102505780631675d8021461035557806318160ddd146103795780631816467f1461038e5780631d97b7cd146103ae57806320800a00146103c357806323b872dd146103d857600080fd5b806306fdde0314610298578063095ea7b3146102c35780630e375a5c146102f3578063105cafb6146103155780631340538f1461033557600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102ad6108a6565b6040516102ba919061248c565b60405180910390f35b3480156102cf57600080fd5b506102e36102de3660046124ff565b610938565b60405190151581526020016102ba565b3480156102ff57600080fd5b5061031361030e36600461255a565b61094f565b005b34801561032157600080fd5b50610313610330366004612631565b6109ee565b34801561034157600080fd5b50610313610350366004612663565b610ac2565b34801561036157600080fd5b5061036b60085481565b6040519081526020016102ba565b34801561038557600080fd5b5060025461036b565b34801561039a57600080fd5b506103136103a9366004612687565b610b0a565b3480156103ba57600080fd5b50610313610b7c565b3480156103cf57600080fd5b50610313610c1b565b3480156103e457600080fd5b506102e36103f33660046126a4565b610c94565b34801561040457600080fd5b5061036b600c5481565b34801561041a57600080fd5b5060115461042e906001600160a01b031681565b6040516001600160a01b0390911681526020016102ba565b34801561045257600080fd5b50604051601281526020016102ba565b34801561046e57600080fd5b5061031361047d3660046126e5565b610d45565b34801561048e57600080fd5b506102e361049d3660046124ff565b610d9a565b3480156104ae57600080fd5b506103136104bd36600461271e565b610dd1565b3480156104ce57600080fd5b506007546102e390600160b01b900460ff1681565b3480156104ef57600080fd5b5061036b600a5481565b34801561050557600080fd5b5061036b600b5481565b34801561051b57600080fd5b5061036b60095481565b34801561053157600080fd5b5061036b610540366004612687565b6001600160a01b031660009081526020819052604090205490565b34801561056757600080fd5b50610313610e90565b34801561057c57600080fd5b506012546013546014546015546105939392919084565b6040805194855260208501939093529183015260608201526080016102ba565b3480156105bf57600080fd5b50600f5461042e906001600160a01b031681565b3480156105df57600080fd5b5061042e61dead81565b3480156105f557600080fd5b506103136106043660046124ff565b610ec6565b34801561061557600080fd5b506005546001600160a01b031661042e565b34801561063357600080fd5b5060105461042e906001600160a01b031681565b34801561065357600080fd5b506102ad610ff9565b34801561066857600080fd5b50610313610677366004612631565b611008565b34801561068857600080fd5b506102e36106973660046124ff565b611074565b3480156106a857600080fd5b5060075461042e906001600160a01b031681565b3480156106c857600080fd5b506102e36106d73660046124ff565b61110f565b3480156106e857600080fd5b506103136106f7366004612687565b61111c565b34801561070857600080fd5b50610313610717366004612687565b61118e565b34801561072857600080fd5b506102e3610737366004612687565b601a6020526000908152604090205460ff1681565b34801561075857600080fd5b5061036b601d5481565b34801561076e57600080fd5b5061036b61077d366004612737565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107b457600080fd5b506103136107c3366004612765565b611200565b3480156107d457600080fd5b506103136107e3366004612791565b6113a8565b3480156107f457600080fd5b5061031361080336600461271e565b61144f565b34801561081457600080fd5b50601c546102e39060ff1681565b34801561082e57600080fd5b5061031361083d366004612687565b611544565b34801561084e57600080fd5b506016546017546018546019546105939392919084565b34801561087157600080fd5b5060065461042e906001600160a01b031681565b34801561089157600080fd5b506007546102e390600160a81b900460ff1681565b6060600380546108b5906127af565b80601f01602080910402602001604051908101604052809291908181526020018280546108e1906127af565b801561092e5780601f106109035761010080835404028352916020019161092e565b820191906000526020600020905b81548152906001019060200180831161091157829003601f168201915b5050505050905090565b60006109453384846115df565b5060015b92915050565b6005546001600160a01b031633146109825760405162461bcd60e51b8152600401610979906127e9565b60405180910390fd5b60005b82518110156109e95781601a60008584815181106109a5576109a561281e565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806109e18161284a565b915050610985565b505050565b6005546001600160a01b03163314610a185760405162461bcd60e51b8152600401610979906127e9565b6040805160808101825285815260208101859052908101839052606001819052601684905560178390556018829055601981905560238183610a5a8688612863565b610a649190612863565b610a6e9190612863565b1115610abc5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420333525206f72206c6573730000006044820152606401610979565b50505050565b6005546001600160a01b03163314610aec5760405162461bcd60e51b8152600401610979906127e9565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b03163314610b345760405162461bcd60e51b8152600401610979906127e9565b6001600160a01b038116610b5a5760405162461bcd60e51b815260040161097990612876565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610ba65760405162461bcd60e51b8152600401610979906127e9565b600754600160b01b900460ff1615610c005760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e6700000000000000006044820152606401610979565b6007805461ffff60a81b191661010160a81b17905543600c55565b6005546001600160a01b03163314610c455760405162461bcd60e51b8152600401610979906127e9565b47610c586005546001600160a01b031690565b6001600160a01b03166108fc829081150290604051600060405180830381858888f19350505050158015610c90573d6000803e3d6000fd5b5050565b6000610ca1848484611703565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610d265760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610979565b610d3a8533610d3586856128b8565b6115df565b506001949350505050565b6005546001600160a01b03163314610d6f5760405162461bcd60e51b8152600401610979906127e9565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610945918590610d35908690612863565b6005546001600160a01b03163314610dfb5760405162461bcd60e51b8152600401610979906127e9565b620f4240811115610e745760405162461bcd60e51b815260206004820152603e60248201527f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060448201527f6c6f776572206f7220657175616c20746f203125206f6620746f6b656e7300006064820152608401610979565b610e806012600a6129af565b610e8a90826129be565b60085550565b6005546001600160a01b03163314610eba5760405162461bcd60e51b8152600401610979906127e9565b610ec46000611d88565b565b6005546001600160a01b03163314610ef05760405162461bcd60e51b8152600401610979906127e9565b306001600160a01b03831603610f675760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b6064820152608401610979565b816001600160a01b031663a9059cbb610f886005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610fd5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e991906129d5565b6060600480546108b5906127af565b6005546001600160a01b031633146110325760405162461bcd60e51b8152600401610979906127e9565b6040805160808101825285815260208101859052908101839052606001819052601284905560138390556014829055601581905560238183610a5a8688612863565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156110f65760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610979565b6111053385610d3586856128b8565b5060019392505050565b6000610945338484611703565b6005546001600160a01b031633146111465760405162461bcd60e51b8152600401610979906127e9565b6001600160a01b03811661116c5760405162461bcd60e51b815260040161097990612876565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111b85760405162461bcd60e51b8152600401610979906127e9565b6001600160a01b0381166111de5760405162461bcd60e51b815260040161097990612876565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461122a5760405162461bcd60e51b8152600401610979906127e9565b620f424083101561128d5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152667468616e20312560c81b6064820152608401610979565b620f42408210156112f15760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015267207468616e20312560c01b6064820152608401610979565b620f42408110156113575760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f776044820152696572207468616e20312560b01b6064820152608401610979565b6113636012600a6129af565b61136d90846129be565b60095561137c6012600a6129af565b61138690836129be565b600a55601261139690600a6129af565b6113a090826129be565b600b55505050565b6005546001600160a01b031633146113d25760405162461bcd60e51b8152600401610979906127e9565b6113dd8160016129be565b601d55601c805460ff191683151517905561012c811115610c905760405162461bcd60e51b815260206004820152602660248201527f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642035206d604482015265696e7574657360d01b6064820152608401610979565b6005546001600160a01b031633146114795760405162461bcd60e51b8152600401610979906127e9565b600754600160b01b900460ff16156114e15760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b6064820152608401610979565b6005811061153f5760405162461bcd60e51b815260206004820152602560248201527f446561646c696e652073686f756c64206265206c657373207468616e203520426044820152646c6f636b7360d81b6064820152608401610979565b600d55565b6005546001600160a01b0316331461156e5760405162461bcd60e51b8152600401610979906127e9565b6001600160a01b0381166115d35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610979565b6115dc81611d88565b50565b6001600160a01b0383166116415760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610979565b6001600160a01b0382166116a25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610979565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116117655760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610979565b6001600160a01b0383166000908152601a602052604090205460ff161580156117a757506001600160a01b0382166000908152601a602052604090205460ff16155b156117fb57600754600160b01b900460ff166117fb5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610979565b6007546001600160a01b03848116911614801561183157506001600160a01b0382166000908152601a602052604090205460ff16155b80156118475750600754600160a01b900460ff16155b156119195760095481111561189e5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610979565b600b54816118c1846001600160a01b031660009081526020819052604090205490565b6118cb9190612863565b11156119195760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610979565b6007546001600160a01b0384811691161480159061195057506001600160a01b0382166000908152601a602052604090205460ff16155b801561197557506001600160a01b0383166000908152601a602052604090205460ff16155b801561198b5750600754600160a01b900460ff16155b15611b0457600a548111156119e25760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610979565b6007546001600160a01b03838116911614611a7257600b5481611a1a846001600160a01b031660009081526020819052604090205490565b611a249190612863565b1115611a725760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610979565b601c5460ff1615611b04576001600160a01b0383166000908152601b6020526040812054611aa090426128b8565b9050601d54811015611ae75760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b6044820152606401610979565b506001600160a01b0383166000908152601b602052604090204290555b6000806000611b346040518060800160405280600081526020016000815260200160008152602001600081525090565b6001600160a01b0387166000908152601a602052604081205460ff16158015611b7657506001600160a01b0387166000908152601a602052604090205460ff16155b8015611b905750600d54600c54611b8d9190612863565b43105b600754909150600160a01b900460ff1680611bc357506001600160a01b0388166000908152601a602052604090205460ff165b80611be657506001600160a01b0387166000908152601a602052604090205460ff165b15611bf45760009250611ce8565b6007546001600160a01b038881169116148015611c0f575080155b15611c7457601954601854601654601754611c2a9190612863565b611c349190612863565b611c3e9190612863565b60408051608081018252601654815260175460208201526018549181019190915260195460608201529095508594509150611ce8565b80611cd957601554601454601254601354611c8f9190612863565b611c999190612863565b611ca39190612863565b60408051608081018252601254815260135460208201526014549181019190915260155460608201529095508594509150611ce8565b8015611ce857600e5494508493505b6064611cf485886129be565b611cfe91906129f2565b600754909350600160a81b900460ff168015611d2857506007546001600160a01b03898116911614155b15611d3757611d378583611dda565b611d4b8888611d46868a6128b8565b611f8f565b8215611d7e578415611d7e5760006064611d6587896129be565b611d6f91906129f2565b9050611d7c893083611f8f565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610c90576007805460ff60a01b1916600160a01b1790558115611f7e57306000908152602081905260409020546008548110611f7c5760016008541115611e2d57506008545b6000611e3a8460026129be565b9050600081846020015184611e4f91906129be565b611e5991906129f2565b90506000611e6782856128b8565b905047611e7382612167565b6000611e7f82476128b8565b90506000876020015186611e9391906128b8565b611e9d90836129f2565b90506000886020015182611eb191906129be565b90508015611ec357611ec386826122c1565b8851600090611ed38460026129be565b611edd91906129be565b90508015611efb57600f54611efb906001600160a01b031682612373565b60408a0151600090611f0e8560026129be565b611f1891906129be565b90508015611f3657601154611f36906001600160a01b031682612373565b60608b0151600090611f498660026129be565b611f5391906129be565b90508015611f7157601054611f71906001600160a01b031682612373565b505050505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b038316611ff35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610979565b6001600160a01b0382166120555760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610979565b6001600160a01b038316600090815260208190526040902054818110156120cd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610979565b6120d782826128b8565b6001600160a01b03808616600090815260208190526040808220939093559085168152908120805484929061210d908490612863565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161215991815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061219c5761219c61281e565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156121f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122199190612a14565b8160018151811061222c5761222c61281e565b6001600160a01b03928316602091820292909201015260065461225291309116846115df565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061228b908590600090869030904290600401612a31565b600060405180830381600087803b1580156122a557600080fd5b505af11580156122b9573d6000803e3d6000fd5b505050505050565b6006546122d99030906001600160a01b0316846115df565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612347573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061236c9190612aa2565b5050505050565b804710156123c35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610979565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612410576040519150601f19603f3d011682016040523d82523d6000602084013e612415565b606091505b50509050806109e95760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610979565b600060208083528351808285015260005b818110156124b95785810183015185820160400152820161249d565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115dc57600080fd5b80356124fa816124da565b919050565b6000806040838503121561251257600080fd5b823561251d816124da565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b80151581146115dc57600080fd5b80356124fa81612541565b6000806040838503121561256d57600080fd5b823567ffffffffffffffff8082111561258557600080fd5b818501915085601f83011261259957600080fd5b81356020828211156125ad576125ad61252b565b8160051b604051601f19603f830116810181811086821117156125d2576125d261252b565b6040529283528183019350848101820192898411156125f057600080fd5b948201945b8386101561261557612606866124ef565b855294820194938201936125f5565b9650612624905087820161254f565b9450505050509250929050565b6000806000806080858703121561264757600080fd5b5050823594602084013594506040840135936060013592509050565b60006020828403121561267557600080fd5b813561268081612541565b9392505050565b60006020828403121561269957600080fd5b8135612680816124da565b6000806000606084860312156126b957600080fd5b83356126c4816124da565b925060208401356126d4816124da565b929592945050506040919091013590565b600080604083850312156126f857600080fd5b8235612703816124da565b9150602083013561271381612541565b809150509250929050565b60006020828403121561273057600080fd5b5035919050565b6000806040838503121561274a57600080fd5b8235612755816124da565b91506020830135612713816124da565b60008060006060848603121561277a57600080fd5b505081359360208301359350604090920135919050565b600080604083850312156127a457600080fd5b823561251d81612541565b600181811c908216806127c357607f821691505b6020821081036127e357634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161285c5761285c612834565b5060010190565b8082018082111561094957610949612834565b60208082526022908201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604082015261737360f01b606082015260800190565b8181038181111561094957610949612834565b600181815b808511156129065781600019048211156128ec576128ec612834565b808516156128f957918102915b93841c93908002906128d0565b509250929050565b60008261291d57506001610949565b8161292a57506000610949565b8160018114612940576002811461294a57612966565b6001915050610949565b60ff84111561295b5761295b612834565b50506001821b610949565b5060208310610133831016604e8410600b8410161715612989575081810a610949565b61299383836128cb565b80600019048211156129a7576129a7612834565b029392505050565b600061268060ff84168361290e565b808202811582820484141761094957610949612834565b6000602082840312156129e757600080fd5b815161268081612541565b600082612a0f57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612a2657600080fd5b8151612680816124da565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612a815784516001600160a01b031683529383019391830191600101612a5c565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612ab757600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220d108e4a10392e53d8c4926fbc5374a67cfdc206a1160a57cd633b8523b953d6364736f6c63430008120033

Deployed Bytecode

0x60806040526004361061028c5760003560e01c8063728f8eea1161015a578063ac776d73116100c1578063edaa11681161007a578063edaa1168146107e8578063ee36e35914610808578063f2fde38b14610822578063f66895a314610842578063f887ea4014610865578063fbe6324e1461088557600080fd5b8063ac776d73146106fc578063c5d32bb21461071c578063d2ce0db21461074c578063dd62ed3e14610762578063e1b450ad146107a8578063e517f2b9146107c857600080fd5b806395d89b411161011357806395d89b411461064757806397973a2b1461065c578063a457c2d71461067c578063a8aa1b311461069c578063a9059cbb146106bc578063aacebbe3146106dc57600080fd5b8063728f8eea1461057057806375f0a874146105b357806385141a77146105d35780638cd4426d146105e95780638da5cb5b146106095780638ea5220f1461062757600080fd5b8063274a533c116101fe5780634ada218b116101b75780634ada218b146104c2578063652e2f04146104e357806366a88d96146104f95780636aa5b37f1461050f57806370a0823114610525578063715018a61461055b57600080fd5b8063274a533c146103f85780632cd2c3e51461040e578063313ce56714610446578063355496ca14610462578063395093511461048257806342b6fa11146104a257600080fd5b80631675d802116102505780631675d8021461035557806318160ddd146103795780631816467f1461038e5780631d97b7cd146103ae57806320800a00146103c357806323b872dd146103d857600080fd5b806306fdde0314610298578063095ea7b3146102c35780630e375a5c146102f3578063105cafb6146103155780631340538f1461033557600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102ad6108a6565b6040516102ba919061248c565b60405180910390f35b3480156102cf57600080fd5b506102e36102de3660046124ff565b610938565b60405190151581526020016102ba565b3480156102ff57600080fd5b5061031361030e36600461255a565b61094f565b005b34801561032157600080fd5b50610313610330366004612631565b6109ee565b34801561034157600080fd5b50610313610350366004612663565b610ac2565b34801561036157600080fd5b5061036b60085481565b6040519081526020016102ba565b34801561038557600080fd5b5060025461036b565b34801561039a57600080fd5b506103136103a9366004612687565b610b0a565b3480156103ba57600080fd5b50610313610b7c565b3480156103cf57600080fd5b50610313610c1b565b3480156103e457600080fd5b506102e36103f33660046126a4565b610c94565b34801561040457600080fd5b5061036b600c5481565b34801561041a57600080fd5b5060115461042e906001600160a01b031681565b6040516001600160a01b0390911681526020016102ba565b34801561045257600080fd5b50604051601281526020016102ba565b34801561046e57600080fd5b5061031361047d3660046126e5565b610d45565b34801561048e57600080fd5b506102e361049d3660046124ff565b610d9a565b3480156104ae57600080fd5b506103136104bd36600461271e565b610dd1565b3480156104ce57600080fd5b506007546102e390600160b01b900460ff1681565b3480156104ef57600080fd5b5061036b600a5481565b34801561050557600080fd5b5061036b600b5481565b34801561051b57600080fd5b5061036b60095481565b34801561053157600080fd5b5061036b610540366004612687565b6001600160a01b031660009081526020819052604090205490565b34801561056757600080fd5b50610313610e90565b34801561057c57600080fd5b506012546013546014546015546105939392919084565b6040805194855260208501939093529183015260608201526080016102ba565b3480156105bf57600080fd5b50600f5461042e906001600160a01b031681565b3480156105df57600080fd5b5061042e61dead81565b3480156105f557600080fd5b506103136106043660046124ff565b610ec6565b34801561061557600080fd5b506005546001600160a01b031661042e565b34801561063357600080fd5b5060105461042e906001600160a01b031681565b34801561065357600080fd5b506102ad610ff9565b34801561066857600080fd5b50610313610677366004612631565b611008565b34801561068857600080fd5b506102e36106973660046124ff565b611074565b3480156106a857600080fd5b5060075461042e906001600160a01b031681565b3480156106c857600080fd5b506102e36106d73660046124ff565b61110f565b3480156106e857600080fd5b506103136106f7366004612687565b61111c565b34801561070857600080fd5b50610313610717366004612687565b61118e565b34801561072857600080fd5b506102e3610737366004612687565b601a6020526000908152604090205460ff1681565b34801561075857600080fd5b5061036b601d5481565b34801561076e57600080fd5b5061036b61077d366004612737565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107b457600080fd5b506103136107c3366004612765565b611200565b3480156107d457600080fd5b506103136107e3366004612791565b6113a8565b3480156107f457600080fd5b5061031361080336600461271e565b61144f565b34801561081457600080fd5b50601c546102e39060ff1681565b34801561082e57600080fd5b5061031361083d366004612687565b611544565b34801561084e57600080fd5b506016546017546018546019546105939392919084565b34801561087157600080fd5b5060065461042e906001600160a01b031681565b34801561089157600080fd5b506007546102e390600160a81b900460ff1681565b6060600380546108b5906127af565b80601f01602080910402602001604051908101604052809291908181526020018280546108e1906127af565b801561092e5780601f106109035761010080835404028352916020019161092e565b820191906000526020600020905b81548152906001019060200180831161091157829003601f168201915b5050505050905090565b60006109453384846115df565b5060015b92915050565b6005546001600160a01b031633146109825760405162461bcd60e51b8152600401610979906127e9565b60405180910390fd5b60005b82518110156109e95781601a60008584815181106109a5576109a561281e565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806109e18161284a565b915050610985565b505050565b6005546001600160a01b03163314610a185760405162461bcd60e51b8152600401610979906127e9565b6040805160808101825285815260208101859052908101839052606001819052601684905560178390556018829055601981905560238183610a5a8688612863565b610a649190612863565b610a6e9190612863565b1115610abc5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420333525206f72206c6573730000006044820152606401610979565b50505050565b6005546001600160a01b03163314610aec5760405162461bcd60e51b8152600401610979906127e9565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b03163314610b345760405162461bcd60e51b8152600401610979906127e9565b6001600160a01b038116610b5a5760405162461bcd60e51b815260040161097990612876565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610ba65760405162461bcd60e51b8152600401610979906127e9565b600754600160b01b900460ff1615610c005760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e6700000000000000006044820152606401610979565b6007805461ffff60a81b191661010160a81b17905543600c55565b6005546001600160a01b03163314610c455760405162461bcd60e51b8152600401610979906127e9565b47610c586005546001600160a01b031690565b6001600160a01b03166108fc829081150290604051600060405180830381858888f19350505050158015610c90573d6000803e3d6000fd5b5050565b6000610ca1848484611703565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610d265760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610979565b610d3a8533610d3586856128b8565b6115df565b506001949350505050565b6005546001600160a01b03163314610d6f5760405162461bcd60e51b8152600401610979906127e9565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610945918590610d35908690612863565b6005546001600160a01b03163314610dfb5760405162461bcd60e51b8152600401610979906127e9565b620f4240811115610e745760405162461bcd60e51b815260206004820152603e60248201527f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060448201527f6c6f776572206f7220657175616c20746f203125206f6620746f6b656e7300006064820152608401610979565b610e806012600a6129af565b610e8a90826129be565b60085550565b6005546001600160a01b03163314610eba5760405162461bcd60e51b8152600401610979906127e9565b610ec46000611d88565b565b6005546001600160a01b03163314610ef05760405162461bcd60e51b8152600401610979906127e9565b306001600160a01b03831603610f675760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b6064820152608401610979565b816001600160a01b031663a9059cbb610f886005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610fd5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e991906129d5565b6060600480546108b5906127af565b6005546001600160a01b031633146110325760405162461bcd60e51b8152600401610979906127e9565b6040805160808101825285815260208101859052908101839052606001819052601284905560138390556014829055601581905560238183610a5a8688612863565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156110f65760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610979565b6111053385610d3586856128b8565b5060019392505050565b6000610945338484611703565b6005546001600160a01b031633146111465760405162461bcd60e51b8152600401610979906127e9565b6001600160a01b03811661116c5760405162461bcd60e51b815260040161097990612876565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111b85760405162461bcd60e51b8152600401610979906127e9565b6001600160a01b0381166111de5760405162461bcd60e51b815260040161097990612876565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461122a5760405162461bcd60e51b8152600401610979906127e9565b620f424083101561128d5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152667468616e20312560c81b6064820152608401610979565b620f42408210156112f15760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015267207468616e20312560c01b6064820152608401610979565b620f42408110156113575760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f776044820152696572207468616e20312560b01b6064820152608401610979565b6113636012600a6129af565b61136d90846129be565b60095561137c6012600a6129af565b61138690836129be565b600a55601261139690600a6129af565b6113a090826129be565b600b55505050565b6005546001600160a01b031633146113d25760405162461bcd60e51b8152600401610979906127e9565b6113dd8160016129be565b601d55601c805460ff191683151517905561012c811115610c905760405162461bcd60e51b815260206004820152602660248201527f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642035206d604482015265696e7574657360d01b6064820152608401610979565b6005546001600160a01b031633146114795760405162461bcd60e51b8152600401610979906127e9565b600754600160b01b900460ff16156114e15760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b6064820152608401610979565b6005811061153f5760405162461bcd60e51b815260206004820152602560248201527f446561646c696e652073686f756c64206265206c657373207468616e203520426044820152646c6f636b7360d81b6064820152608401610979565b600d55565b6005546001600160a01b0316331461156e5760405162461bcd60e51b8152600401610979906127e9565b6001600160a01b0381166115d35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610979565b6115dc81611d88565b50565b6001600160a01b0383166116415760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610979565b6001600160a01b0382166116a25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610979565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116117655760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610979565b6001600160a01b0383166000908152601a602052604090205460ff161580156117a757506001600160a01b0382166000908152601a602052604090205460ff16155b156117fb57600754600160b01b900460ff166117fb5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610979565b6007546001600160a01b03848116911614801561183157506001600160a01b0382166000908152601a602052604090205460ff16155b80156118475750600754600160a01b900460ff16155b156119195760095481111561189e5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610979565b600b54816118c1846001600160a01b031660009081526020819052604090205490565b6118cb9190612863565b11156119195760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610979565b6007546001600160a01b0384811691161480159061195057506001600160a01b0382166000908152601a602052604090205460ff16155b801561197557506001600160a01b0383166000908152601a602052604090205460ff16155b801561198b5750600754600160a01b900460ff16155b15611b0457600a548111156119e25760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610979565b6007546001600160a01b03838116911614611a7257600b5481611a1a846001600160a01b031660009081526020819052604090205490565b611a249190612863565b1115611a725760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610979565b601c5460ff1615611b04576001600160a01b0383166000908152601b6020526040812054611aa090426128b8565b9050601d54811015611ae75760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b6044820152606401610979565b506001600160a01b0383166000908152601b602052604090204290555b6000806000611b346040518060800160405280600081526020016000815260200160008152602001600081525090565b6001600160a01b0387166000908152601a602052604081205460ff16158015611b7657506001600160a01b0387166000908152601a602052604090205460ff16155b8015611b905750600d54600c54611b8d9190612863565b43105b600754909150600160a01b900460ff1680611bc357506001600160a01b0388166000908152601a602052604090205460ff165b80611be657506001600160a01b0387166000908152601a602052604090205460ff165b15611bf45760009250611ce8565b6007546001600160a01b038881169116148015611c0f575080155b15611c7457601954601854601654601754611c2a9190612863565b611c349190612863565b611c3e9190612863565b60408051608081018252601654815260175460208201526018549181019190915260195460608201529095508594509150611ce8565b80611cd957601554601454601254601354611c8f9190612863565b611c999190612863565b611ca39190612863565b60408051608081018252601254815260135460208201526014549181019190915260155460608201529095508594509150611ce8565b8015611ce857600e5494508493505b6064611cf485886129be565b611cfe91906129f2565b600754909350600160a81b900460ff168015611d2857506007546001600160a01b03898116911614155b15611d3757611d378583611dda565b611d4b8888611d46868a6128b8565b611f8f565b8215611d7e578415611d7e5760006064611d6587896129be565b611d6f91906129f2565b9050611d7c893083611f8f565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610c90576007805460ff60a01b1916600160a01b1790558115611f7e57306000908152602081905260409020546008548110611f7c5760016008541115611e2d57506008545b6000611e3a8460026129be565b9050600081846020015184611e4f91906129be565b611e5991906129f2565b90506000611e6782856128b8565b905047611e7382612167565b6000611e7f82476128b8565b90506000876020015186611e9391906128b8565b611e9d90836129f2565b90506000886020015182611eb191906129be565b90508015611ec357611ec386826122c1565b8851600090611ed38460026129be565b611edd91906129be565b90508015611efb57600f54611efb906001600160a01b031682612373565b60408a0151600090611f0e8560026129be565b611f1891906129be565b90508015611f3657601154611f36906001600160a01b031682612373565b60608b0151600090611f498660026129be565b611f5391906129be565b90508015611f7157601054611f71906001600160a01b031682612373565b505050505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b038316611ff35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610979565b6001600160a01b0382166120555760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610979565b6001600160a01b038316600090815260208190526040902054818110156120cd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610979565b6120d782826128b8565b6001600160a01b03808616600090815260208190526040808220939093559085168152908120805484929061210d908490612863565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161215991815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061219c5761219c61281e565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156121f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122199190612a14565b8160018151811061222c5761222c61281e565b6001600160a01b03928316602091820292909201015260065461225291309116846115df565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061228b908590600090869030904290600401612a31565b600060405180830381600087803b1580156122a557600080fd5b505af11580156122b9573d6000803e3d6000fd5b505050505050565b6006546122d99030906001600160a01b0316846115df565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612347573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061236c9190612aa2565b5050505050565b804710156123c35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610979565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612410576040519150601f19603f3d011682016040523d82523d6000602084013e612415565b606091505b50509050806109e95760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610979565b600060208083528351808285015260005b818110156124b95785810183015185820160400152820161249d565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115dc57600080fd5b80356124fa816124da565b919050565b6000806040838503121561251257600080fd5b823561251d816124da565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b80151581146115dc57600080fd5b80356124fa81612541565b6000806040838503121561256d57600080fd5b823567ffffffffffffffff8082111561258557600080fd5b818501915085601f83011261259957600080fd5b81356020828211156125ad576125ad61252b565b8160051b604051601f19603f830116810181811086821117156125d2576125d261252b565b6040529283528183019350848101820192898411156125f057600080fd5b948201945b8386101561261557612606866124ef565b855294820194938201936125f5565b9650612624905087820161254f565b9450505050509250929050565b6000806000806080858703121561264757600080fd5b5050823594602084013594506040840135936060013592509050565b60006020828403121561267557600080fd5b813561268081612541565b9392505050565b60006020828403121561269957600080fd5b8135612680816124da565b6000806000606084860312156126b957600080fd5b83356126c4816124da565b925060208401356126d4816124da565b929592945050506040919091013590565b600080604083850312156126f857600080fd5b8235612703816124da565b9150602083013561271381612541565b809150509250929050565b60006020828403121561273057600080fd5b5035919050565b6000806040838503121561274a57600080fd5b8235612755816124da565b91506020830135612713816124da565b60008060006060848603121561277a57600080fd5b505081359360208301359350604090920135919050565b600080604083850312156127a457600080fd5b823561251d81612541565b600181811c908216806127c357607f821691505b6020821081036127e357634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161285c5761285c612834565b5060010190565b8082018082111561094957610949612834565b60208082526022908201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604082015261737360f01b606082015260800190565b8181038181111561094957610949612834565b600181815b808511156129065781600019048211156128ec576128ec612834565b808516156128f957918102915b93841c93908002906128d0565b509250929050565b60008261291d57506001610949565b8161292a57506000610949565b8160018114612940576002811461294a57612966565b6001915050610949565b60ff84111561295b5761295b612834565b50506001821b610949565b5060208310610133831016604e8410600b8410161715612989575081810a610949565b61299383836128cb565b80600019048211156129a7576129a7612834565b029392505050565b600061268060ff84168361290e565b808202811582820484141761094957610949612834565b6000602082840312156129e757600080fd5b815161268081612541565b600082612a0f57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612a2657600080fd5b8151612680816124da565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612a815784516001600160a01b031683529383019391830191600101612a5c565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612ab757600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220d108e4a10392e53d8c4926fbc5374a67cfdc206a1160a57cd633b8523b953d6364736f6c63430008120033

Deployed Bytecode Sourcemap

11824:13272:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2455:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14039:161;;;;;;;;;;-1:-1:-1;14039:161:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;14039:161:0;1162:187:1;23915:202:0;;;;;;;;;;-1:-1:-1;23915:202:0;;;;;:::i;:::-;;:::i;:::-;;22153:321;;;;;;;;;;-1:-1:-1;22153:321:0;;;;;:::i;:::-;;:::i;21382:152::-;;;;;;;;;;-1:-1:-1;21382:152:0;;;;;:::i;:::-;;:::i;12090:53::-;;;;;;;;;;;;;;;;;;;3720:25:1;;;3708:2;3693:18;12090:53:0;3574:177:1;3575:108:0;;;;;;;;;;-1:-1:-1;3663:12:0;;3575:108;;23362:183;;;;;;;;;;-1:-1:-1;23362:183:0;;;;;:::i;:::-;;:::i;22482:222::-;;;;;;;;;;;;;:::i;24627:165::-;;;;;;;;;;;;;:::i;14208:448::-;;;;;;;;;;-1:-1:-1;14208:448:0;;;;;:::i;:::-;;:::i;12300:28::-;;;;;;;;;;;;;;;;12568:68;;;;;;;;;;-1:-1:-1;12568:68:0;;;;-1:-1:-1;;;;;12568:68:0;;;;;;-1:-1:-1;;;;;4633:32:1;;;4615:51;;4603:2;4588:18;12568:68:0;4469:203:1;3417:93:0;;;;;;;;;;-1:-1:-1;3417:93:0;;3500:2;4819:36:1;;4807:2;4792:18;3417:93:0;4677:184:1;23787:120:0;;;;;;;;;;-1:-1:-1;23787:120:0;;;;;:::i;:::-;;:::i;14664:248::-;;;;;;;;;;-1:-1:-1;14664:248:0;;;;;:::i;:::-;;:::i;21542:280::-;;;;;;;;;;-1:-1:-1;21542:280:0;;;;;:::i;:::-;;:::i;12047:34::-;;;;;;;;;;-1:-1:-1;12047:34:0;;;;-1:-1:-1;;;12047:34:0;;;;;;12198:42;;;;;;;;;;;;;;;;12247:44;;;;;;;;;;;;;;;;12150:41;;;;;;;;;;;;;;;;3746:127;;;;;;;;;;-1:-1:-1;3746:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3847:18:0;3820:7;3847:18;;;;;;;;;;;;3746:127;10487:94;;;;;;;;;;;;;:::i;12859:40::-;;;;;;;;;;-1:-1:-1;12859:40:0;;;;;;;;;;;;;;;;;;;5669:25:1;;;5725:2;5710:18;;5703:34;;;;5753:18;;;5746:34;5811:2;5796:18;;5789:34;5656:3;5641:19;12859:40:0;5438:391:1;12409:75:0;;;;;;;;;;-1:-1:-1;12409:75:0;;;;-1:-1:-1;;;;;12409:75:0;;;12643:79;;;;;;;;;;;;12680:42;12643:79;;24800:238;;;;;;;;;;-1:-1:-1;24800:238:0;;;;;:::i;:::-;;:::i;10264:87::-;;;;;;;;;;-1:-1:-1;10337:6:0;;-1:-1:-1;;;;;10337:6:0;10264:87;;12492:69;;;;;;;;;;-1:-1:-1;12492:69:0;;;;-1:-1:-1;;;;;12492:69:0;;;2674:104;;;;;;;;;;;;;:::i;21830:315::-;;;;;;;;;;-1:-1:-1;21830:315:0;;;;;:::i;:::-;;:::i;14920:410::-;;;;;;;;;;-1:-1:-1;14920:410:0;;;;;:::i;:::-;;:::i;11936:19::-;;;;;;;;;;-1:-1:-1;11936:19:0;;;;-1:-1:-1;;;;;11936:19:0;;;15338:165;;;;;;;;;;-1:-1:-1;15338:165:0;;;;;:::i;:::-;;:::i;22970:195::-;;;;;;;;;;-1:-1:-1;22970:195:0;;;;;:::i;:::-;;:::i;23173:181::-;;;;;;;;;;-1:-1:-1;23173:181:0;;;;;:::i;:::-;;:::i;12959:41::-;;;;;;;;;;-1:-1:-1;12959:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13119:39;;;;;;;;;;;;;;;;4365:201;;;;;;;;;;-1:-1:-1;4365:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;4531:18:0;;;4499:7;4531:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4365:201;24125:494;;;;;;;;;;-1:-1:-1;24125:494:0;;;;;:::i;:::-;;:::i;23553:226::-;;;;;;;;;;-1:-1:-1;23553:226:0;;;;;:::i;:::-;;:::i;22712:250::-;;;;;;;;;;-1:-1:-1;22712:250:0;;;;;:::i;:::-;;:::i;13078:34::-;;;;;;;;;;-1:-1:-1;13078:34:0;;;;;;;;10589:192;;;;;;;;;;-1:-1:-1;10589:192:0;;;;;:::i;:::-;;:::i;12906:44::-;;;;;;;;;;-1:-1:-1;12906:44:0;;;;;;;;;;;;;;;11908:21;;;;;;;;;;-1:-1:-1;11908:21:0;;;;-1:-1:-1;;;;;11908:21:0;;;12002:38;;;;;;;;;;-1:-1:-1;12002:38:0;;;;-1:-1:-1;;;12002:38:0;;;;;;2455:100;2509:13;2542:5;2535:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2455:100;:::o;14039:161::-;14114:4;14131:39;257:10;14154:7;14163:6;14131:8;:39::i;:::-;-1:-1:-1;14188:4:0;14039:161;;;;;:::o;23915:202::-;10337:6;;-1:-1:-1;;;;;10337:6:0;257:10;10399:23;10391:68;;;;-1:-1:-1;;;10391:68:0;;;;;;;:::i;:::-;;;;;;;;;24012:9:::1;24007:103;24031:8;:15;24027:1;:19;24007:103;;;24093:5;24068:9;:22;24078:8;24087:1;24078:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;24068:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;24068:22:0;:30;;-1:-1:-1;;24068:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24048:3;::::1;::::0;::::1;:::i;:::-;;;;24007:103;;;;23915:202:::0;;:::o;22153:321::-;10337:6;;-1:-1:-1;;;;;10337:6:0;257:10;10399:23;10391:68;;;;-1:-1:-1;;;10391:68:0;;;;;;;:::i;:::-;22327:42:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;22315:9:::1;:54:::0;;;;;;;;;;;;;;;22430:2:::1;22364:4:::0;22358:3;22389:23:::1;22345:10:::0;22333;22389:23:::1;:::i;:::-;:29;;;;:::i;:::-;:36;;;;:::i;:::-;22388:44;;22380:86;;;::::0;-1:-1:-1;;;22380:86:0;;8567:2:1;22380:86:0::1;::::0;::::1;8549:21:1::0;8606:2;8586:18;;;8579:30;8645:31;8625:18;;;8618:59;8694:18;;22380:86:0::1;8365:353:1::0;22380:86:0::1;22153:321:::0;;;;:::o;21382:152::-;10337:6;;-1:-1:-1;;;;;10337:6:0;257:10;10399:23;10391:68;;;;-1:-1:-1;;;10391:68:0;;;;;;;:::i;:::-;21500:18:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;21500:26:0::1;-1:-1:-1::0;;;;21500:26:0;;::::1;::::0;;;::::1;::::0;;21382:152::o;23362:183::-;10337:6;;-1:-1:-1;;;;;10337:6:0;257:10;10399:23;10391:68;;;;-1:-1:-1;;;10391:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23444:23:0;::::1;23436:69;;;;-1:-1:-1::0;;;23436:69:0::1;;;;;;;:::i;:::-;23516:9;:21:::0;;-1:-1:-1;;;;;;23516:21:0::1;-1:-1:-1::0;;;;;23516:21:0;;;::::1;::::0;;;::::1;::::0;;23362:183::o;22482:222::-;10337:6;;-1:-1:-1;;;;;10337:6:0;257:10;10399:23;10391:68;;;;-1:-1:-1;;;10391:68:0;;;;;;;:::i;:::-;22546:14:::1;::::0;-1:-1:-1;;;22546:14:0;::::1;;;22545:15;22537:52;;;::::0;-1:-1:-1;;;22537:52:0;;9328:2:1;22537:52:0::1;::::0;::::1;9310:21:1::0;9367:2;9347:18;;;9340:30;9406:26;9386:18;;;9379:54;9450:18;;22537:52:0::1;9126:348:1::0;22537:52:0::1;22600:14;:21:::0;;-1:-1:-1;;;;22632:25:0;-1:-1:-1;;;22632:25:0;;;22684:12:::1;22668:13;:28:::0;22482:222::o;24627:165::-;10337:6;;-1:-1:-1;;;;;10337:6:0;257:10;10399:23;10391:68;;;;-1:-1:-1;;;10391:68:0;;;;;;;:::i;:::-;24707:21:::1;24747:7;10337:6:::0;;-1:-1:-1;;;;;10337:6:0;;10264:87;24747:7:::1;-1:-1:-1::0;;;;;24739:25:0::1;:45;24765:18;24739:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;24667:125;24627:165::o:0;14208:448::-;14340:4;14357:36;14367:6;14375:9;14386:6;14357:9;:36::i;:::-;-1:-1:-1;;;;;14433:19:0;;14406:24;14433:19;;;:11;:19;;;;;;;;257:10;14433:33;;;;;;;;14485:26;;;;14477:79;;;;-1:-1:-1;;;14477:79:0;;9681:2:1;14477:79:0;;;9663:21:1;9720:2;9700:18;;;9693:30;9759:34;9739:18;;;9732:62;-1:-1:-1;;;9810:18:1;;;9803:38;9858:19;;14477:79:0;9479:404:1;14477:79:0;14567:57;14576:6;257:10;14598:25;14617:6;14598:16;:25;:::i;:::-;14567:8;:57::i;:::-;-1:-1:-1;14644:4:0;;14208:448;-1:-1:-1;;;;14208:448:0:o;23787:120::-;10337:6;;-1:-1:-1;;;;;10337:6:0;257:10;10399:23;10391:68;;;;-1:-1:-1;;;10391:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23872:19:0;;;::::1;;::::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;23872:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23787:120::o;14664:248::-;257:10;14780:4;14834:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14834:34:0;;;;;;;;;;14780:4;;14802:80;;14825:7;;14834:47;;14871:10;;14834:47;:::i;21542:280::-;10337:6;;-1:-1:-1;;;;;10337:6:0;257:10;10399:23;10391:68;;;;-1:-1:-1;;;10391:68:0;;;;;;;:::i;:::-;21680:3:::1;21666:10;:17;;21658:92;;;::::0;-1:-1:-1;;;21658:92:0;;10223:2:1;21658:92:0::1;::::0;::::1;10205:21:1::0;10262:2;10242:18;;;10235:30;10301:34;10281:18;;;10274:62;10372:32;10352:18;;;10345:60;10422:19;;21658:92:0::1;10021:426:1::0;21658:92:0::1;21800:14;3500:2:::0;21800::::1;:14;:::i;:::-;21787:27;::::0;:10;:27:::1;:::i;:::-;21761:23;:53:::0;-1:-1:-1;21542:280:0:o;10487:94::-;10337:6;;-1:-1:-1;;;;;10337:6:0;257:10;10399:23;10391:68;;;;-1:-1:-1;;;10391:68:0;;;;;;;:::i;:::-;10552:21:::1;10570:1;10552:9;:21::i;:::-;10487:94::o:0;24800:238::-;10337:6;;-1:-1:-1;;;;;10337:6:0;257:10;10399:23;10391:68;;;;-1:-1:-1;;;10391:68:0;;;;;;;:::i;:::-;24913:4:::1;-1:-1:-1::0;;;;;24893:25:0;::::1;::::0;24885:92:::1;;;::::0;-1:-1:-1;;;24885:92:0;;12210:2:1;24885:92:0::1;::::0;::::1;12192:21:1::0;12249:2;12229:18;;;12222:30;12288:34;12268:18;;;12261:62;-1:-1:-1;;;12339:18:1;;;12332:52;12401:19;;24885:92:0::1;12008:418:1::0;24885:92:0::1;24995:8;-1:-1:-1::0;;;;;24988:25:0::1;;25014:7;10337:6:::0;;-1:-1:-1;;;;;10337:6:0;;10264:87;25014:7:::1;24988:42;::::0;-1:-1:-1;;;;;;24988:42:0::1;::::0;;;;;;-1:-1:-1;;;;;12623:32:1;;;24988:42:0::1;::::0;::::1;12605:51:1::0;12672:18;;;12665:34;;;12578:18;;24988:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2674:104::-:0;2730:13;2763:7;2756:14;;;;;:::i;21830:315::-;10337:6;;-1:-1:-1;;;;;10337:6:0;257:10;10399:23;10391:68;;;;-1:-1:-1;;;10391:68:0;;;;;;;:::i;:::-;21999:41:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;21991:5:::1;:49:::0;;;;;;;;;;;;;;;22101:2:::1;22035:4:::0;22030:3;22060:23:::1;22017:10:::0;22005;22060:23:::1;:::i;14920:410::-:0;257:10;15041:4;15090:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15090:34:0;;;;;;;;;;15143:35;;;;15135:85;;;;-1:-1:-1;;;15135:85:0;;13162:2:1;15135:85:0;;;13144:21:1;13201:2;13181:18;;;13174:30;13240:34;13220:18;;;13213:62;-1:-1:-1;;;13291:18:1;;;13284:35;13336:19;;15135:85:0;12960:401:1;15135:85:0;15231:67;257:10;15254:7;15263:34;15282:15;15263:16;:34;:::i;15231:67::-;-1:-1:-1;15318:4:0;;14920:410;-1:-1:-1;;;14920:410:0:o;15338:165::-;15416:4;15433:40;15443:10;15455:9;15466:6;15433:9;:40::i;22970:195::-;10337:6;;-1:-1:-1;;;;;10337:6:0;257:10;10399:23;10391:68;;;;-1:-1:-1;;;10391:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23058:23:0;::::1;23050:69;;;;-1:-1:-1::0;;;23050:69:0::1;;;;;;;:::i;:::-;23130:15;:27:::0;;-1:-1:-1;;;;;;23130:27:0::1;-1:-1:-1::0;;;;;23130:27:0;;;::::1;::::0;;;::::1;::::0;;22970:195::o;23173:181::-;10337:6;;-1:-1:-1;;;;;10337:6:0;257:10;10399:23;10391:68;;;;-1:-1:-1;;;10391:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23254:23:0;::::1;23246:69;;;;-1:-1:-1::0;;;23246:69:0::1;;;;;;;:::i;:::-;23326:8;:20:::0;;-1:-1:-1;;;;;;23326:20:0::1;-1:-1:-1::0;;;;;23326:20:0;;;::::1;::::0;;;::::1;::::0;;23173:181::o;24125:494::-;10337:6;;-1:-1:-1;;;;;10337:6:0;257:10;10399:23;10391:68;;;;-1:-1:-1;;;10391:68:0;;;;;;;:::i;:::-;24251:3:::1;24241:6;:13;;24233:65;;;::::0;-1:-1:-1;;;24233:65:0;;13568:2:1;24233:65:0::1;::::0;::::1;13550:21:1::0;13607:2;13587:18;;;13580:30;13646:34;13626:18;;;13619:62;-1:-1:-1;;;13697:18:1;;;13690:37;13744:19;;24233:65:0::1;13366:403:1::0;24233:65:0::1;24328:3;24317:7;:14;;24309:67;;;::::0;-1:-1:-1;;;24309:67:0;;13976:2:1;24309:67:0::1;::::0;::::1;13958:21:1::0;14015:2;13995:18;;;13988:30;14054:34;14034:18;;;14027:62;-1:-1:-1;;;14105:18:1;;;14098:38;14153:19;;24309:67:0::1;13774:404:1::0;24309:67:0::1;24408:3;24395:9;:16;;24387:71;;;::::0;-1:-1:-1;;;24387:71:0;;14385:2:1;24387:71:0::1;::::0;::::1;14367:21:1::0;14424:2;14404:18;;;14397:30;14463:34;14443:18;;;14436:62;-1:-1:-1;;;14514:18:1;;;14507:40;14564:19;;24387:71:0::1;14183:406:1::0;24387:71:0::1;24492:14;3500:2:::0;24492::::1;:14;:::i;:::-;24483:23;::::0;:6;:23:::1;:::i;:::-;24469:11;:37:::0;24542:14:::1;3500:2:::0;24542::::1;:14;:::i;:::-;24532:24;::::0;:7;:24:::1;:::i;:::-;24517:12;:39:::0;3500:2;24596:14:::1;::::0;:2:::1;:14;:::i;:::-;24584:26;::::0;:9;:26:::1;:::i;:::-;24567:14;:43:::0;-1:-1:-1;;;24125:494:0:o;23553:226::-;10337:6;;-1:-1:-1;;;;;10337:6:0;257:10;10399:23;10391:68;;;;-1:-1:-1;;;10391:68:0;;;;;;;:::i;:::-;23648:16:::1;:4:::0;23655:9:::1;23648:16;:::i;:::-;23633:12;:31:::0;23675:15:::1;:23:::0;;-1:-1:-1;;23675:23:0::1;::::0;::::1;;;::::0;;23725:3:::1;23717:11:::0;::::1;;23709:62;;;::::0;-1:-1:-1;;;23709:62:0;;14796:2:1;23709:62:0::1;::::0;::::1;14778:21:1::0;14835:2;14815:18;;;14808:30;14874:34;14854:18;;;14847:62;-1:-1:-1;;;14925:18:1;;;14918:36;14971:19;;23709:62:0::1;14594:402:1::0;22712:250:0;10337:6;;-1:-1:-1;;;;;10337:6:0;257:10;10399:23;10391:68;;;;-1:-1:-1;;;10391:68:0;;;;;;;:::i;:::-;22794:14:::1;::::0;-1:-1:-1;;;22794:14:0;::::1;;;22793:15;22785:65;;;::::0;-1:-1:-1;;;22785:65:0;;15203:2:1;22785:65:0::1;::::0;::::1;15185:21:1::0;15242:2;15222:18;;;15215:30;15281:34;15261:18;;;15254:62;-1:-1:-1;;;15332:18:1;;;15325:35;15377:19;;22785:65:0::1;15001:401:1::0;22785:65:0::1;22881:1;22869:9;:13;22861:62;;;::::0;-1:-1:-1;;;22861:62:0;;15609:2:1;22861:62:0::1;::::0;::::1;15591:21:1::0;15648:2;15628:18;;;15621:30;15687:34;15667:18;;;15660:62;-1:-1:-1;;;15738:18:1;;;15731:35;15783:19;;22861:62:0::1;15407:401:1::0;22861:62:0::1;22934:8;:20:::0;22712:250::o;10589:192::-;10337:6;;-1:-1:-1;;;;;10337:6:0;257:10;10399:23;10391:68;;;;-1:-1:-1;;;10391:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10678:22:0;::::1;10670:73;;;::::0;-1:-1:-1;;;10670:73:0;;16015:2:1;10670:73:0::1;::::0;::::1;15997:21:1::0;16054:2;16034:18;;;16027:30;16093:34;16073:18;;;16066:62;-1:-1:-1;;;16144:18:1;;;16137:36;16190:19;;10670:73:0::1;15813:402:1::0;10670:73:0::1;10754:19;10764:8;10754:9;:19::i;:::-;10589:192:::0;:::o;9297:380::-;-1:-1:-1;;;;;9433:19:0;;9425:68;;;;-1:-1:-1;;;9425:68:0;;16422:2:1;9425:68:0;;;16404:21:1;16461:2;16441:18;;;16434:30;16500:34;16480:18;;;16473:62;-1:-1:-1;;;16551:18:1;;;16544:34;16595:19;;9425:68:0;16220:400:1;9425:68:0;-1:-1:-1;;;;;9512:21:0;;9504:68;;;;-1:-1:-1;;;9504:68:0;;16827:2:1;9504:68:0;;;16809:21:1;16866:2;16846:18;;;16839:30;16905:34;16885:18;;;16878:62;-1:-1:-1;;;16956:18:1;;;16949:32;16998:19;;9504:68:0;16625:398:1;9504:68:0;-1:-1:-1;;;;;9585:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9637:32;;3720:25:1;;;9637:32:0;;3693:18:1;9637:32:0;;;;;;;9297:380;;;:::o;15511:3041::-;15661:1;15652:6;:10;15644:64;;;;-1:-1:-1;;;15644:64:0;;17230:2:1;15644:64:0;;;17212:21:1;17269:2;17249:18;;;17242:30;17308:34;17288:18;;;17281:62;-1:-1:-1;;;17359:18:1;;;17352:39;17408:19;;15644:64:0;17028:405:1;15644:64:0;-1:-1:-1;;;;;15726:17:0;;;;;;:9;:17;;;;;;;;15725:18;:43;;;;-1:-1:-1;;;;;;15748:20:0;;;;;;:9;:20;;;;;;;;15747:21;15725:43;15721:122;;;15793:14;;-1:-1:-1;;;15793:14:0;;;;15785:46;;;;-1:-1:-1;;;15785:46:0;;17640:2:1;15785:46:0;;;17622:21:1;17679:2;17659:18;;;17652:30;-1:-1:-1;;;17698:18:1;;;17691:49;17757:18;;15785:46:0;17438:343:1;15785:46:0;15869:4;;-1:-1:-1;;;;;15859:14:0;;;15869:4;;15859:14;:39;;;;-1:-1:-1;;;;;;15878:20:0;;;;;;:9;:20;;;;;;;;15877:21;15859:39;:54;;;;-1:-1:-1;15903:10:0;;-1:-1:-1;;;15903:10:0;;;;15902:11;15859:54;15855:306;;;15948:11;;15938:6;:21;;15930:63;;;;-1:-1:-1;;;15930:63:0;;17988:2:1;15930:63:0;;;17970:21:1;18027:2;18007:18;;;18000:30;18066:31;18046:18;;;18039:59;18115:18;;15930:63:0;17786:353:1;15930:63:0;16067:14;;16057:6;16034:20;16044:9;-1:-1:-1;;;;;3847:18:0;3820:7;3847:18;;;;;;;;;;;;3746:127;16034:20;:29;;;;:::i;:::-;:47;;16008:141;;;;-1:-1:-1;;;16008:141:0;;18346:2:1;16008:141:0;;;18328:21:1;;;18365:18;;;18358:30;18424:34;18404:18;;;18397:62;18476:18;;16008:141:0;18144:356:1;16008:141:0;16201:4;;-1:-1:-1;;;;;16191:14:0;;;16201:4;;16191:14;;;;:39;;-1:-1:-1;;;;;;16210:20:0;;;;;;:9;:20;;;;;;;;16209:21;16191:39;:61;;;;-1:-1:-1;;;;;;16235:17:0;;;;;;:9;:17;;;;;;;;16234:18;16191:61;:76;;;;-1:-1:-1;16257:10:0;;-1:-1:-1;;;16257:10:0;;;;16256:11;16191:76;16173:677;;;16312:12;;16302:6;:22;;16294:65;;;;-1:-1:-1;;;16294:65:0;;18707:2:1;16294:65:0;;;18689:21:1;18746:2;18726:18;;;18719:30;18785:32;18765:18;;;18758:60;18835:18;;16294:65:0;18505:354:1;16294:65:0;16391:4;;-1:-1:-1;;;;;16378:17:0;;;16391:4;;16378:17;16374:211;;16479:14;;16469:6;16446:20;16456:9;-1:-1:-1;;;;;3847:18:0;3820:7;3847:18;;;;;;;;;;;;3746:127;16446:20;:29;;;;:::i;:::-;:47;;16416:153;;;;-1:-1:-1;;;16416:153:0;;18346:2:1;16416:153:0;;;18328:21:1;;;18365:18;;;18358:30;18424:34;18404:18;;;18397:62;18476:18;;16416:153:0;18144:356:1;16416:153:0;16603:15;;;;16599:240;;;-1:-1:-1;;;;;16678:17:0;;16639:18;16678:17;;;:9;:17;;;;;;16660:35;;:15;:35;:::i;:::-;16639:56;;16736:12;;16722:10;:26;;16714:55;;;;-1:-1:-1;;;16714:55:0;;19066:2:1;16714:55:0;;;19048:21:1;19105:2;19085:18;;;19078:30;-1:-1:-1;;;19124:18:1;;;19117:46;19180:18;;16714:55:0;18864:340:1;16714:55:0;-1:-1:-1;;;;;;16788:17:0;;;;;;:9;:17;;;;;16808:15;16788:35;;16599:240;16862:15;16888:14;16913:11;16935:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16935:25:0;-1:-1:-1;;;;;16994:17:0;;16973;16994;;;:9;:17;;;;;;;;16993:18;:56;;;;-1:-1:-1;;;;;;17029:20:0;;;;;;:9;:20;;;;;;;;17028:21;16993:56;:112;;;;;17097:8;;17081:13;;:24;;;;:::i;:::-;17066:12;:39;16993:112;17193:10;;16973:132;;-1:-1:-1;;;;17193:10:0;;;;;:31;;-1:-1:-1;;;;;;17207:17:0;;;;;;:9;:17;;;;;;;;17193:31;:55;;;-1:-1:-1;;;;;;17228:20:0;;;;;;:9;:20;;;;;;;;17193:55;17189:783;;;17269:1;17263:7;;17189:783;;;17334:4;;-1:-1:-1;;;;;17321:17:0;;;17334:4;;17321:17;:34;;;;;17343:12;17342:13;17321:34;17317:655;;;17521:13;;17477:12;;17521:9;17438:19;17399;;:58;;17438:19;17399:58;:::i;:::-;:90;;;;:::i;:::-;:135;;;;:::i;:::-;17580:24;;;;;;;;17595:9;17580:24;;;;;;;;;;;;;;;;;;;;;;;;17372:162;;-1:-1:-1;17372:162:0;;-1:-1:-1;17580:24:0;-1:-1:-1;17317:655:0;;;17627:12;17622:350;;17781:9;;17753:8;;17781:5;17718:15;17683;;:50;;17718:15;17683:50;:::i;:::-;:78;;;;:::i;:::-;:107;;;;:::i;:::-;17837:20;;;;;;;;17852:5;17837:20;;;;;;;;;;;;;;;;;;;;;;;;17656:134;;-1:-1:-1;17656:134:0;;-1:-1:-1;17837:20:0;-1:-1:-1;17622:350:0;;;17879:12;17875:97;;;17918:9;;;-1:-1:-1;17918:9:0;;-1:-1:-1;17875:97:0;18010:3;17991:15;18000:6;17991;:15;:::i;:::-;17990:23;;;;:::i;:::-;18127:18;;17984:29;;-1:-1:-1;;;;18127:18:0;;;;:36;;;;-1:-1:-1;18159:4:0;;-1:-1:-1;;;;;18149:14:0;;;18159:4;;18149:14;;18127:36;18123:72;;;18165:30;18173:7;18182:12;18165:7;:30::i;:::-;18237:48;18253:6;18261:9;18272:12;18281:3;18272:6;:12;:::i;:::-;18237:15;:48::i;:::-;18300:7;;18296:249;;18372:11;;18368:164;;18404:17;18445:3;18425:16;18434:7;18425:6;:16;:::i;:::-;18424:24;;;;:::i;:::-;18404:44;;18467:49;18483:6;18499:4;18506:9;18467:15;:49::i;:::-;18385:147;18368:164;15633:2919;;;;;15511:3041;;;:::o;10789:173::-;10864:6;;;-1:-1:-1;;;;;10881:17:0;;;-1:-1:-1;;;;;;10881:17:0;;;;;;;10914:40;;10864:6;;;10881:17;10864:6;;10914:40;;10845:16;;10914:40;10834:128;10789:173;:::o;18560:1764::-;13206:10;;-1:-1:-1;;;13206:10:0;;;;13201:110;;13233:10;:17;;-1:-1:-1;;;;13233:17:0;-1:-1:-1;;;13233:17:0;;;18651:49;;18682:7:::1;18651:49;18756:4;18712:23;3847:18:::0;;;;;;;;;;;18796:23:::1;::::0;18777:42;::::1;18773:1544;;18866:1;18840:23;;:27;18836:109;;;-1:-1:-1::0;18906:23:0::1;::::0;18836:109:::1;19016:19;19038:11;:7:::0;19048:1:::1;19038:11;:::i;:::-;19016:33;;19064:32;19158:11;19118:9;:19;;;19100:15;:37;;;;:::i;:::-;19099:70;;;;:::i;:::-;19064:105:::0;-1:-1:-1;19184:14:0::1;19201:42;19064:105:::0;19201:15;:42:::1;:::i;:::-;19184:59:::0;-1:-1:-1;19285:21:0::1;19323:24;19184:59:::0;19323:16:::1;:24::i;:::-;19364:20;19387:38;19411:14:::0;19387:21:::1;:38;:::i;:::-;19364:61;;19440:19;19492:9;:19;;;19478:11;:33;;;;:::i;:::-;19462:50;::::0;:12;:50:::1;:::i;:::-;19440:72;;19527:29;19573:9;:19;;;19559:11;:33;;;;:::i;:::-;19527:65:::0;-1:-1:-1;19613:25:0;;19609:172:::1;;19704:61;19717:24;19743:21;19704:12;:61::i;:::-;19838:19:::0;;19797:20:::1;::::0;19820:15:::1;:11:::0;19834:1:::1;19820:15;:::i;:::-;:37;;;;:::i;:::-;19797:60:::0;-1:-1:-1;19876:16:0;;19872:105:::1;;19921:15;::::0;19913:48:::1;::::0;-1:-1:-1;;;;;19921:15:0::1;19948:12:::0;19913:34:::1;:48::i;:::-;20027:12;::::0;::::1;::::0;19993:13:::1;::::0;20009:15:::1;:11:::0;20023:1:::1;20009:15;:::i;:::-;:30;;;;:::i;:::-;19993:46:::0;-1:-1:-1;20058:9:0;;20054:84:::1;;20096:8;::::0;20088:34:::1;::::0;-1:-1:-1;;;;;20096:8:0::1;20116:5:::0;20088:27:::1;:34::i;:::-;20189:13;::::0;::::1;::::0;20154:14:::1;::::0;20171:15:::1;:11:::0;20185:1:::1;20171:15;:::i;:::-;:31;;;;:::i;:::-;20154:48:::0;-1:-1:-1;20221:10:0;;20217:87:::1;;20260:9;::::0;20252:36:::1;::::0;-1:-1:-1;;;;;20260:9:0::1;20281:6:::0;20252:28:::1;:36::i;:::-;18821:1496;;;;;;;;;;18773:1544;18638:1686;13265:1;13281:10:::0;:18;;-1:-1:-1;;;;13281:18:0;;;18560:1764;;:::o;7878:578::-;-1:-1:-1;;;;;8018:20:0;;8010:70;;;;-1:-1:-1;;;8010:70:0;;19633:2:1;8010:70:0;;;19615:21:1;19672:2;19652:18;;;19645:30;19711:34;19691:18;;;19684:62;-1:-1:-1;;;19762:18:1;;;19755:35;19807:19;;8010:70:0;19431:401:1;8010:70:0;-1:-1:-1;;;;;8099:23:0;;8091:71;;;;-1:-1:-1;;;8091:71:0;;20039:2:1;8091:71:0;;;20021:21:1;20078:2;20058:18;;;20051:30;20117:34;20097:18;;;20090:62;-1:-1:-1;;;20168:18:1;;;20161:33;20211:19;;8091:71:0;19837:399:1;8091:71:0;-1:-1:-1;;;;;8199:17:0;;8175:21;8199:17;;;;;;;;;;;8235:23;;;;8227:74;;;;-1:-1:-1;;;8227:74:0;;20443:2:1;8227:74:0;;;20425:21:1;20482:2;20462:18;;;20455:30;20521:34;20501:18;;;20494:62;-1:-1:-1;;;20572:18:1;;;20565:36;20618:19;;8227:74:0;20241:402:1;8227:74:0;8332:22;8348:6;8332:13;:22;:::i;:::-;-1:-1:-1;;;;;8312:17:0;;;:9;:17;;;;;;;;;;;:42;;;;8365:20;;;;;;;;:30;;8389:6;;8312:9;8365:30;;8389:6;;8365:30;:::i;:::-;;;;;;;;8430:9;-1:-1:-1;;;;;8413:35:0;8422:6;-1:-1:-1;;;;;8413:35:0;;8441:6;8413:35;;;;3720:25:1;;3708:2;3693:18;;3574:177;8413:35:0;;;;;;;;7999:457;7878:578;;;:::o;20332:534::-;20482:16;;;20496:1;20482:16;;;;;;;;20458:21;;20482:16;;;;;;;;;;-1:-1:-1;20482:16:0;20458:40;;20527:4;20509;20514:1;20509:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20509:23:0;;;:7;;;;;;;;;;:23;;;;20553:6;;:13;;;-1:-1:-1;;;20553:13:0;;;;:6;;;;;:11;;:13;;;;;20509:7;;20553:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20543:4;20548:1;20543:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20543:23:0;;;:7;;;;;;;;;:23;20611:6;;20579:53;;20596:4;;20611:6;20620:11;20579:8;:53::i;:::-;20671:6;;:187;;-1:-1:-1;;;20671:187:0;;-1:-1:-1;;;;;20671:6:0;;;;:57;;:187;;20743:11;;20671:6;;20785:4;;20812;;20832:15;;20671:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20387:479;20332:534;:::o;20874:500::-;21054:6;;21022:53;;21039:4;;-1:-1:-1;;;;;21054:6:0;21063:11;21022:8;:53::i;:::-;21118:6;;:248;;-1:-1:-1;;;21118:248:0;;21183:4;21118:248;;;22230:34:1;22280:18;;;22273:34;;;21118:6:0;22323:18:1;;;22316:34;;;22366:18;;;22359:34;12680:42:0;22409:19:1;;;22402:44;21340:15:0;22462:19:1;;;22455:35;-1:-1:-1;;;;;21118:6:0;;;;:22;;21149:9;;22164:19:1;;21118:248:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20874:500;;:::o;9707:319::-;9822:6;9797:21;:31;;9789:73;;;;-1:-1:-1;;;9789:73:0;;23014:2:1;9789:73:0;;;22996:21:1;23053:2;23033:18;;;23026:30;23092:31;23072:18;;;23065:59;23141:18;;9789:73:0;22812:353:1;9789:73:0;9876:12;9894:9;-1:-1:-1;;;;;9894:14:0;9917:6;9894:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9875:54;;;9948:7;9940:78;;;;-1:-1:-1;;;9940:78:0;;23582:2:1;9940:78:0;;;23564:21:1;23621:2;23601:18;;;23594:30;23660:34;23640:18;;;23633:62;23731:28;23711:18;;;23704:56;23777:19;;9940:78:0;23380:422:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1354:127::-;1415:10;1410:3;1406:20;1403:1;1396:31;1446:4;1443:1;1436:15;1470:4;1467:1;1460:15;1486:118;1572:5;1565:13;1558:21;1551:5;1548:32;1538:60;;1594:1;1591;1584:12;1609:128;1674:20;;1703:28;1674:20;1703:28;:::i;1742:1191::-;1832:6;1840;1893:2;1881:9;1872:7;1868:23;1864:32;1861:52;;;1909:1;1906;1899:12;1861:52;1949:9;1936:23;1978:18;2019:2;2011:6;2008:14;2005:34;;;2035:1;2032;2025:12;2005:34;2073:6;2062:9;2058:22;2048:32;;2118:7;2111:4;2107:2;2103:13;2099:27;2089:55;;2140:1;2137;2130:12;2089:55;2176:2;2163:16;2198:4;2221:2;2217;2214:10;2211:36;;;2227:18;;:::i;:::-;2273:2;2270:1;2266:10;2305:2;2299:9;2368:2;2364:7;2359:2;2355;2351:11;2347:25;2339:6;2335:38;2423:6;2411:10;2408:22;2403:2;2391:10;2388:18;2385:46;2382:72;;;2434:18;;:::i;:::-;2470:2;2463:22;2520:18;;;2554:15;;;;-1:-1:-1;2596:11:1;;;2592:20;;;2624:19;;;2621:39;;;2656:1;2653;2646:12;2621:39;2680:11;;;;2700:148;2716:6;2711:3;2708:15;2700:148;;;2782:23;2801:3;2782:23;:::i;:::-;2770:36;;2733:12;;;;2826;;;;2700:148;;;2867:6;-1:-1:-1;2892:35:1;;-1:-1:-1;2908:18:1;;;2892:35;:::i;:::-;2882:45;;;;;;1742:1191;;;;;:::o;2938:385::-;3024:6;3032;3040;3048;3101:3;3089:9;3080:7;3076:23;3072:33;3069:53;;;3118:1;3115;3108:12;3069:53;-1:-1:-1;;3141:23:1;;;3211:2;3196:18;;3183:32;;-1:-1:-1;3262:2:1;3247:18;;3234:32;;3313:2;3298:18;3285:32;;-1:-1:-1;2938:385:1;-1:-1:-1;2938:385:1:o;3328:241::-;3384:6;3437:2;3425:9;3416:7;3412:23;3408:32;3405:52;;;3453:1;3450;3443:12;3405:52;3492:9;3479:23;3511:28;3533:5;3511:28;:::i;:::-;3558:5;3328:241;-1:-1:-1;;;3328:241:1:o;3756:247::-;3815:6;3868:2;3856:9;3847:7;3843:23;3839:32;3836:52;;;3884:1;3881;3874:12;3836:52;3923:9;3910:23;3942:31;3967:5;3942:31;:::i;4008:456::-;4085:6;4093;4101;4154:2;4142:9;4133:7;4129:23;4125:32;4122:52;;;4170:1;4167;4160:12;4122:52;4209:9;4196:23;4228:31;4253:5;4228:31;:::i;:::-;4278:5;-1:-1:-1;4335:2:1;4320:18;;4307:32;4348:33;4307:32;4348:33;:::i;:::-;4008:456;;4400:7;;-1:-1:-1;;;4454:2:1;4439:18;;;;4426:32;;4008:456::o;4866:382::-;4931:6;4939;4992:2;4980:9;4971:7;4967:23;4963:32;4960:52;;;5008:1;5005;4998:12;4960:52;5047:9;5034:23;5066:31;5091:5;5066:31;:::i;:::-;5116:5;-1:-1:-1;5173:2:1;5158:18;;5145:32;5186:30;5145:32;5186:30;:::i;:::-;5235:7;5225:17;;;4866:382;;;;;:::o;5253:180::-;5312:6;5365:2;5353:9;5344:7;5340:23;5336:32;5333:52;;;5381:1;5378;5371:12;5333:52;-1:-1:-1;5404:23:1;;5253:180;-1:-1:-1;5253:180:1:o;5834:388::-;5902:6;5910;5963:2;5951:9;5942:7;5938:23;5934:32;5931:52;;;5979:1;5976;5969:12;5931:52;6018:9;6005:23;6037:31;6062:5;6037:31;:::i;:::-;6087:5;-1:-1:-1;6144:2:1;6129:18;;6116:32;6157:33;6116:32;6157:33;:::i;6227:316::-;6304:6;6312;6320;6373:2;6361:9;6352:7;6348:23;6344:32;6341:52;;;6389:1;6386;6379:12;6341:52;-1:-1:-1;;6412:23:1;;;6482:2;6467:18;;6454:32;;-1:-1:-1;6533:2:1;6518:18;;;6505:32;;6227:316;-1:-1:-1;6227:316:1:o;6548:309::-;6613:6;6621;6674:2;6662:9;6653:7;6649:23;6645:32;6642:52;;;6690:1;6687;6680:12;6642:52;6729:9;6716:23;6748:28;6770:5;6748:28;:::i;7085:380::-;7164:1;7160:12;;;;7207;;;7228:61;;7282:4;7274:6;7270:17;7260:27;;7228:61;7335:2;7327:6;7324:14;7304:18;7301:38;7298:161;;7381:10;7376:3;7372:20;7369:1;7362:31;7416:4;7413:1;7406:15;7444:4;7441:1;7434:15;7298:161;;7085:380;;;:::o;7470:356::-;7672:2;7654:21;;;7691:18;;;7684:30;7750:34;7745:2;7730:18;;7723:62;7817:2;7802:18;;7470:356::o;7831:127::-;7892:10;7887:3;7883:20;7880:1;7873:31;7923:4;7920:1;7913:15;7947:4;7944:1;7937:15;7963:127;8024:10;8019:3;8015:20;8012:1;8005:31;8055:4;8052:1;8045:15;8079:4;8076:1;8069:15;8095:135;8134:3;8155:17;;;8152:43;;8175:18;;:::i;:::-;-1:-1:-1;8222:1:1;8211:13;;8095:135::o;8235:125::-;8300:9;;;8321:10;;;8318:36;;;8334:18;;:::i;8723:398::-;8925:2;8907:21;;;8964:2;8944:18;;;8937:30;9003:34;8998:2;8983:18;;8976:62;-1:-1:-1;;;9069:2:1;9054:18;;9047:32;9111:3;9096:19;;8723:398::o;9888:128::-;9955:9;;;9976:11;;;9973:37;;;9990:18;;:::i;10452:422::-;10541:1;10584:5;10541:1;10598:270;10619:7;10609:8;10606:21;10598:270;;;10678:4;10674:1;10670:6;10666:17;10660:4;10657:27;10654:53;;;10687:18;;:::i;:::-;10737:7;10727:8;10723:22;10720:55;;;10757:16;;;;10720:55;10836:22;;;;10796:15;;;;10598:270;;;10602:3;10452:422;;;;;:::o;10879:806::-;10928:5;10958:8;10948:80;;-1:-1:-1;10999:1:1;11013:5;;10948:80;11047:4;11037:76;;-1:-1:-1;11084:1:1;11098:5;;11037:76;11129:4;11147:1;11142:59;;;;11215:1;11210:130;;;;11122:218;;11142:59;11172:1;11163:10;;11186:5;;;11210:130;11247:3;11237:8;11234:17;11231:43;;;11254:18;;:::i;:::-;-1:-1:-1;;11310:1:1;11296:16;;11325:5;;11122:218;;11424:2;11414:8;11411:16;11405:3;11399:4;11396:13;11392:36;11386:2;11376:8;11373:16;11368:2;11362:4;11359:12;11355:35;11352:77;11349:159;;;-1:-1:-1;11461:19:1;;;11493:5;;11349:159;11540:34;11565:8;11559:4;11540:34;:::i;:::-;11610:6;11606:1;11602:6;11598:19;11589:7;11586:32;11583:58;;;11621:18;;:::i;:::-;11659:20;;10879:806;-1:-1:-1;;;10879:806:1:o;11690:140::-;11748:5;11777:47;11818:4;11808:8;11804:19;11798:4;11777:47;:::i;11835:168::-;11908:9;;;11939;;11956:15;;;11950:22;;11936:37;11926:71;;11977:18;;:::i;12710:245::-;12777:6;12830:2;12818:9;12809:7;12805:23;12801:32;12798:52;;;12846:1;12843;12836:12;12798:52;12878:9;12872:16;12897:28;12919:5;12897:28;:::i;19209:217::-;19249:1;19275;19265:132;;19319:10;19314:3;19310:20;19307:1;19300:31;19354:4;19351:1;19344:15;19382:4;19379:1;19372:15;19265:132;-1:-1:-1;19411:9:1;;19209:217::o;20648:251::-;20718:6;20771:2;20759:9;20750:7;20746:23;20742:32;20739:52;;;20787:1;20784;20777:12;20739:52;20819:9;20813:16;20838:31;20863:5;20838:31;:::i;20904:980::-;21166:4;21214:3;21203:9;21199:19;21245:6;21234:9;21227:25;21271:2;21309:6;21304:2;21293:9;21289:18;21282:34;21352:3;21347:2;21336:9;21332:18;21325:31;21376:6;21411;21405:13;21442:6;21434;21427:22;21480:3;21469:9;21465:19;21458:26;;21519:2;21511:6;21507:15;21493:29;;21540:1;21550:195;21564:6;21561:1;21558:13;21550:195;;;21629:13;;-1:-1:-1;;;;;21625:39:1;21613:52;;21720:15;;;;21685:12;;;;21661:1;21579:9;21550:195;;;-1:-1:-1;;;;;;;21801:32:1;;;;21796:2;21781:18;;21774:60;-1:-1:-1;;;21865:3:1;21850:19;21843:35;21762:3;20904:980;-1:-1:-1;;;20904:980:1:o;22501:306::-;22589:6;22597;22605;22658:2;22646:9;22637:7;22633:23;22629:32;22626:52;;;22674:1;22671;22664:12;22626:52;22703:9;22697:16;22687:26;;22753:2;22742:9;22738:18;22732:25;22722:35;;22797:2;22786:9;22782:18;22776:25;22766:35;;22501:306;;;;;:::o

Swarm Source

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