ETH Price: $3,395.93 (+1.37%)
Gas: 6 Gwei

Token

LZRD (LZRD)
 

Overview

Max Total Supply

100,000,000 LZRD

Holders

83

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000377513913 LZRD

Value
$0.00
0x0d4cc5d0a6a42370bdf12748ad2f1a444b7f3adc
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:
LZRD

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;


/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}


/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

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

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

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

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

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


/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 */
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);
}


/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * The default value of {decimals} is 18. To change this, you should override
 * this function so it returns a different value.
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * 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 default value returned by this function, unless
     * it's 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:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, 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}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, 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}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, 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) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, 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) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
    unchecked {
        _approve(owner, spender, currentAllowance - subtractedValue);
    }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * This 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:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
    unchecked {
        _balances[from] = fromBalance - amount;
        // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
        // decrementing then incrementing.
        _balances[to] += amount;
    }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

        _totalSupply += amount;
    unchecked {
        // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
        _balances[account] += amount;
    }
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

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

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
    unchecked {
        _balances[account] = accountBalance - amount;
        // Overflow not possible: amount <= accountBalance <= totalSupply.
        _totalSupply -= amount;
    }

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

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
        unchecked {
            _approve(owner, spender, currentAllowance - amount);
        }
        }
    }

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

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


/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


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


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

    function WETH() external pure returns (address);

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

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

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


contract LZRD is ERC20, Ownable {
    IUniswapV2Router02 public immutable uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public immutable uniswapV2Pair;
    uint256 public unlockTimestamp;
    address public lockWallet;
    bool public tradingActive;

    constructor() ERC20("LZRD", "LZRD") {
        uint256 maxSupply = 100_000_000 ether;
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        _mint(address(this), maxSupply * 95 / 100);
        _mint(msg.sender, maxSupply * 5 / 100);
    }

    receive() external payable {}

    function enableTrading() external payable onlyOwner {
        require(!tradingActive, "Token launched");
        tradingActive = true;
        _approve(address(this), address(uniswapV2Router), type(uint256).max);
        uniswapV2Router.addLiquidityETH{value : msg.value}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            address(this),
            block.timestamp
        );
        unlockTimestamp = block.timestamp + 60 days;
        lockWallet = msg.sender;
        renounceOwnership();
    }

    function _transfer(address from, address to, uint256 amount) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(tradingActive, "Trading is not active");

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

    function unlock() public {
        require(block.timestamp > unlockTimestamp, "Can not unlock now");
        require(msg.sender == lockWallet, "Invalid address");
        IERC20 lp = IERC20(uniswapV2Pair);
        lp.transfer(msg.sender, lp.balanceOf(address(this)));
    }
}

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":[{"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":"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":"enableTrading","outputs":[],"stateMutability":"payable","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":"lockWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152503480156200005857600080fd5b506040518060400160405280600481526020017f4c5a5244000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4c5a5244000000000000000000000000000000000000000000000000000000008152508160039081620000d69190620007d9565b508060049081620000e89190620007d9565b5050506200010b620000ff6200031a60201b60201c565b6200032260201b60201c565b60006a52b7d2dcc80cd2e4000000905060805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000169573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200018f91906200092a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060805173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021f91906200092a565b6040518363ffffffff1660e01b81526004016200023e9291906200096d565b6020604051808303816000875af11580156200025e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028491906200092a565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620002e5306064605f84620002cd9190620009c9565b620002d9919062000a43565b620003e860201b60201c565b62000313336064600584620002fb9190620009c9565b62000307919062000a43565b620003e860201b60201c565b5062000b67565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200045a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004519062000adc565b60405180910390fd5b6200046e600083836200055560201b60201c565b806002600082825462000482919062000afe565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000535919062000b4a565b60405180910390a362000551600083836200055a60201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620005e157607f821691505b602082108103620005f757620005f662000599565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006617fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000622565b6200066d868362000622565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620006ba620006b4620006ae8462000685565b6200068f565b62000685565b9050919050565b6000819050919050565b620006d68362000699565b620006ee620006e582620006c1565b8484546200062f565b825550505050565b600090565b62000705620006f6565b62000712818484620006cb565b505050565b5b818110156200073a576200072e600082620006fb565b60018101905062000718565b5050565b601f82111562000789576200075381620005fd565b6200075e8462000612565b810160208510156200076e578190505b620007866200077d8562000612565b83018262000717565b50505b505050565b600082821c905092915050565b6000620007ae600019846008026200078e565b1980831691505092915050565b6000620007c983836200079b565b9150826002028217905092915050565b620007e4826200055f565b67ffffffffffffffff8111156200080057620007ff6200056a565b5b6200080c8254620005c8565b620008198282856200073e565b600060209050601f8311600181146200085157600084156200083c578287015190505b620008488582620007bb565b865550620008b8565b601f1984166200086186620005fd565b60005b828110156200088b5784890151825560018201915060208501945060208101905062000864565b86831015620008ab5784890151620008a7601f8916826200079b565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008f282620008c5565b9050919050565b6200090481620008e5565b81146200091057600080fd5b50565b6000815190506200092481620008f9565b92915050565b600060208284031215620009435762000942620008c0565b5b6000620009538482850162000913565b91505092915050565b6200096781620008e5565b82525050565b60006040820190506200098460008301856200095c565b6200099360208301846200095c565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620009d68262000685565b9150620009e38362000685565b9250828202620009f38162000685565b9150828204841483151762000a0d5762000a0c6200099a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000a508262000685565b915062000a5d8362000685565b92508262000a705762000a6f62000a14565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ac4601f8362000a7b565b915062000ad18262000a8c565b602082019050919050565b6000602082019050818103600083015262000af78162000ab5565b9050919050565b600062000b0b8262000685565b915062000b188362000685565b925082820190508082111562000b335762000b326200099a565b5b92915050565b62000b448162000685565b82525050565b600060208201905062000b61600083018462000b39565b92915050565b60805160a05161221562000ba26000396000818161066e0152610ac80152600081816105ab0152818161076501526107ac01526122156000f3fe60806040526004361061012e5760003560e01c8063715018a6116100ab578063a69df4b51161006f578063a69df4b5146103e4578063a9059cbb146103fb578063aa082a9d14610438578063bbc0c74214610463578063dd62ed3e1461048e578063f2fde38b146104cb57610135565b8063715018a6146103305780638a8c523c146103475780638da5cb5b1461035157806395d89b411461037c578063a457c2d7146103a757610135565b806323b872dd116100f257806323b872dd14610223578063313ce56714610260578063395093511461028b57806349bd5a5e146102c857806370a08231146102f357610135565b806306fdde031461013a578063095ea7b3146101655780631694505e146101a257806318160ddd146101cd5780631debb253146101f857610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f6104f4565b60405161015c919061155b565b60405180910390f35b34801561017157600080fd5b5061018c60048036038101906101879190611616565b610586565b6040516101999190611671565b60405180910390f35b3480156101ae57600080fd5b506101b76105a9565b6040516101c491906116eb565b60405180910390f35b3480156101d957600080fd5b506101e26105cd565b6040516101ef9190611715565b60405180910390f35b34801561020457600080fd5b5061020d6105d7565b60405161021a919061173f565b60405180910390f35b34801561022f57600080fd5b5061024a6004803603810190610245919061175a565b6105fd565b6040516102579190611671565b60405180910390f35b34801561026c57600080fd5b5061027561062c565b60405161028291906117c9565b60405180910390f35b34801561029757600080fd5b506102b260048036038101906102ad9190611616565b610635565b6040516102bf9190611671565b60405180910390f35b3480156102d457600080fd5b506102dd61066c565b6040516102ea919061173f565b60405180910390f35b3480156102ff57600080fd5b5061031a600480360381019061031591906117e4565b610690565b6040516103279190611715565b60405180910390f35b34801561033c57600080fd5b506103456106d8565b005b61034f6106ec565b005b34801561035d57600080fd5b506103666108bd565b604051610373919061173f565b60405180910390f35b34801561038857600080fd5b506103916108e7565b60405161039e919061155b565b60405180910390f35b3480156103b357600080fd5b506103ce60048036038101906103c99190611616565b610979565b6040516103db9190611671565b60405180910390f35b3480156103f057600080fd5b506103f96109f0565b005b34801561040757600080fd5b50610422600480360381019061041d9190611616565b610be4565b60405161042f9190611671565b60405180910390f35b34801561044457600080fd5b5061044d610c07565b60405161045a9190611715565b60405180910390f35b34801561046f57600080fd5b50610478610c0d565b6040516104859190611671565b60405180910390f35b34801561049a57600080fd5b506104b560048036038101906104b09190611811565b610c20565b6040516104c29190611715565b60405180910390f35b3480156104d757600080fd5b506104f260048036038101906104ed91906117e4565b610ca7565b005b60606003805461050390611880565b80601f016020809104026020016040519081016040528092919081815260200182805461052f90611880565b801561057c5780601f106105515761010080835404028352916020019161057c565b820191906000526020600020905b81548152906001019060200180831161055f57829003601f168201915b5050505050905090565b600080610591610d2a565b905061059e818585610d32565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610608610d2a565b9050610615858285610efb565b610620858585610f87565b60019150509392505050565b60006012905090565b600080610640610d2a565b90506106618185856106528589610c20565b61065c91906118e0565b610d32565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106e0611107565b6106ea6000611185565b565b6106f4611107565b600760149054906101000a900460ff1615610744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073b90611960565b60405180910390fd5b6001600760146101000a81548160ff0219169083151502179055506107aa307f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610d32565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71934306107f130610690565b60008030426040518863ffffffff1660e01b8152600401610817969594939291906119bb565b60606040518083038185885af1158015610835573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061085a9190611a31565b505050624f1a004261086c91906118e0565b60068190555033600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506108bb6106d8565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546108f690611880565b80601f016020809104026020016040519081016040528092919081815260200182805461092290611880565b801561096f5780601f106109445761010080835404028352916020019161096f565b820191906000526020600020905b81548152906001019060200180831161095257829003601f168201915b5050505050905090565b600080610984610d2a565b905060006109928286610c20565b9050838110156109d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ce90611af6565b60405180910390fd5b6109e48286868403610d32565b60019250505092915050565b6006544211610a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2b90611b62565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ac4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abb90611bce565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000090508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b3f919061173f565b602060405180830381865afa158015610b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b809190611bee565b6040518363ffffffff1660e01b8152600401610b9d929190611c1b565b6020604051808303816000875af1158015610bbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be09190611c70565b5050565b600080610bef610d2a565b9050610bfc818585610f87565b600191505092915050565b60065481565b600760149054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610caf611107565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1590611d0f565b60405180910390fd5b610d2781611185565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610da1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9890611da1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0790611e33565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610eee9190611715565b60405180910390a3505050565b6000610f078484610c20565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f815781811015610f73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6a90611e9f565b60405180910390fd5b610f808484848403610d32565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fed90611f31565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105c90611fc3565b60405180910390fd5b600081116110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109f90612055565b60405180910390fd5b600760149054906101000a900460ff166110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee906120c1565b60405180910390fd5b61110283838361124b565b505050565b61110f610d2a565b73ffffffffffffffffffffffffffffffffffffffff1661112d6108bd565b73ffffffffffffffffffffffffffffffffffffffff1614611183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117a9061212d565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b190611f31565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611329576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132090611fc3565b60405180910390fd5b6113348383836114c1565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156113ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b1906121bf565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114a89190611715565b60405180910390a36114bb8484846114c6565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156115055780820151818401526020810190506114ea565b60008484015250505050565b6000601f19601f8301169050919050565b600061152d826114cb565b61153781856114d6565b93506115478185602086016114e7565b61155081611511565b840191505092915050565b600060208201905081810360008301526115758184611522565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006115ad82611582565b9050919050565b6115bd816115a2565b81146115c857600080fd5b50565b6000813590506115da816115b4565b92915050565b6000819050919050565b6115f3816115e0565b81146115fe57600080fd5b50565b600081359050611610816115ea565b92915050565b6000806040838503121561162d5761162c61157d565b5b600061163b858286016115cb565b925050602061164c85828601611601565b9150509250929050565b60008115159050919050565b61166b81611656565b82525050565b60006020820190506116866000830184611662565b92915050565b6000819050919050565b60006116b16116ac6116a784611582565b61168c565b611582565b9050919050565b60006116c382611696565b9050919050565b60006116d5826116b8565b9050919050565b6116e5816116ca565b82525050565b600060208201905061170060008301846116dc565b92915050565b61170f816115e0565b82525050565b600060208201905061172a6000830184611706565b92915050565b611739816115a2565b82525050565b60006020820190506117546000830184611730565b92915050565b6000806000606084860312156117735761177261157d565b5b6000611781868287016115cb565b9350506020611792868287016115cb565b92505060406117a386828701611601565b9150509250925092565b600060ff82169050919050565b6117c3816117ad565b82525050565b60006020820190506117de60008301846117ba565b92915050565b6000602082840312156117fa576117f961157d565b5b6000611808848285016115cb565b91505092915050565b600080604083850312156118285761182761157d565b5b6000611836858286016115cb565b9250506020611847858286016115cb565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061189857607f821691505b6020821081036118ab576118aa611851565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006118eb826115e0565b91506118f6836115e0565b925082820190508082111561190e5761190d6118b1565b5b92915050565b7f546f6b656e206c61756e63686564000000000000000000000000000000000000600082015250565b600061194a600e836114d6565b915061195582611914565b602082019050919050565b600060208201905081810360008301526119798161193d565b9050919050565b6000819050919050565b60006119a56119a061199b84611980565b61168c565b6115e0565b9050919050565b6119b58161198a565b82525050565b600060c0820190506119d06000830189611730565b6119dd6020830188611706565b6119ea60408301876119ac565b6119f760608301866119ac565b611a046080830185611730565b611a1160a0830184611706565b979650505050505050565b600081519050611a2b816115ea565b92915050565b600080600060608486031215611a4a57611a4961157d565b5b6000611a5886828701611a1c565b9350506020611a6986828701611a1c565b9250506040611a7a86828701611a1c565b9150509250925092565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611ae06025836114d6565b9150611aeb82611a84565b604082019050919050565b60006020820190508181036000830152611b0f81611ad3565b9050919050565b7f43616e206e6f7420756e6c6f636b206e6f770000000000000000000000000000600082015250565b6000611b4c6012836114d6565b9150611b5782611b16565b602082019050919050565b60006020820190508181036000830152611b7b81611b3f565b9050919050565b7f496e76616c696420616464726573730000000000000000000000000000000000600082015250565b6000611bb8600f836114d6565b9150611bc382611b82565b602082019050919050565b60006020820190508181036000830152611be781611bab565b9050919050565b600060208284031215611c0457611c0361157d565b5b6000611c1284828501611a1c565b91505092915050565b6000604082019050611c306000830185611730565b611c3d6020830184611706565b9392505050565b611c4d81611656565b8114611c5857600080fd5b50565b600081519050611c6a81611c44565b92915050565b600060208284031215611c8657611c8561157d565b5b6000611c9484828501611c5b565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611cf96026836114d6565b9150611d0482611c9d565b604082019050919050565b60006020820190508181036000830152611d2881611cec565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611d8b6024836114d6565b9150611d9682611d2f565b604082019050919050565b60006020820190508181036000830152611dba81611d7e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611e1d6022836114d6565b9150611e2882611dc1565b604082019050919050565b60006020820190508181036000830152611e4c81611e10565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611e89601d836114d6565b9150611e9482611e53565b602082019050919050565b60006020820190508181036000830152611eb881611e7c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611f1b6025836114d6565b9150611f2682611ebf565b604082019050919050565b60006020820190508181036000830152611f4a81611f0e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611fad6023836114d6565b9150611fb882611f51565b604082019050919050565b60006020820190508181036000830152611fdc81611fa0565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061203f6029836114d6565b915061204a82611fe3565b604082019050919050565b6000602082019050818103600083015261206e81612032565b9050919050565b7f54726164696e67206973206e6f74206163746976650000000000000000000000600082015250565b60006120ab6015836114d6565b91506120b682612075565b602082019050919050565b600060208201905081810360008301526120da8161209e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006121176020836114d6565b9150612122826120e1565b602082019050919050565b600060208201905081810360008301526121468161210a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006121a96026836114d6565b91506121b48261214d565b604082019050919050565b600060208201905081810360008301526121d88161219c565b905091905056fea26469706673582212209a53d385268b1ccb19725c6835b9a86aafffa16115fb9cd865d5ac4fccac3ebf64736f6c63430008130033

Deployed Bytecode

0x60806040526004361061012e5760003560e01c8063715018a6116100ab578063a69df4b51161006f578063a69df4b5146103e4578063a9059cbb146103fb578063aa082a9d14610438578063bbc0c74214610463578063dd62ed3e1461048e578063f2fde38b146104cb57610135565b8063715018a6146103305780638a8c523c146103475780638da5cb5b1461035157806395d89b411461037c578063a457c2d7146103a757610135565b806323b872dd116100f257806323b872dd14610223578063313ce56714610260578063395093511461028b57806349bd5a5e146102c857806370a08231146102f357610135565b806306fdde031461013a578063095ea7b3146101655780631694505e146101a257806318160ddd146101cd5780631debb253146101f857610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f6104f4565b60405161015c919061155b565b60405180910390f35b34801561017157600080fd5b5061018c60048036038101906101879190611616565b610586565b6040516101999190611671565b60405180910390f35b3480156101ae57600080fd5b506101b76105a9565b6040516101c491906116eb565b60405180910390f35b3480156101d957600080fd5b506101e26105cd565b6040516101ef9190611715565b60405180910390f35b34801561020457600080fd5b5061020d6105d7565b60405161021a919061173f565b60405180910390f35b34801561022f57600080fd5b5061024a6004803603810190610245919061175a565b6105fd565b6040516102579190611671565b60405180910390f35b34801561026c57600080fd5b5061027561062c565b60405161028291906117c9565b60405180910390f35b34801561029757600080fd5b506102b260048036038101906102ad9190611616565b610635565b6040516102bf9190611671565b60405180910390f35b3480156102d457600080fd5b506102dd61066c565b6040516102ea919061173f565b60405180910390f35b3480156102ff57600080fd5b5061031a600480360381019061031591906117e4565b610690565b6040516103279190611715565b60405180910390f35b34801561033c57600080fd5b506103456106d8565b005b61034f6106ec565b005b34801561035d57600080fd5b506103666108bd565b604051610373919061173f565b60405180910390f35b34801561038857600080fd5b506103916108e7565b60405161039e919061155b565b60405180910390f35b3480156103b357600080fd5b506103ce60048036038101906103c99190611616565b610979565b6040516103db9190611671565b60405180910390f35b3480156103f057600080fd5b506103f96109f0565b005b34801561040757600080fd5b50610422600480360381019061041d9190611616565b610be4565b60405161042f9190611671565b60405180910390f35b34801561044457600080fd5b5061044d610c07565b60405161045a9190611715565b60405180910390f35b34801561046f57600080fd5b50610478610c0d565b6040516104859190611671565b60405180910390f35b34801561049a57600080fd5b506104b560048036038101906104b09190611811565b610c20565b6040516104c29190611715565b60405180910390f35b3480156104d757600080fd5b506104f260048036038101906104ed91906117e4565b610ca7565b005b60606003805461050390611880565b80601f016020809104026020016040519081016040528092919081815260200182805461052f90611880565b801561057c5780601f106105515761010080835404028352916020019161057c565b820191906000526020600020905b81548152906001019060200180831161055f57829003601f168201915b5050505050905090565b600080610591610d2a565b905061059e818585610d32565b600191505092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610608610d2a565b9050610615858285610efb565b610620858585610f87565b60019150509392505050565b60006012905090565b600080610640610d2a565b90506106618185856106528589610c20565b61065c91906118e0565b610d32565b600191505092915050565b7f0000000000000000000000003ab47eeb60fb4b1fe217b1d2483be5af0b2cd40581565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106e0611107565b6106ea6000611185565b565b6106f4611107565b600760149054906101000a900460ff1615610744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073b90611960565b60405180910390fd5b6001600760146101000a81548160ff0219169083151502179055506107aa307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610d32565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71934306107f130610690565b60008030426040518863ffffffff1660e01b8152600401610817969594939291906119bb565b60606040518083038185885af1158015610835573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061085a9190611a31565b505050624f1a004261086c91906118e0565b60068190555033600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506108bb6106d8565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546108f690611880565b80601f016020809104026020016040519081016040528092919081815260200182805461092290611880565b801561096f5780601f106109445761010080835404028352916020019161096f565b820191906000526020600020905b81548152906001019060200180831161095257829003601f168201915b5050505050905090565b600080610984610d2a565b905060006109928286610c20565b9050838110156109d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ce90611af6565b60405180910390fd5b6109e48286868403610d32565b60019250505092915050565b6006544211610a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2b90611b62565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ac4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abb90611bce565b60405180910390fd5b60007f0000000000000000000000003ab47eeb60fb4b1fe217b1d2483be5af0b2cd40590508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b3f919061173f565b602060405180830381865afa158015610b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b809190611bee565b6040518363ffffffff1660e01b8152600401610b9d929190611c1b565b6020604051808303816000875af1158015610bbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be09190611c70565b5050565b600080610bef610d2a565b9050610bfc818585610f87565b600191505092915050565b60065481565b600760149054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610caf611107565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1590611d0f565b60405180910390fd5b610d2781611185565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610da1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9890611da1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0790611e33565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610eee9190611715565b60405180910390a3505050565b6000610f078484610c20565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f815781811015610f73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6a90611e9f565b60405180910390fd5b610f808484848403610d32565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fed90611f31565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105c90611fc3565b60405180910390fd5b600081116110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109f90612055565b60405180910390fd5b600760149054906101000a900460ff166110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee906120c1565b60405180910390fd5b61110283838361124b565b505050565b61110f610d2a565b73ffffffffffffffffffffffffffffffffffffffff1661112d6108bd565b73ffffffffffffffffffffffffffffffffffffffff1614611183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117a9061212d565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b190611f31565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611329576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132090611fc3565b60405180910390fd5b6113348383836114c1565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156113ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b1906121bf565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114a89190611715565b60405180910390a36114bb8484846114c6565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156115055780820151818401526020810190506114ea565b60008484015250505050565b6000601f19601f8301169050919050565b600061152d826114cb565b61153781856114d6565b93506115478185602086016114e7565b61155081611511565b840191505092915050565b600060208201905081810360008301526115758184611522565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006115ad82611582565b9050919050565b6115bd816115a2565b81146115c857600080fd5b50565b6000813590506115da816115b4565b92915050565b6000819050919050565b6115f3816115e0565b81146115fe57600080fd5b50565b600081359050611610816115ea565b92915050565b6000806040838503121561162d5761162c61157d565b5b600061163b858286016115cb565b925050602061164c85828601611601565b9150509250929050565b60008115159050919050565b61166b81611656565b82525050565b60006020820190506116866000830184611662565b92915050565b6000819050919050565b60006116b16116ac6116a784611582565b61168c565b611582565b9050919050565b60006116c382611696565b9050919050565b60006116d5826116b8565b9050919050565b6116e5816116ca565b82525050565b600060208201905061170060008301846116dc565b92915050565b61170f816115e0565b82525050565b600060208201905061172a6000830184611706565b92915050565b611739816115a2565b82525050565b60006020820190506117546000830184611730565b92915050565b6000806000606084860312156117735761177261157d565b5b6000611781868287016115cb565b9350506020611792868287016115cb565b92505060406117a386828701611601565b9150509250925092565b600060ff82169050919050565b6117c3816117ad565b82525050565b60006020820190506117de60008301846117ba565b92915050565b6000602082840312156117fa576117f961157d565b5b6000611808848285016115cb565b91505092915050565b600080604083850312156118285761182761157d565b5b6000611836858286016115cb565b9250506020611847858286016115cb565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061189857607f821691505b6020821081036118ab576118aa611851565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006118eb826115e0565b91506118f6836115e0565b925082820190508082111561190e5761190d6118b1565b5b92915050565b7f546f6b656e206c61756e63686564000000000000000000000000000000000000600082015250565b600061194a600e836114d6565b915061195582611914565b602082019050919050565b600060208201905081810360008301526119798161193d565b9050919050565b6000819050919050565b60006119a56119a061199b84611980565b61168c565b6115e0565b9050919050565b6119b58161198a565b82525050565b600060c0820190506119d06000830189611730565b6119dd6020830188611706565b6119ea60408301876119ac565b6119f760608301866119ac565b611a046080830185611730565b611a1160a0830184611706565b979650505050505050565b600081519050611a2b816115ea565b92915050565b600080600060608486031215611a4a57611a4961157d565b5b6000611a5886828701611a1c565b9350506020611a6986828701611a1c565b9250506040611a7a86828701611a1c565b9150509250925092565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611ae06025836114d6565b9150611aeb82611a84565b604082019050919050565b60006020820190508181036000830152611b0f81611ad3565b9050919050565b7f43616e206e6f7420756e6c6f636b206e6f770000000000000000000000000000600082015250565b6000611b4c6012836114d6565b9150611b5782611b16565b602082019050919050565b60006020820190508181036000830152611b7b81611b3f565b9050919050565b7f496e76616c696420616464726573730000000000000000000000000000000000600082015250565b6000611bb8600f836114d6565b9150611bc382611b82565b602082019050919050565b60006020820190508181036000830152611be781611bab565b9050919050565b600060208284031215611c0457611c0361157d565b5b6000611c1284828501611a1c565b91505092915050565b6000604082019050611c306000830185611730565b611c3d6020830184611706565b9392505050565b611c4d81611656565b8114611c5857600080fd5b50565b600081519050611c6a81611c44565b92915050565b600060208284031215611c8657611c8561157d565b5b6000611c9484828501611c5b565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611cf96026836114d6565b9150611d0482611c9d565b604082019050919050565b60006020820190508181036000830152611d2881611cec565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611d8b6024836114d6565b9150611d9682611d2f565b604082019050919050565b60006020820190508181036000830152611dba81611d7e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611e1d6022836114d6565b9150611e2882611dc1565b604082019050919050565b60006020820190508181036000830152611e4c81611e10565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611e89601d836114d6565b9150611e9482611e53565b602082019050919050565b60006020820190508181036000830152611eb881611e7c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611f1b6025836114d6565b9150611f2682611ebf565b604082019050919050565b60006020820190508181036000830152611f4a81611f0e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611fad6023836114d6565b9150611fb882611f51565b604082019050919050565b60006020820190508181036000830152611fdc81611fa0565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061203f6029836114d6565b915061204a82611fe3565b604082019050919050565b6000602082019050818103600083015261206e81612032565b9050919050565b7f54726164696e67206973206e6f74206163746976650000000000000000000000600082015250565b60006120ab6015836114d6565b91506120b682612075565b602082019050919050565b600060208201905081810360008301526120da8161209e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006121176020836114d6565b9150612122826120e1565b602082019050919050565b600060208201905081810360008301526121468161210a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006121a96026836114d6565b91506121b48261214d565b604082019050919050565b600060208201905081810360008301526121d88161219c565b905091905056fea26469706673582212209a53d385268b1ccb19725c6835b9a86aafffa16115fb9cd865d5ac4fccac3ebf64736f6c63430008130033

Deployed Bytecode Sourcemap

20636:1956:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5999:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8359:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20675:116;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7128:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20880:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9140:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6970:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9810:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20798:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7299:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18628:103;;;;;;;;;;;;;:::i;:::-;;21306:569;;;:::i;:::-;;17987:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6218:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10551:424;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22311:278;;;;;;;;;;;;;:::i;:::-;;7632:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20843:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20912:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7888:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18886:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5999:100;6053:13;6086:5;6079:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5999:100;:::o;8359:201::-;8442:4;8459:13;8475:12;:10;:12::i;:::-;8459:28;;8498:32;8507:5;8514:7;8523:6;8498:8;:32::i;:::-;8548:4;8541:11;;;8359:201;;;;:::o;20675:116::-;;;:::o;7128:108::-;7189:7;7216:12;;7209:19;;7128:108;:::o;20880:25::-;;;;;;;;;;;;;:::o;9140:261::-;9237:4;9254:15;9272:12;:10;:12::i;:::-;9254:30;;9295:38;9311:4;9317:7;9326:6;9295:15;:38::i;:::-;9344:27;9354:4;9360:2;9364:6;9344:9;:27::i;:::-;9389:4;9382:11;;;9140:261;;;;;:::o;6970:93::-;7028:5;7053:2;7046:9;;6970:93;:::o;9810:238::-;9898:4;9915:13;9931:12;:10;:12::i;:::-;9915:28;;9954:64;9963:5;9970:7;10007:10;9979:25;9989:5;9996:7;9979:9;:25::i;:::-;:38;;;;:::i;:::-;9954:8;:64::i;:::-;10036:4;10029:11;;;9810:238;;;;:::o;20798:38::-;;;:::o;7299:127::-;7373:7;7400:9;:18;7410:7;7400:18;;;;;;;;;;;;;;;;7393:25;;7299:127;;;:::o;18628:103::-;17873:13;:11;:13::i;:::-;18693:30:::1;18720:1;18693:18;:30::i;:::-;18628:103::o:0;21306:569::-;17873:13;:11;:13::i;:::-;21378::::1;;;;;;;;;;;21377:14;21369:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;21437:4;21421:13;;:20;;;;;;;;;;;;;;;;;;21452:68;21469:4;21484:15;21502:17;21452:8;:68::i;:::-;21531:15;:31;;;21571:9;21604:4;21624:24;21642:4;21624:9;:24::i;:::-;21663:1;21679::::0;21703:4:::1;21723:15;21531:218;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21796:7;21778:15;:25;;;;:::i;:::-;21760:15;:43;;;;21827:10;21814;;:23;;;;;;;;;;;;;;;;;;21848:19;:17;:19::i;:::-;21306:569::o:0;17987:87::-;18033:7;18060:6;;;;;;;;;;;18053:13;;17987:87;:::o;6218:104::-;6274:13;6307:7;6300:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6218:104;:::o;10551:424::-;10644:4;10661:13;10677:12;:10;:12::i;:::-;10661:28;;10700:24;10727:25;10737:5;10744:7;10727:9;:25::i;:::-;10700:52;;10791:15;10771:16;:35;;10763:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;10876:60;10885:5;10892:7;10920:15;10901:16;:34;10876:8;:60::i;:::-;10963:4;10956:11;;;;10551:424;;;;:::o;22311:278::-;22373:15;;22355;:33;22347:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22444:10;;;;;;;;;;;22430:24;;:10;:24;;;22422:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;22485:9;22504:13;22485:33;;22529:2;:11;;;22541:10;22553:2;:12;;;22574:4;22553:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22529:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22336:253;22311:278::o;7632:193::-;7711:4;7728:13;7744:12;:10;:12::i;:::-;7728:28;;7767;7777:5;7784:2;7788:6;7767:9;:28::i;:::-;7813:4;7806:11;;;7632:193;;;;:::o;20843:30::-;;;;:::o;20912:25::-;;;;;;;;;;;;;:::o;7888:151::-;7977:7;8004:11;:18;8016:5;8004:18;;;;;;;;;;;;;;;:27;8023:7;8004:27;;;;;;;;;;;;;;;;7997:34;;7888:151;;;;:::o;18886:201::-;17873:13;:11;:13::i;:::-;18995:1:::1;18975:22;;:8;:22;;::::0;18967:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19051:28;19070:8;19051:18;:28::i;:::-;18886:201:::0;:::o;604:98::-;657:7;684:10;677:17;;604:98;:::o;14472:346::-;14591:1;14574:19;;:5;:19;;;14566:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14672:1;14653:21;;:7;:21;;;14645:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14756:6;14726:11;:18;14738:5;14726:18;;;;;;;;;;;;;;;:27;14745:7;14726:27;;;;;;;;;;;;;;;:36;;;;14794:7;14778:32;;14787:5;14778:32;;;14803:6;14778:32;;;;;;:::i;:::-;;;;;;;;14472:346;;;:::o;15109:407::-;15210:24;15237:25;15247:5;15254:7;15237:9;:25::i;:::-;15210:52;;15297:17;15277:16;:37;15273:236;;15359:6;15339:16;:26;;15331:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15435:51;15444:5;15451:7;15479:6;15460:16;:25;15435:8;:51::i;:::-;15273:236;15199:317;15109:407;;;:::o;21883:420::-;21997:1;21981:18;;:4;:18;;;21973:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22074:1;22060:16;;:2;:16;;;22052:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22144:1;22135:6;:10;22127:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22210:13;;;;;;;;;;;22202:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;22262:33;22278:4;22284:2;22288:6;22262:15;:33::i;:::-;21883:420;;;:::o;18152:132::-;18227:12;:10;:12::i;:::-;18216:23;;:7;:5;:7::i;:::-;:23;;;18208:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18152:132::o;19247:191::-;19321:16;19340:6;;;;;;;;;;;19321:25;;19366:8;19357:6;;:17;;;;;;;;;;;;;;;;;;19421:8;19390:40;;19411:8;19390:40;;;;;;;;;;;;19310:128;19247:191;:::o;11445:782::-;11558:1;11542:18;;:4;:18;;;11534:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11635:1;11621:16;;:2;:16;;;11613:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11690:38;11711:4;11717:2;11721:6;11690:20;:38::i;:::-;11741:19;11763:9;:15;11773:4;11763:15;;;;;;;;;;;;;;;;11741:37;;11812:6;11797:11;:21;;11789:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;11921:6;11907:11;:20;11889:9;:15;11899:4;11889:15;;;;;;;;;;;;;;;:38;;;;12112:6;12095:9;:13;12105:2;12095:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;12158:2;12143:26;;12152:4;12143:26;;;12162:6;12143:26;;;;;;:::i;:::-;;;;;;;;12182:37;12202:4;12208:2;12212:6;12182:19;:37::i;:::-;11523:704;11445:782;;;:::o;16116:91::-;;;;:::o;16811:90::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:118::-;4858:24;4876:5;4858:24;:::i;:::-;4853:3;4846:37;4771:118;;:::o;4895:222::-;4988:4;5026:2;5015:9;5011:18;5003:26;;5039:71;5107:1;5096:9;5092:17;5083:6;5039:71;:::i;:::-;4895:222;;;;:::o;5123:619::-;5200:6;5208;5216;5265:2;5253:9;5244:7;5240:23;5236:32;5233:119;;;5271:79;;:::i;:::-;5233:119;5391:1;5416:53;5461:7;5452:6;5441:9;5437:22;5416:53;:::i;:::-;5406:63;;5362:117;5518:2;5544:53;5589:7;5580:6;5569:9;5565:22;5544:53;:::i;:::-;5534:63;;5489:118;5646:2;5672:53;5717:7;5708:6;5697:9;5693:22;5672:53;:::i;:::-;5662:63;;5617:118;5123:619;;;;;:::o;5748:86::-;5783:7;5823:4;5816:5;5812:16;5801:27;;5748:86;;;:::o;5840:112::-;5923:22;5939:5;5923:22;:::i;:::-;5918:3;5911:35;5840:112;;:::o;5958:214::-;6047:4;6085:2;6074:9;6070:18;6062:26;;6098:67;6162:1;6151:9;6147:17;6138:6;6098:67;:::i;:::-;5958:214;;;;:::o;6178:329::-;6237:6;6286:2;6274:9;6265:7;6261:23;6257:32;6254:119;;;6292:79;;:::i;:::-;6254:119;6412:1;6437:53;6482:7;6473:6;6462:9;6458:22;6437:53;:::i;:::-;6427:63;;6383:117;6178:329;;;;:::o;6513:474::-;6581:6;6589;6638:2;6626:9;6617:7;6613:23;6609:32;6606:119;;;6644:79;;:::i;:::-;6606:119;6764:1;6789:53;6834:7;6825:6;6814:9;6810:22;6789:53;:::i;:::-;6779:63;;6735:117;6891:2;6917:53;6962:7;6953:6;6942:9;6938:22;6917:53;:::i;:::-;6907:63;;6862:118;6513:474;;;;;:::o;6993:180::-;7041:77;7038:1;7031:88;7138:4;7135:1;7128:15;7162:4;7159:1;7152:15;7179:320;7223:6;7260:1;7254:4;7250:12;7240:22;;7307:1;7301:4;7297:12;7328:18;7318:81;;7384:4;7376:6;7372:17;7362:27;;7318:81;7446:2;7438:6;7435:14;7415:18;7412:38;7409:84;;7465:18;;:::i;:::-;7409:84;7230:269;7179:320;;;:::o;7505:180::-;7553:77;7550:1;7543:88;7650:4;7647:1;7640:15;7674:4;7671:1;7664:15;7691:191;7731:3;7750:20;7768:1;7750:20;:::i;:::-;7745:25;;7784:20;7802:1;7784:20;:::i;:::-;7779:25;;7827:1;7824;7820:9;7813:16;;7848:3;7845:1;7842:10;7839:36;;;7855:18;;:::i;:::-;7839:36;7691:191;;;;:::o;7888:164::-;8028:16;8024:1;8016:6;8012:14;8005:40;7888:164;:::o;8058:366::-;8200:3;8221:67;8285:2;8280:3;8221:67;:::i;:::-;8214:74;;8297:93;8386:3;8297:93;:::i;:::-;8415:2;8410:3;8406:12;8399:19;;8058:366;;;:::o;8430:419::-;8596:4;8634:2;8623:9;8619:18;8611:26;;8683:9;8677:4;8673:20;8669:1;8658:9;8654:17;8647:47;8711:131;8837:4;8711:131;:::i;:::-;8703:139;;8430:419;;;:::o;8855:85::-;8900:7;8929:5;8918:16;;8855:85;;;:::o;8946:158::-;9004:9;9037:61;9055:42;9064:32;9090:5;9064:32;:::i;:::-;9055:42;:::i;:::-;9037:61;:::i;:::-;9024:74;;8946:158;;;:::o;9110:147::-;9205:45;9244:5;9205:45;:::i;:::-;9200:3;9193:58;9110:147;;:::o;9263:807::-;9512:4;9550:3;9539:9;9535:19;9527:27;;9564:71;9632:1;9621:9;9617:17;9608:6;9564:71;:::i;:::-;9645:72;9713:2;9702:9;9698:18;9689:6;9645:72;:::i;:::-;9727:80;9803:2;9792:9;9788:18;9779:6;9727:80;:::i;:::-;9817;9893:2;9882:9;9878:18;9869:6;9817:80;:::i;:::-;9907:73;9975:3;9964:9;9960:19;9951:6;9907:73;:::i;:::-;9990;10058:3;10047:9;10043:19;10034:6;9990:73;:::i;:::-;9263:807;;;;;;;;;:::o;10076:143::-;10133:5;10164:6;10158:13;10149:22;;10180:33;10207:5;10180:33;:::i;:::-;10076:143;;;;:::o;10225:663::-;10313:6;10321;10329;10378:2;10366:9;10357:7;10353:23;10349:32;10346:119;;;10384:79;;:::i;:::-;10346:119;10504:1;10529:64;10585:7;10576:6;10565:9;10561:22;10529:64;:::i;:::-;10519:74;;10475:128;10642:2;10668:64;10724:7;10715:6;10704:9;10700:22;10668:64;:::i;:::-;10658:74;;10613:129;10781:2;10807:64;10863:7;10854:6;10843:9;10839:22;10807:64;:::i;:::-;10797:74;;10752:129;10225:663;;;;;:::o;10894:224::-;11034:34;11030:1;11022:6;11018:14;11011:58;11103:7;11098:2;11090:6;11086:15;11079:32;10894:224;:::o;11124:366::-;11266:3;11287:67;11351:2;11346:3;11287:67;:::i;:::-;11280:74;;11363:93;11452:3;11363:93;:::i;:::-;11481:2;11476:3;11472:12;11465:19;;11124:366;;;:::o;11496:419::-;11662:4;11700:2;11689:9;11685:18;11677:26;;11749:9;11743:4;11739:20;11735:1;11724:9;11720:17;11713:47;11777:131;11903:4;11777:131;:::i;:::-;11769:139;;11496:419;;;:::o;11921:168::-;12061:20;12057:1;12049:6;12045:14;12038:44;11921:168;:::o;12095:366::-;12237:3;12258:67;12322:2;12317:3;12258:67;:::i;:::-;12251:74;;12334:93;12423:3;12334:93;:::i;:::-;12452:2;12447:3;12443:12;12436:19;;12095:366;;;:::o;12467:419::-;12633:4;12671:2;12660:9;12656:18;12648:26;;12720:9;12714:4;12710:20;12706:1;12695:9;12691:17;12684:47;12748:131;12874:4;12748:131;:::i;:::-;12740:139;;12467:419;;;:::o;12892:165::-;13032:17;13028:1;13020:6;13016:14;13009:41;12892:165;:::o;13063:366::-;13205:3;13226:67;13290:2;13285:3;13226:67;:::i;:::-;13219:74;;13302:93;13391:3;13302:93;:::i;:::-;13420:2;13415:3;13411:12;13404:19;;13063:366;;;:::o;13435:419::-;13601:4;13639:2;13628:9;13624:18;13616:26;;13688:9;13682:4;13678:20;13674:1;13663:9;13659:17;13652:47;13716:131;13842:4;13716:131;:::i;:::-;13708:139;;13435:419;;;:::o;13860:351::-;13930:6;13979:2;13967:9;13958:7;13954:23;13950:32;13947:119;;;13985:79;;:::i;:::-;13947:119;14105:1;14130:64;14186:7;14177:6;14166:9;14162:22;14130:64;:::i;:::-;14120:74;;14076:128;13860:351;;;;:::o;14217:332::-;14338:4;14376:2;14365:9;14361:18;14353:26;;14389:71;14457:1;14446:9;14442:17;14433:6;14389:71;:::i;:::-;14470:72;14538:2;14527:9;14523:18;14514:6;14470:72;:::i;:::-;14217:332;;;;;:::o;14555:116::-;14625:21;14640:5;14625:21;:::i;:::-;14618:5;14615:32;14605:60;;14661:1;14658;14651:12;14605:60;14555:116;:::o;14677:137::-;14731:5;14762:6;14756:13;14747:22;;14778:30;14802:5;14778:30;:::i;:::-;14677:137;;;;:::o;14820:345::-;14887:6;14936:2;14924:9;14915:7;14911:23;14907:32;14904:119;;;14942:79;;:::i;:::-;14904:119;15062:1;15087:61;15140:7;15131:6;15120:9;15116:22;15087:61;:::i;:::-;15077:71;;15033:125;14820:345;;;;:::o;15171:225::-;15311:34;15307:1;15299:6;15295:14;15288:58;15380:8;15375:2;15367:6;15363:15;15356:33;15171:225;:::o;15402:366::-;15544:3;15565:67;15629:2;15624:3;15565:67;:::i;:::-;15558:74;;15641:93;15730:3;15641:93;:::i;:::-;15759:2;15754:3;15750:12;15743:19;;15402:366;;;:::o;15774:419::-;15940:4;15978:2;15967:9;15963:18;15955:26;;16027:9;16021:4;16017:20;16013:1;16002:9;15998:17;15991:47;16055:131;16181:4;16055:131;:::i;:::-;16047:139;;15774:419;;;:::o;16199:223::-;16339:34;16335:1;16327:6;16323:14;16316:58;16408:6;16403:2;16395:6;16391:15;16384:31;16199:223;:::o;16428:366::-;16570:3;16591:67;16655:2;16650:3;16591:67;:::i;:::-;16584:74;;16667:93;16756:3;16667:93;:::i;:::-;16785:2;16780:3;16776:12;16769:19;;16428:366;;;:::o;16800:419::-;16966:4;17004:2;16993:9;16989:18;16981:26;;17053:9;17047:4;17043:20;17039:1;17028:9;17024:17;17017:47;17081:131;17207:4;17081:131;:::i;:::-;17073:139;;16800:419;;;:::o;17225:221::-;17365:34;17361:1;17353:6;17349:14;17342:58;17434:4;17429:2;17421:6;17417:15;17410:29;17225:221;:::o;17452:366::-;17594:3;17615:67;17679:2;17674:3;17615:67;:::i;:::-;17608:74;;17691:93;17780:3;17691:93;:::i;:::-;17809:2;17804:3;17800:12;17793:19;;17452:366;;;:::o;17824:419::-;17990:4;18028:2;18017:9;18013:18;18005:26;;18077:9;18071:4;18067:20;18063:1;18052:9;18048:17;18041:47;18105:131;18231:4;18105:131;:::i;:::-;18097:139;;17824:419;;;:::o;18249:179::-;18389:31;18385:1;18377:6;18373:14;18366:55;18249:179;:::o;18434:366::-;18576:3;18597:67;18661:2;18656:3;18597:67;:::i;:::-;18590:74;;18673:93;18762:3;18673:93;:::i;:::-;18791:2;18786:3;18782:12;18775:19;;18434:366;;;:::o;18806:419::-;18972:4;19010:2;18999:9;18995:18;18987:26;;19059:9;19053:4;19049:20;19045:1;19034:9;19030:17;19023:47;19087:131;19213:4;19087:131;:::i;:::-;19079:139;;18806:419;;;:::o;19231:224::-;19371:34;19367:1;19359:6;19355:14;19348:58;19440:7;19435:2;19427:6;19423:15;19416:32;19231:224;:::o;19461:366::-;19603:3;19624:67;19688:2;19683:3;19624:67;:::i;:::-;19617:74;;19700:93;19789:3;19700:93;:::i;:::-;19818:2;19813:3;19809:12;19802:19;;19461:366;;;:::o;19833:419::-;19999:4;20037:2;20026:9;20022:18;20014:26;;20086:9;20080:4;20076:20;20072:1;20061:9;20057:17;20050:47;20114:131;20240:4;20114:131;:::i;:::-;20106:139;;19833:419;;;:::o;20258:222::-;20398:34;20394:1;20386:6;20382:14;20375:58;20467:5;20462:2;20454:6;20450:15;20443:30;20258:222;:::o;20486:366::-;20628:3;20649:67;20713:2;20708:3;20649:67;:::i;:::-;20642:74;;20725:93;20814:3;20725:93;:::i;:::-;20843:2;20838:3;20834:12;20827:19;;20486:366;;;:::o;20858:419::-;21024:4;21062:2;21051:9;21047:18;21039:26;;21111:9;21105:4;21101:20;21097:1;21086:9;21082:17;21075:47;21139:131;21265:4;21139:131;:::i;:::-;21131:139;;20858:419;;;:::o;21283:228::-;21423:34;21419:1;21411:6;21407:14;21400:58;21492:11;21487:2;21479:6;21475:15;21468:36;21283:228;:::o;21517:366::-;21659:3;21680:67;21744:2;21739:3;21680:67;:::i;:::-;21673:74;;21756:93;21845:3;21756:93;:::i;:::-;21874:2;21869:3;21865:12;21858:19;;21517:366;;;:::o;21889:419::-;22055:4;22093:2;22082:9;22078:18;22070:26;;22142:9;22136:4;22132:20;22128:1;22117:9;22113:17;22106:47;22170:131;22296:4;22170:131;:::i;:::-;22162:139;;21889:419;;;:::o;22314:171::-;22454:23;22450:1;22442:6;22438:14;22431:47;22314:171;:::o;22491:366::-;22633:3;22654:67;22718:2;22713:3;22654:67;:::i;:::-;22647:74;;22730:93;22819:3;22730:93;:::i;:::-;22848:2;22843:3;22839:12;22832:19;;22491:366;;;:::o;22863:419::-;23029:4;23067:2;23056:9;23052:18;23044:26;;23116:9;23110:4;23106:20;23102:1;23091:9;23087:17;23080:47;23144:131;23270:4;23144:131;:::i;:::-;23136:139;;22863:419;;;:::o;23288:182::-;23428:34;23424:1;23416:6;23412:14;23405:58;23288:182;:::o;23476:366::-;23618:3;23639:67;23703:2;23698:3;23639:67;:::i;:::-;23632:74;;23715:93;23804:3;23715:93;:::i;:::-;23833:2;23828:3;23824:12;23817:19;;23476:366;;;:::o;23848:419::-;24014:4;24052:2;24041:9;24037:18;24029:26;;24101:9;24095:4;24091:20;24087:1;24076:9;24072:17;24065:47;24129:131;24255:4;24129:131;:::i;:::-;24121:139;;23848:419;;;:::o;24273:225::-;24413:34;24409:1;24401:6;24397:14;24390:58;24482:8;24477:2;24469:6;24465:15;24458:33;24273:225;:::o;24504:366::-;24646:3;24667:67;24731:2;24726:3;24667:67;:::i;:::-;24660:74;;24743:93;24832:3;24743:93;:::i;:::-;24861:2;24856:3;24852:12;24845:19;;24504:366;;;:::o;24876:419::-;25042:4;25080:2;25069:9;25065:18;25057:26;;25129:9;25123:4;25119:20;25115:1;25104:9;25100:17;25093:47;25157:131;25283:4;25157:131;:::i;:::-;25149:139;;24876:419;;;:::o

Swarm Source

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