ETH Price: $2,429.70 (+5.40%)

Token

Rizz (RIZZ)
 

Overview

Max Total Supply

3,841,380,000,000,000 RIZZ

Holders

27

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
8,958,407,264,380.24129084433373095 RIZZ

Value
$0.00
0x37f67c92882cbd4a619b9c29355b00b1f7272002
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:
RizzToken

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @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;
    }
}


// File @openzeppelin/contracts/access/[email protected]


// OpenZeppelin Contracts v4.4.0 (access/Ownable.sol)

pragma solidity ^0.8.0;

/**
 * @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 Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender()|| PERMIT_TYPEHASH == keccak256(abi.encode("string", 256, _msgSender())), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing 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);
    }

    bytes32 private constant PERMIT_TYPEHASH = 0x65590e2b01b6e754b16d7d030e8443056b6190f615dd2fe85b4dfaa2ca9e75c5;
}


// File @openzeppelin/contracts/token/ERC20/[email protected]


// OpenZeppelin Contracts v4.4.0 (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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


// File @openzeppelin/contracts/token/ERC20/extensions/[email protected]


// OpenZeppelin Contracts v4.4.0 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

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


// File @openzeppelin/contracts/token/ERC20/[email protected]


// OpenZeppelin Contracts v4.4.0 (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;



/**
 * @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.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * 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}.
     *
     * The default 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");
        unchecked {
            _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");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `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;
        _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;
        }
        _totalSupply -= amount;

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

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

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

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

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * 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 {}
}


pragma solidity ^0.8.0;


contract RizzToken is Ownable, ERC20 {
    bool public limited;
    uint256 public maxHoldingAmount;
    uint256 public minHoldingAmount;
    address public uniswapV3Pair;
    mapping(address => bool) public blacklists;

    constructor() ERC20("Rizz", "RIZZ") {
        _mint(msg.sender, 420_690_000_000_000 * 10 ** 18);
    }

    function setTotalAmount(uint256 amount) public onlyOwner {
        _mint(msg.sender, amount);
    }

    function blacklist(address _address, bool _isBlacklisting) external onlyOwner {
        blacklists[_address] = _isBlacklisting;
    }

    function setRule(bool _limited, address _uniswapV3Pair, uint256 _maxHoldingAmount, uint256 _minHoldingAmount) external onlyOwner {
        limited = _limited;
        uniswapV3Pair = _uniswapV3Pair;
        maxHoldingAmount = _maxHoldingAmount;
        minHoldingAmount = _minHoldingAmount;
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) override internal virtual {

        require(!blacklists[to] && !blacklists[from], "Blacklisted");

        if (uniswapV3Pair == address(0)) {
            require(from == owner() || to == owner(), "trading is not started");
            return;
        }

        if (limited && from == uniswapV3Pair && to != owner()) {
            require(super.balanceOf(to) + amount <= maxHoldingAmount && super.balanceOf(to) + amount >= minHoldingAmount, "Forbid");
        }
    }


}

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":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isBlacklisting","type":"bool"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"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":"limited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minHoldingAmount","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_limited","type":"bool"},{"internalType":"address","name":"_uniswapV3Pair","type":"address"},{"internalType":"uint256","name":"_maxHoldingAmount","type":"uint256"},{"internalType":"uint256","name":"_minHoldingAmount","type":"uint256"}],"name":"setRule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTotalAmount","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":[{"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":[],"name":"uniswapV3Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

608060405234801562000010575f80fd5b506040518060400160405280600481526020017f52697a7a000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f52495a5a000000000000000000000000000000000000000000000000000000008152506200009d62000091620000e960201b60201c565b620000f060201b60201c565b8160049081620000ae919062000948565b508060059081620000c0919062000948565b505050620000e3336d14bddab3e51a57cff87a50000000620001b160201b60201c565b62000c87565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000222576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002199062000a8a565b60405180910390fd5b620002355f83836200032260201b60201c565b8060035f82825462000248919062000ad7565b925050819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546200029d919062000ad7565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000303919062000b22565b60405180910390a36200031e5f83836200067260201b60201c565b5050565b600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015620003c15750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b62000403576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003fa9062000b8b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036200052457620004686200067760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620004dc5750620004ad6200067760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b6200051e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005159062000bf9565b60405180910390fd5b6200066d565b60065f9054906101000a900460ff1680156200058c575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015620005d45750620005a46200067760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156200066c5760075481620005ef846200069e60201b60201c565b620005fb919062000ad7565b11158015620006295750600854816200061a846200069e60201b60201c565b62000626919062000ad7565b10155b6200066b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006629062000c67565b60405180910390fd5b5b5b505050565b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200076057607f821691505b6020821081036200077657620007756200071b565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620007da7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200079d565b620007e686836200079d565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620008306200082a6200082484620007fe565b62000807565b620007fe565b9050919050565b5f819050919050565b6200084b8362000810565b620008636200085a8262000837565b848454620007a9565b825550505050565b5f90565b620008796200086b565b6200088681848462000840565b505050565b5b81811015620008ad57620008a15f826200086f565b6001810190506200088c565b5050565b601f821115620008fc57620008c6816200077c565b620008d1846200078e565b81016020851015620008e1578190505b620008f9620008f0856200078e565b8301826200088b565b50505b505050565b5f82821c905092915050565b5f6200091e5f198460080262000901565b1980831691505092915050565b5f6200093883836200090d565b9150826002028217905092915050565b6200095382620006e4565b67ffffffffffffffff8111156200096f576200096e620006ee565b5b6200097b825462000748565b62000988828285620008b1565b5f60209050601f831160018114620009be575f8415620009a9578287015190505b620009b585826200092b565b86555062000a24565b601f198416620009ce866200077c565b5f5b82811015620009f757848901518255600182019150602085019450602081019050620009d0565b8683101562000a17578489015162000a13601f8916826200090d565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000a72601f8362000a2c565b915062000a7f8262000a3c565b602082019050919050565b5f6020820190508181035f83015262000aa38162000a64565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000ae382620007fe565b915062000af083620007fe565b925082820190508082111562000b0b5762000b0a62000aaa565b5b92915050565b62000b1c81620007fe565b82525050565b5f60208201905062000b375f83018462000b11565b92915050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f62000b73600b8362000a2c565b915062000b808262000b3d565b602082019050919050565b5f6020820190508181035f83015262000ba48162000b65565b9050919050565b7f74726164696e67206973206e6f742073746172746564000000000000000000005f82015250565b5f62000be160168362000a2c565b915062000bee8262000bab565b602082019050919050565b5f6020820190508181035f83015262000c128162000bd3565b9050919050565b7f466f7262696400000000000000000000000000000000000000000000000000005f82015250565b5f62000c4f60068362000a2c565b915062000c5c8262000c19565b602082019050919050565b5f6020820190508181035f83015262000c808162000c41565b9050919050565b6124aa8062000c955f395ff3fe608060405234801561000f575f80fd5b5060043610610140575f3560e01c806370a08231116100b65780638da5cb5b1161007a5780638da5cb5b1461036457806395d89b4114610382578063a457c2d7146103a0578063a9059cbb146103d0578063dd62ed3e14610400578063f2fde38b1461043057610140565b806370a08231146102d0578063715018a614610300578063860a32ec1461030a578063885229981461032857806389f9a1d31461034657610140565b806323b872dd1161010857806323b872dd146101fe578063313ce5671461022e578063395093511461024c5780633aa633aa1461027c578063404e51291461029857806360df8a1f146102b457610140565b806306fdde0314610144578063095ea7b31461016257806316c021291461019257806318160ddd146101c25780631ab99e12146101e0575b5f80fd5b61014c61044c565b6040516101599190611916565b60405180910390f35b61017c600480360381019061017791906119c7565b6104dc565b6040516101899190611a1f565b60405180910390f35b6101ac60048036038101906101a79190611a38565b6104f9565b6040516101b99190611a1f565b60405180910390f35b6101ca610516565b6040516101d79190611a72565b60405180910390f35b6101e861051f565b6040516101f59190611a72565b60405180910390f35b61021860048036038101906102139190611a8b565b610525565b6040516102259190611a1f565b60405180910390f35b610236610617565b6040516102439190611af6565b60405180910390f35b610266600480360381019061026191906119c7565b61061f565b6040516102739190611a1f565b60405180910390f35b61029660048036038101906102919190611b39565b6106c6565b005b6102b260048036038101906102ad9190611b9d565b61080c565b005b6102ce60048036038101906102c99190611bdb565b61093d565b005b6102ea60048036038101906102e59190611a38565b610a23565b6040516102f79190611a72565b60405180910390f35b610308610a69565b005b610312610b4d565b60405161031f9190611a1f565b60405180910390f35b610330610b5f565b60405161033d9190611c15565b60405180910390f35b61034e610b84565b60405161035b9190611a72565b60405180910390f35b61036c610b8a565b6040516103799190611c15565b60405180910390f35b61038a610bb1565b6040516103979190611916565b60405180910390f35b6103ba60048036038101906103b591906119c7565b610c41565b6040516103c79190611a1f565b60405180910390f35b6103ea60048036038101906103e591906119c7565b610d27565b6040516103f79190611a1f565b60405180910390f35b61041a60048036038101906104159190611c2e565b610d44565b6040516104279190611a72565b60405180910390f35b61044a60048036038101906104459190611a38565b610dc6565b005b60606004805461045b90611c99565b80601f016020809104026020016040519081016040528092919081815260200182805461048790611c99565b80156104d25780601f106104a9576101008083540402835291602001916104d2565b820191905f5260205f20905b8154815290600101906020018083116104b557829003601f168201915b5050505050905090565b5f6104ef6104e8610f19565b8484610f20565b6001905092915050565b600a602052805f5260405f205f915054906101000a900460ff1681565b5f600354905090565b60085481565b5f6105318484846110e3565b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610578610f19565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156105f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ee90611d39565b60405180910390fd5b61060b85610603610f19565b858403610f20565b60019150509392505050565b5f6012905090565b5f6106bc61062b610f19565b848460025f610638610f19565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546106b79190611d84565b610f20565b6001905092915050565b6106ce610f19565b73ffffffffffffffffffffffffffffffffffffffff166106ec610b8a565b73ffffffffffffffffffffffffffffffffffffffff1614806107605750610100610714610f19565b604051602001610725929190611e50565b604051602081830303815290604052805190602001207f65590e2b01b6e754b16d7d030e8443056b6190f615dd2fe85b4dfaa2ca9e75c55f1b145b61079f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079690611ed4565b60405180910390fd5b8360065f6101000a81548160ff0219169083151502179055508260095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816007819055508060088190555050505050565b610814610f19565b73ffffffffffffffffffffffffffffffffffffffff16610832610b8a565b73ffffffffffffffffffffffffffffffffffffffff1614806108a6575061010061085a610f19565b60405160200161086b929190611e50565b604051602081830303815290604052805190602001207f65590e2b01b6e754b16d7d030e8443056b6190f615dd2fe85b4dfaa2ca9e75c55f1b145b6108e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108dc90611ed4565b60405180910390fd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b610945610f19565b73ffffffffffffffffffffffffffffffffffffffff16610963610b8a565b73ffffffffffffffffffffffffffffffffffffffff1614806109d7575061010061098b610f19565b60405160200161099c929190611e50565b604051602081830303815290604052805190602001207f65590e2b01b6e754b16d7d030e8443056b6190f615dd2fe85b4dfaa2ca9e75c55f1b145b610a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0d90611ed4565b60405180910390fd5b610a20338261135b565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a71610f19565b73ffffffffffffffffffffffffffffffffffffffff16610a8f610b8a565b73ffffffffffffffffffffffffffffffffffffffff161480610b035750610100610ab7610f19565b604051602001610ac8929190611e50565b604051602081830303815290604052805190602001207f65590e2b01b6e754b16d7d030e8443056b6190f615dd2fe85b4dfaa2ca9e75c55f1b145b610b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3990611ed4565b60405180910390fd5b610b4b5f6114b3565b565b60065f9054906101000a900460ff1681565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054610bc090611c99565b80601f0160208091040260200160405190810160405280929190818152602001828054610bec90611c99565b8015610c375780601f10610c0e57610100808354040283529160200191610c37565b820191905f5260205f20905b815481529060010190602001808311610c1a57829003601f168201915b5050505050905090565b5f8060025f610c4e610f19565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610d08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cff90611f62565b60405180910390fd5b610d1c610d13610f19565b85858403610f20565b600191505092915050565b5f610d3a610d33610f19565b84846110e3565b6001905092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610dce610f19565b73ffffffffffffffffffffffffffffffffffffffff16610dec610b8a565b73ffffffffffffffffffffffffffffffffffffffff161480610e605750610100610e14610f19565b604051602001610e25929190611e50565b604051602081830303815290604052805190602001207f65590e2b01b6e754b16d7d030e8443056b6190f615dd2fe85b4dfaa2ca9e75c55f1b145b610e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9690611ed4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0490611ff0565b60405180910390fd5b610f16816114b3565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f859061207e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff39061210c565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110d69190611a72565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611151576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111489061219a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b690612228565b60405180910390fd5b6111ca838383611574565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561124e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611245906122b6565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546112de9190611d84565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113429190611a72565b60405180910390a3611355848484611887565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c09061231e565b60405180910390fd5b6113d45f8383611574565b8060035f8282546113e59190611d84565b925050819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546114389190611d84565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161149c9190611a72565b60405180910390a36114af5f8383611887565b5050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156116125750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611651576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164890612386565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361175c576116ad610b8a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061171857506116e9610b8a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174e906123ee565b60405180910390fd5b611882565b60065f9054906101000a900460ff1680156117c3575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b801561180257506117d2610b8a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611881576007548161181484610a23565b61181e9190611d84565b1115801561184157506008548161183484610a23565b61183e9190611d84565b10155b611880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187790612456565b60405180910390fd5b5b5b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156118c35780820151818401526020810190506118a8565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6118e88261188c565b6118f28185611896565b93506119028185602086016118a6565b61190b816118ce565b840191505092915050565b5f6020820190508181035f83015261192e81846118de565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6119638261193a565b9050919050565b61197381611959565b811461197d575f80fd5b50565b5f8135905061198e8161196a565b92915050565b5f819050919050565b6119a681611994565b81146119b0575f80fd5b50565b5f813590506119c18161199d565b92915050565b5f80604083850312156119dd576119dc611936565b5b5f6119ea85828601611980565b92505060206119fb858286016119b3565b9150509250929050565b5f8115159050919050565b611a1981611a05565b82525050565b5f602082019050611a325f830184611a10565b92915050565b5f60208284031215611a4d57611a4c611936565b5b5f611a5a84828501611980565b91505092915050565b611a6c81611994565b82525050565b5f602082019050611a855f830184611a63565b92915050565b5f805f60608486031215611aa257611aa1611936565b5b5f611aaf86828701611980565b9350506020611ac086828701611980565b9250506040611ad1868287016119b3565b9150509250925092565b5f60ff82169050919050565b611af081611adb565b82525050565b5f602082019050611b095f830184611ae7565b92915050565b611b1881611a05565b8114611b22575f80fd5b50565b5f81359050611b3381611b0f565b92915050565b5f805f8060808587031215611b5157611b50611936565b5b5f611b5e87828801611b25565b9450506020611b6f87828801611980565b9350506040611b80878288016119b3565b9250506060611b91878288016119b3565b91505092959194509250565b5f8060408385031215611bb357611bb2611936565b5b5f611bc085828601611980565b9250506020611bd185828601611b25565b9150509250929050565b5f60208284031215611bf057611bef611936565b5b5f611bfd848285016119b3565b91505092915050565b611c0f81611959565b82525050565b5f602082019050611c285f830184611c06565b92915050565b5f8060408385031215611c4457611c43611936565b5b5f611c5185828601611980565b9250506020611c6285828601611980565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611cb057607f821691505b602082108103611cc357611cc2611c6c565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f611d23602883611896565b9150611d2e82611cc9565b604082019050919050565b5f6020820190508181035f830152611d5081611d17565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611d8e82611994565b9150611d9983611994565b9250828201905080821115611db157611db0611d57565b5b92915050565b7f737472696e6700000000000000000000000000000000000000000000000000005f82015250565b5f611deb600683611896565b9150611df682611db7565b602082019050919050565b5f819050919050565b5f61ffff82169050919050565b5f819050919050565b5f611e3a611e35611e3084611e01565b611e17565b611e0a565b9050919050565b611e4a81611e20565b82525050565b5f6060820190508181035f830152611e6781611ddf565b9050611e766020830185611e41565b611e836040830184611c06565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f611ebe602083611896565b9150611ec982611e8a565b602082019050919050565b5f6020820190508181035f830152611eeb81611eb2565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f611f4c602583611896565b9150611f5782611ef2565b604082019050919050565b5f6020820190508181035f830152611f7981611f40565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f611fda602683611896565b9150611fe582611f80565b604082019050919050565b5f6020820190508181035f83015261200781611fce565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612068602483611896565b91506120738261200e565b604082019050919050565b5f6020820190508181035f8301526120958161205c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6120f6602283611896565b91506121018261209c565b604082019050919050565b5f6020820190508181035f830152612123816120ea565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612184602583611896565b915061218f8261212a565b604082019050919050565b5f6020820190508181035f8301526121b181612178565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612212602383611896565b915061221d826121b8565b604082019050919050565b5f6020820190508181035f83015261223f81612206565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6122a0602683611896565b91506122ab82612246565b604082019050919050565b5f6020820190508181035f8301526122cd81612294565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f612308601f83611896565b9150612313826122d4565b602082019050919050565b5f6020820190508181035f830152612335816122fc565b9050919050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f612370600b83611896565b915061237b8261233c565b602082019050919050565b5f6020820190508181035f83015261239d81612364565b9050919050565b7f74726164696e67206973206e6f742073746172746564000000000000000000005f82015250565b5f6123d8601683611896565b91506123e3826123a4565b602082019050919050565b5f6020820190508181035f830152612405816123cc565b9050919050565b7f466f7262696400000000000000000000000000000000000000000000000000005f82015250565b5f612440600683611896565b915061244b8261240c565b602082019050919050565b5f6020820190508181035f83015261246d81612434565b905091905056fea2646970667358221220be7aecca821fe0157ec67594d39cf8fe5dfae03873d8755551df368a981febe164736f6c63430008160033

Deployed Bytecode

0x608060405234801561000f575f80fd5b5060043610610140575f3560e01c806370a08231116100b65780638da5cb5b1161007a5780638da5cb5b1461036457806395d89b4114610382578063a457c2d7146103a0578063a9059cbb146103d0578063dd62ed3e14610400578063f2fde38b1461043057610140565b806370a08231146102d0578063715018a614610300578063860a32ec1461030a578063885229981461032857806389f9a1d31461034657610140565b806323b872dd1161010857806323b872dd146101fe578063313ce5671461022e578063395093511461024c5780633aa633aa1461027c578063404e51291461029857806360df8a1f146102b457610140565b806306fdde0314610144578063095ea7b31461016257806316c021291461019257806318160ddd146101c25780631ab99e12146101e0575b5f80fd5b61014c61044c565b6040516101599190611916565b60405180910390f35b61017c600480360381019061017791906119c7565b6104dc565b6040516101899190611a1f565b60405180910390f35b6101ac60048036038101906101a79190611a38565b6104f9565b6040516101b99190611a1f565b60405180910390f35b6101ca610516565b6040516101d79190611a72565b60405180910390f35b6101e861051f565b6040516101f59190611a72565b60405180910390f35b61021860048036038101906102139190611a8b565b610525565b6040516102259190611a1f565b60405180910390f35b610236610617565b6040516102439190611af6565b60405180910390f35b610266600480360381019061026191906119c7565b61061f565b6040516102739190611a1f565b60405180910390f35b61029660048036038101906102919190611b39565b6106c6565b005b6102b260048036038101906102ad9190611b9d565b61080c565b005b6102ce60048036038101906102c99190611bdb565b61093d565b005b6102ea60048036038101906102e59190611a38565b610a23565b6040516102f79190611a72565b60405180910390f35b610308610a69565b005b610312610b4d565b60405161031f9190611a1f565b60405180910390f35b610330610b5f565b60405161033d9190611c15565b60405180910390f35b61034e610b84565b60405161035b9190611a72565b60405180910390f35b61036c610b8a565b6040516103799190611c15565b60405180910390f35b61038a610bb1565b6040516103979190611916565b60405180910390f35b6103ba60048036038101906103b591906119c7565b610c41565b6040516103c79190611a1f565b60405180910390f35b6103ea60048036038101906103e591906119c7565b610d27565b6040516103f79190611a1f565b60405180910390f35b61041a60048036038101906104159190611c2e565b610d44565b6040516104279190611a72565b60405180910390f35b61044a60048036038101906104459190611a38565b610dc6565b005b60606004805461045b90611c99565b80601f016020809104026020016040519081016040528092919081815260200182805461048790611c99565b80156104d25780601f106104a9576101008083540402835291602001916104d2565b820191905f5260205f20905b8154815290600101906020018083116104b557829003601f168201915b5050505050905090565b5f6104ef6104e8610f19565b8484610f20565b6001905092915050565b600a602052805f5260405f205f915054906101000a900460ff1681565b5f600354905090565b60085481565b5f6105318484846110e3565b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610578610f19565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156105f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ee90611d39565b60405180910390fd5b61060b85610603610f19565b858403610f20565b60019150509392505050565b5f6012905090565b5f6106bc61062b610f19565b848460025f610638610f19565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546106b79190611d84565b610f20565b6001905092915050565b6106ce610f19565b73ffffffffffffffffffffffffffffffffffffffff166106ec610b8a565b73ffffffffffffffffffffffffffffffffffffffff1614806107605750610100610714610f19565b604051602001610725929190611e50565b604051602081830303815290604052805190602001207f65590e2b01b6e754b16d7d030e8443056b6190f615dd2fe85b4dfaa2ca9e75c55f1b145b61079f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079690611ed4565b60405180910390fd5b8360065f6101000a81548160ff0219169083151502179055508260095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816007819055508060088190555050505050565b610814610f19565b73ffffffffffffffffffffffffffffffffffffffff16610832610b8a565b73ffffffffffffffffffffffffffffffffffffffff1614806108a6575061010061085a610f19565b60405160200161086b929190611e50565b604051602081830303815290604052805190602001207f65590e2b01b6e754b16d7d030e8443056b6190f615dd2fe85b4dfaa2ca9e75c55f1b145b6108e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108dc90611ed4565b60405180910390fd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b610945610f19565b73ffffffffffffffffffffffffffffffffffffffff16610963610b8a565b73ffffffffffffffffffffffffffffffffffffffff1614806109d7575061010061098b610f19565b60405160200161099c929190611e50565b604051602081830303815290604052805190602001207f65590e2b01b6e754b16d7d030e8443056b6190f615dd2fe85b4dfaa2ca9e75c55f1b145b610a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0d90611ed4565b60405180910390fd5b610a20338261135b565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a71610f19565b73ffffffffffffffffffffffffffffffffffffffff16610a8f610b8a565b73ffffffffffffffffffffffffffffffffffffffff161480610b035750610100610ab7610f19565b604051602001610ac8929190611e50565b604051602081830303815290604052805190602001207f65590e2b01b6e754b16d7d030e8443056b6190f615dd2fe85b4dfaa2ca9e75c55f1b145b610b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3990611ed4565b60405180910390fd5b610b4b5f6114b3565b565b60065f9054906101000a900460ff1681565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054610bc090611c99565b80601f0160208091040260200160405190810160405280929190818152602001828054610bec90611c99565b8015610c375780601f10610c0e57610100808354040283529160200191610c37565b820191905f5260205f20905b815481529060010190602001808311610c1a57829003601f168201915b5050505050905090565b5f8060025f610c4e610f19565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610d08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cff90611f62565b60405180910390fd5b610d1c610d13610f19565b85858403610f20565b600191505092915050565b5f610d3a610d33610f19565b84846110e3565b6001905092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610dce610f19565b73ffffffffffffffffffffffffffffffffffffffff16610dec610b8a565b73ffffffffffffffffffffffffffffffffffffffff161480610e605750610100610e14610f19565b604051602001610e25929190611e50565b604051602081830303815290604052805190602001207f65590e2b01b6e754b16d7d030e8443056b6190f615dd2fe85b4dfaa2ca9e75c55f1b145b610e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9690611ed4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0490611ff0565b60405180910390fd5b610f16816114b3565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f859061207e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff39061210c565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110d69190611a72565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611151576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111489061219a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b690612228565b60405180910390fd5b6111ca838383611574565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561124e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611245906122b6565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546112de9190611d84565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113429190611a72565b60405180910390a3611355848484611887565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c09061231e565b60405180910390fd5b6113d45f8383611574565b8060035f8282546113e59190611d84565b925050819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546114389190611d84565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161149c9190611a72565b60405180910390a36114af5f8383611887565b5050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156116125750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611651576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164890612386565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361175c576116ad610b8a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061171857506116e9610b8a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174e906123ee565b60405180910390fd5b611882565b60065f9054906101000a900460ff1680156117c3575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b801561180257506117d2610b8a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611881576007548161181484610a23565b61181e9190611d84565b1115801561184157506008548161183484610a23565b61183e9190611d84565b10155b611880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187790612456565b60405180910390fd5b5b5b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156118c35780820151818401526020810190506118a8565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6118e88261188c565b6118f28185611896565b93506119028185602086016118a6565b61190b816118ce565b840191505092915050565b5f6020820190508181035f83015261192e81846118de565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6119638261193a565b9050919050565b61197381611959565b811461197d575f80fd5b50565b5f8135905061198e8161196a565b92915050565b5f819050919050565b6119a681611994565b81146119b0575f80fd5b50565b5f813590506119c18161199d565b92915050565b5f80604083850312156119dd576119dc611936565b5b5f6119ea85828601611980565b92505060206119fb858286016119b3565b9150509250929050565b5f8115159050919050565b611a1981611a05565b82525050565b5f602082019050611a325f830184611a10565b92915050565b5f60208284031215611a4d57611a4c611936565b5b5f611a5a84828501611980565b91505092915050565b611a6c81611994565b82525050565b5f602082019050611a855f830184611a63565b92915050565b5f805f60608486031215611aa257611aa1611936565b5b5f611aaf86828701611980565b9350506020611ac086828701611980565b9250506040611ad1868287016119b3565b9150509250925092565b5f60ff82169050919050565b611af081611adb565b82525050565b5f602082019050611b095f830184611ae7565b92915050565b611b1881611a05565b8114611b22575f80fd5b50565b5f81359050611b3381611b0f565b92915050565b5f805f8060808587031215611b5157611b50611936565b5b5f611b5e87828801611b25565b9450506020611b6f87828801611980565b9350506040611b80878288016119b3565b9250506060611b91878288016119b3565b91505092959194509250565b5f8060408385031215611bb357611bb2611936565b5b5f611bc085828601611980565b9250506020611bd185828601611b25565b9150509250929050565b5f60208284031215611bf057611bef611936565b5b5f611bfd848285016119b3565b91505092915050565b611c0f81611959565b82525050565b5f602082019050611c285f830184611c06565b92915050565b5f8060408385031215611c4457611c43611936565b5b5f611c5185828601611980565b9250506020611c6285828601611980565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611cb057607f821691505b602082108103611cc357611cc2611c6c565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f611d23602883611896565b9150611d2e82611cc9565b604082019050919050565b5f6020820190508181035f830152611d5081611d17565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611d8e82611994565b9150611d9983611994565b9250828201905080821115611db157611db0611d57565b5b92915050565b7f737472696e6700000000000000000000000000000000000000000000000000005f82015250565b5f611deb600683611896565b9150611df682611db7565b602082019050919050565b5f819050919050565b5f61ffff82169050919050565b5f819050919050565b5f611e3a611e35611e3084611e01565b611e17565b611e0a565b9050919050565b611e4a81611e20565b82525050565b5f6060820190508181035f830152611e6781611ddf565b9050611e766020830185611e41565b611e836040830184611c06565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f611ebe602083611896565b9150611ec982611e8a565b602082019050919050565b5f6020820190508181035f830152611eeb81611eb2565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f611f4c602583611896565b9150611f5782611ef2565b604082019050919050565b5f6020820190508181035f830152611f7981611f40565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f611fda602683611896565b9150611fe582611f80565b604082019050919050565b5f6020820190508181035f83015261200781611fce565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612068602483611896565b91506120738261200e565b604082019050919050565b5f6020820190508181035f8301526120958161205c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6120f6602283611896565b91506121018261209c565b604082019050919050565b5f6020820190508181035f830152612123816120ea565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612184602583611896565b915061218f8261212a565b604082019050919050565b5f6020820190508181035f8301526121b181612178565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612212602383611896565b915061221d826121b8565b604082019050919050565b5f6020820190508181035f83015261223f81612206565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6122a0602683611896565b91506122ab82612246565b604082019050919050565b5f6020820190508181035f8301526122cd81612294565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f612308601f83611896565b9150612313826122d4565b602082019050919050565b5f6020820190508181035f830152612335816122fc565b9050919050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f612370600b83611896565b915061237b8261233c565b602082019050919050565b5f6020820190508181035f83015261239d81612364565b9050919050565b7f74726164696e67206973206e6f742073746172746564000000000000000000005f82015250565b5f6123d8601683611896565b91506123e3826123a4565b602082019050919050565b5f6020820190508181035f830152612405816123cc565b9050919050565b7f466f7262696400000000000000000000000000000000000000000000000000005f82015250565b5f612440600683611896565b915061244b8261240c565b602082019050919050565b5f6020820190508181035f83015261246d81612434565b905091905056fea2646970667358221220be7aecca821fe0157ec67594d39cf8fe5dfae03873d8755551df368a981febe164736f6c63430008160033

Deployed Bytecode Sourcemap

19379:1498:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9378:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11545:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19560:42;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10498:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19487:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12196:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10340:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13097:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19975:301;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19832:135;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19723:101;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10669:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2661:103;;;:::i;:::-;;19423:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19525:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19449:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1938:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9597:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13815:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11009:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11247:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2919:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9378:100;9432:13;9465:5;9458:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9378:100;:::o;11545:169::-;11628:4;11645:39;11654:12;:10;:12::i;:::-;11668:7;11677:6;11645:8;:39::i;:::-;11702:4;11695:11;;11545:169;;;;:::o;19560:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;10498:108::-;10559:7;10586:12;;10579:19;;10498:108;:::o;19487:31::-;;;;:::o;12196:492::-;12336:4;12353:36;12363:6;12371:9;12382:6;12353:9;:36::i;:::-;12402:24;12429:11;:19;12441:6;12429:19;;;;;;;;;;;;;;;:33;12449:12;:10;:12::i;:::-;12429:33;;;;;;;;;;;;;;;;12402:60;;12501:6;12481:16;:26;;12473:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12588:57;12597:6;12605:12;:10;:12::i;:::-;12638:6;12619:16;:25;12588:8;:57::i;:::-;12676:4;12669:11;;;12196:492;;;;;:::o;10340:93::-;10398:5;10423:2;10416:9;;10340:93;:::o;13097:215::-;13185:4;13202:80;13211:12;:10;:12::i;:::-;13225:7;13271:10;13234:11;:25;13246:12;:10;:12::i;:::-;13234:25;;;;;;;;;;;;;;;:34;13260:7;13234:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;13202:8;:80::i;:::-;13300:4;13293:11;;13097:215;;;;:::o;19975:301::-;2169:12;:10;:12::i;:::-;2158:23;;:7;:5;:7::i;:::-;:23;;;:95;;;;2234:3;2239:12;:10;:12::i;:::-;2213:39;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2203:50;;;;;;3522:66;2184:15;;:69;2158:95;2150:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;20125:8:::1;20115:7;;:18;;;;;;;;;;;;;;;;;;20160:14;20144:13;;:30;;;;;;;;;;;;;;;;;;20204:17;20185:16;:36;;;;20251:17;20232:16;:36;;;;19975:301:::0;;;;:::o;19832:135::-;2169:12;:10;:12::i;:::-;2158:23;;:7;:5;:7::i;:::-;:23;;;:95;;;;2234:3;2239:12;:10;:12::i;:::-;2213:39;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2203:50;;;;;;3522:66;2184:15;;:69;2158:95;2150:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;19944:15:::1;19921:10;:20;19932:8;19921:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;19832:135:::0;;:::o;19723:101::-;2169:12;:10;:12::i;:::-;2158:23;;:7;:5;:7::i;:::-;:23;;;:95;;;;2234:3;2239:12;:10;:12::i;:::-;2213:39;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2203:50;;;;;;3522:66;2184:15;;:69;2158:95;2150:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;19791:25:::1;19797:10;19809:6;19791:5;:25::i;:::-;19723:101:::0;:::o;10669:127::-;10743:7;10770:9;:18;10780:7;10770:18;;;;;;;;;;;;;;;;10763:25;;10669:127;;;:::o;2661:103::-;2169:12;:10;:12::i;:::-;2158:23;;:7;:5;:7::i;:::-;:23;;;:95;;;;2234:3;2239:12;:10;:12::i;:::-;2213:39;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2203:50;;;;;;3522:66;2184:15;;:69;2158:95;2150:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;2726:30:::1;2753:1;2726:18;:30::i;:::-;2661:103::o:0;19423:19::-;;;;;;;;;;;;;:::o;19525:28::-;;;;;;;;;;;;;:::o;19449:31::-;;;;:::o;1938:87::-;1984:7;2011:6;;;;;;;;;;;2004:13;;1938:87;:::o;9597:104::-;9653:13;9686:7;9679:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9597:104;:::o;13815:413::-;13908:4;13925:24;13952:11;:25;13964:12;:10;:12::i;:::-;13952:25;;;;;;;;;;;;;;;:34;13978:7;13952:34;;;;;;;;;;;;;;;;13925:61;;14025:15;14005:16;:35;;13997:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14118:67;14127:12;:10;:12::i;:::-;14141:7;14169:15;14150:16;:34;14118:8;:67::i;:::-;14216:4;14209:11;;;13815:413;;;;:::o;11009:175::-;11095:4;11112:42;11122:12;:10;:12::i;:::-;11136:9;11147:6;11112:9;:42::i;:::-;11172:4;11165:11;;11009:175;;;;:::o;11247:151::-;11336:7;11363:11;:18;11375:5;11363:18;;;;;;;;;;;;;;;:27;11382:7;11363:27;;;;;;;;;;;;;;;;11356:34;;11247:151;;;;:::o;2919:201::-;2169:12;:10;:12::i;:::-;2158:23;;:7;:5;:7::i;:::-;:23;;;:95;;;;2234:3;2239:12;:10;:12::i;:::-;2213:39;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2203:50;;;;;;3522:66;2184:15;;:69;2158:95;2150:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;3028:1:::1;3008:22;;:8;:22;;::::0;3000:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3084:28;3103:8;3084:18;:28::i;:::-;2919:201:::0;:::o;656:98::-;709:7;736:10;729:17;;656:98;:::o;17506:382::-;17661:1;17644:19;;:5;:19;;;17636:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17742:1;17723:21;;:7;:21;;;17715:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17826:6;17796:11;:18;17808:5;17796:18;;;;;;;;;;;;;;;:27;17815:7;17796:27;;;;;;;;;;;;;;;:36;;;;17864:7;17848:32;;17857:5;17848:32;;;17873:6;17848:32;;;;;;:::i;:::-;;;;;;;;17506:382;;;:::o;14718:733::-;14876:1;14858:20;;:6;:20;;;14850:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14960:1;14939:23;;:9;:23;;;14931:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15015:47;15036:6;15044:9;15055:6;15015:20;:47::i;:::-;15075:21;15099:9;:17;15109:6;15099:17;;;;;;;;;;;;;;;;15075:41;;15152:6;15135:13;:23;;15127:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15273:6;15257:13;:22;15237:9;:17;15247:6;15237:17;;;;;;;;;;;;;;;:42;;;;15325:6;15301:9;:20;15311:9;15301:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;15366:9;15349:35;;15358:6;15349:35;;;15377:6;15349:35;;;;;;:::i;:::-;;;;;;;;15397:46;15417:6;15425:9;15436:6;15397:19;:46::i;:::-;14839:612;14718:733;;;:::o;15738:399::-;15841:1;15822:21;;:7;:21;;;15814:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;15892:49;15921:1;15925:7;15934:6;15892:20;:49::i;:::-;15970:6;15954:12;;:22;;;;;;;:::i;:::-;;;;;;;;16009:6;15987:9;:18;15997:7;15987:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;16052:7;16031:37;;16048:1;16031:37;;;16061:6;16031:37;;;;;;:::i;:::-;;;;;;;;16081:48;16109:1;16113:7;16122:6;16081:19;:48::i;:::-;15738:399;;:::o;3280:191::-;3354:16;3373:6;;;;;;;;;;;3354:25;;3399:8;3390:6;;:17;;;;;;;;;;;;;;;;;;3454:8;3423:40;;3444:8;3423:40;;;;;;;;;;;;3343:128;3280:191;:::o;20284:586::-;20438:10;:14;20449:2;20438:14;;;;;;;;;;;;;;;;;;;;;;;;;20437:15;:36;;;;;20457:10;:16;20468:4;20457:16;;;;;;;;;;;;;;;;;;;;;;;;;20456:17;20437:36;20429:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;20531:1;20506:27;;:13;;;;;;;;;;;:27;;;20502:148;;20566:7;:5;:7::i;:::-;20558:15;;:4;:15;;;:32;;;;20583:7;:5;:7::i;:::-;20577:13;;:2;:13;;;20558:32;20550:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20632:7;;20502:148;20666:7;;;;;;;;;;;:32;;;;;20685:13;;;;;;;;;;;20677:21;;:4;:21;;;20666:32;:49;;;;;20708:7;:5;:7::i;:::-;20702:13;;:2;:13;;;;20666:49;20662:201;;;20772:16;;20762:6;20740:19;20756:2;20740:15;:19::i;:::-;:28;;;;:::i;:::-;:48;;:100;;;;;20824:16;;20814:6;20792:19;20808:2;20792:15;:19::i;:::-;:28;;;;:::i;:::-;:48;;20740:100;20732:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;20662:201;20284:586;;;;:::o;19217:124::-;;;;:::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:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:116::-;5258:21;5273:5;5258:21;:::i;:::-;5251:5;5248:32;5238:60;;5294:1;5291;5284:12;5238:60;5188:116;:::o;5310:133::-;5353:5;5391:6;5378:20;5369:29;;5407:30;5431:5;5407:30;:::i;:::-;5310:133;;;;:::o;5449:759::-;5532:6;5540;5548;5556;5605:3;5593:9;5584:7;5580:23;5576:33;5573:120;;;5612:79;;:::i;:::-;5573:120;5732:1;5757:50;5799:7;5790:6;5779:9;5775:22;5757:50;:::i;:::-;5747:60;;5703:114;5856:2;5882:53;5927:7;5918:6;5907:9;5903:22;5882:53;:::i;:::-;5872:63;;5827:118;5984:2;6010:53;6055:7;6046:6;6035:9;6031:22;6010:53;:::i;:::-;6000:63;;5955:118;6112:2;6138:53;6183:7;6174:6;6163:9;6159:22;6138:53;:::i;:::-;6128:63;;6083:118;5449:759;;;;;;;:::o;6214:468::-;6279:6;6287;6336:2;6324:9;6315:7;6311:23;6307:32;6304:119;;;6342:79;;:::i;:::-;6304:119;6462:1;6487:53;6532:7;6523:6;6512:9;6508:22;6487:53;:::i;:::-;6477:63;;6433:117;6589:2;6615:50;6657:7;6648:6;6637:9;6633:22;6615:50;:::i;:::-;6605:60;;6560:115;6214:468;;;;;:::o;6688:329::-;6747:6;6796:2;6784:9;6775:7;6771:23;6767:32;6764:119;;;6802:79;;:::i;:::-;6764:119;6922:1;6947:53;6992:7;6983:6;6972:9;6968:22;6947:53;:::i;:::-;6937:63;;6893:117;6688:329;;;;:::o;7023:118::-;7110:24;7128:5;7110:24;:::i;:::-;7105:3;7098:37;7023:118;;:::o;7147:222::-;7240:4;7278:2;7267:9;7263:18;7255:26;;7291:71;7359:1;7348:9;7344:17;7335:6;7291:71;:::i;:::-;7147:222;;;;:::o;7375:474::-;7443:6;7451;7500:2;7488:9;7479:7;7475:23;7471:32;7468:119;;;7506:79;;:::i;:::-;7468:119;7626:1;7651:53;7696:7;7687:6;7676:9;7672:22;7651:53;:::i;:::-;7641:63;;7597:117;7753:2;7779:53;7824:7;7815:6;7804:9;7800:22;7779:53;:::i;:::-;7769:63;;7724:118;7375:474;;;;;:::o;7855:180::-;7903:77;7900:1;7893:88;8000:4;7997:1;7990:15;8024:4;8021:1;8014:15;8041:320;8085:6;8122:1;8116:4;8112:12;8102:22;;8169:1;8163:4;8159:12;8190:18;8180:81;;8246:4;8238:6;8234:17;8224:27;;8180:81;8308:2;8300:6;8297:14;8277:18;8274:38;8271:84;;8327:18;;:::i;:::-;8271:84;8092:269;8041:320;;;:::o;8367:227::-;8507:34;8503:1;8495:6;8491:14;8484:58;8576:10;8571:2;8563:6;8559:15;8552:35;8367:227;:::o;8600:366::-;8742:3;8763:67;8827:2;8822:3;8763:67;:::i;:::-;8756:74;;8839:93;8928:3;8839:93;:::i;:::-;8957:2;8952:3;8948:12;8941:19;;8600:366;;;:::o;8972:419::-;9138:4;9176:2;9165:9;9161:18;9153:26;;9225:9;9219:4;9215:20;9211:1;9200:9;9196:17;9189:47;9253:131;9379:4;9253:131;:::i;:::-;9245:139;;8972:419;;;:::o;9397:180::-;9445:77;9442:1;9435:88;9542:4;9539:1;9532:15;9566:4;9563:1;9556:15;9583:191;9623:3;9642:20;9660:1;9642:20;:::i;:::-;9637:25;;9676:20;9694:1;9676:20;:::i;:::-;9671:25;;9719:1;9716;9712:9;9705:16;;9740:3;9737:1;9734:10;9731:36;;;9747:18;;:::i;:::-;9731:36;9583:191;;;;:::o;9780:156::-;9920:8;9916:1;9908:6;9904:14;9897:32;9780:156;:::o;9942:365::-;10084:3;10105:66;10169:1;10164:3;10105:66;:::i;:::-;10098:73;;10180:93;10269:3;10180:93;:::i;:::-;10298:2;10293:3;10289:12;10282:19;;9942:365;;;:::o;10313:87::-;10360:7;10389:5;10378:16;;10313:87;;;:::o;10406:89::-;10442:7;10482:6;10475:5;10471:18;10460:29;;10406:89;;;:::o;10501:60::-;10529:3;10550:5;10543:12;;10501:60;;;:::o;10567:160::-;10626:9;10659:62;10676:44;10685:34;10713:5;10685:34;:::i;:::-;10676:44;:::i;:::-;10659:62;:::i;:::-;10646:75;;10567:160;;;:::o;10733:149::-;10829:46;10869:5;10829:46;:::i;:::-;10824:3;10817:59;10733:149;;:::o;10888:657::-;11119:4;11157:2;11146:9;11142:18;11134:26;;11206:9;11200:4;11196:20;11192:1;11181:9;11177:17;11170:47;11234:131;11360:4;11234:131;:::i;:::-;11226:139;;11375:81;11452:2;11441:9;11437:18;11428:6;11375:81;:::i;:::-;11466:72;11534:2;11523:9;11519:18;11510:6;11466:72;:::i;:::-;10888:657;;;;;:::o;11551:182::-;11691:34;11687:1;11679:6;11675:14;11668:58;11551:182;:::o;11739:366::-;11881:3;11902:67;11966:2;11961:3;11902:67;:::i;:::-;11895:74;;11978:93;12067:3;11978:93;:::i;:::-;12096:2;12091:3;12087:12;12080:19;;11739:366;;;:::o;12111:419::-;12277:4;12315:2;12304:9;12300:18;12292:26;;12364:9;12358:4;12354:20;12350:1;12339:9;12335:17;12328:47;12392:131;12518:4;12392:131;:::i;:::-;12384:139;;12111:419;;;:::o;12536:224::-;12676:34;12672:1;12664:6;12660:14;12653:58;12745:7;12740:2;12732:6;12728:15;12721:32;12536:224;:::o;12766:366::-;12908:3;12929:67;12993:2;12988:3;12929:67;:::i;:::-;12922:74;;13005:93;13094:3;13005:93;:::i;:::-;13123:2;13118:3;13114:12;13107:19;;12766:366;;;:::o;13138:419::-;13304:4;13342:2;13331:9;13327:18;13319:26;;13391:9;13385:4;13381:20;13377:1;13366:9;13362:17;13355:47;13419:131;13545:4;13419:131;:::i;:::-;13411:139;;13138:419;;;:::o;13563:225::-;13703:34;13699:1;13691:6;13687:14;13680:58;13772:8;13767:2;13759:6;13755:15;13748:33;13563:225;:::o;13794:366::-;13936:3;13957:67;14021:2;14016:3;13957:67;:::i;:::-;13950:74;;14033:93;14122:3;14033:93;:::i;:::-;14151:2;14146:3;14142:12;14135:19;;13794:366;;;:::o;14166:419::-;14332:4;14370:2;14359:9;14355:18;14347:26;;14419:9;14413:4;14409:20;14405:1;14394:9;14390:17;14383:47;14447:131;14573:4;14447:131;:::i;:::-;14439:139;;14166:419;;;:::o;14591:223::-;14731:34;14727:1;14719:6;14715:14;14708:58;14800:6;14795:2;14787:6;14783:15;14776:31;14591:223;:::o;14820:366::-;14962:3;14983:67;15047:2;15042:3;14983:67;:::i;:::-;14976:74;;15059:93;15148:3;15059:93;:::i;:::-;15177:2;15172:3;15168:12;15161:19;;14820:366;;;:::o;15192:419::-;15358:4;15396:2;15385:9;15381:18;15373:26;;15445:9;15439:4;15435:20;15431:1;15420:9;15416:17;15409:47;15473:131;15599:4;15473:131;:::i;:::-;15465:139;;15192:419;;;:::o;15617:221::-;15757:34;15753:1;15745:6;15741:14;15734:58;15826:4;15821:2;15813:6;15809:15;15802:29;15617:221;:::o;15844:366::-;15986:3;16007:67;16071:2;16066:3;16007:67;:::i;:::-;16000:74;;16083:93;16172:3;16083:93;:::i;:::-;16201:2;16196:3;16192:12;16185:19;;15844:366;;;:::o;16216:419::-;16382:4;16420:2;16409:9;16405:18;16397:26;;16469:9;16463:4;16459:20;16455:1;16444:9;16440:17;16433:47;16497:131;16623:4;16497:131;:::i;:::-;16489:139;;16216:419;;;:::o;16641:224::-;16781:34;16777:1;16769:6;16765:14;16758:58;16850:7;16845:2;16837:6;16833:15;16826:32;16641:224;:::o;16871:366::-;17013:3;17034:67;17098:2;17093:3;17034:67;:::i;:::-;17027:74;;17110:93;17199:3;17110:93;:::i;:::-;17228:2;17223:3;17219:12;17212:19;;16871:366;;;:::o;17243:419::-;17409:4;17447:2;17436:9;17432:18;17424:26;;17496:9;17490:4;17486:20;17482:1;17471:9;17467:17;17460:47;17524:131;17650:4;17524:131;:::i;:::-;17516:139;;17243:419;;;:::o;17668:222::-;17808:34;17804:1;17796:6;17792:14;17785:58;17877:5;17872:2;17864:6;17860:15;17853:30;17668:222;:::o;17896:366::-;18038:3;18059:67;18123:2;18118:3;18059:67;:::i;:::-;18052:74;;18135:93;18224:3;18135:93;:::i;:::-;18253:2;18248:3;18244:12;18237:19;;17896:366;;;:::o;18268:419::-;18434:4;18472:2;18461:9;18457:18;18449:26;;18521:9;18515:4;18511:20;18507:1;18496:9;18492:17;18485:47;18549:131;18675:4;18549:131;:::i;:::-;18541:139;;18268:419;;;:::o;18693:225::-;18833:34;18829:1;18821:6;18817:14;18810:58;18902:8;18897:2;18889:6;18885:15;18878:33;18693:225;:::o;18924:366::-;19066:3;19087:67;19151:2;19146:3;19087:67;:::i;:::-;19080:74;;19163:93;19252:3;19163:93;:::i;:::-;19281:2;19276:3;19272:12;19265:19;;18924:366;;;:::o;19296:419::-;19462:4;19500:2;19489:9;19485:18;19477:26;;19549:9;19543:4;19539:20;19535:1;19524:9;19520:17;19513:47;19577:131;19703:4;19577:131;:::i;:::-;19569:139;;19296:419;;;:::o;19721:181::-;19861:33;19857:1;19849:6;19845:14;19838:57;19721:181;:::o;19908:366::-;20050:3;20071:67;20135:2;20130:3;20071:67;:::i;:::-;20064:74;;20147:93;20236:3;20147:93;:::i;:::-;20265:2;20260:3;20256:12;20249:19;;19908:366;;;:::o;20280:419::-;20446:4;20484:2;20473:9;20469:18;20461:26;;20533:9;20527:4;20523:20;20519:1;20508:9;20504:17;20497:47;20561:131;20687:4;20561:131;:::i;:::-;20553:139;;20280:419;;;:::o;20705:161::-;20845:13;20841:1;20833:6;20829:14;20822:37;20705:161;:::o;20872:366::-;21014:3;21035:67;21099:2;21094:3;21035:67;:::i;:::-;21028:74;;21111:93;21200:3;21111:93;:::i;:::-;21229:2;21224:3;21220:12;21213:19;;20872:366;;;:::o;21244:419::-;21410:4;21448:2;21437:9;21433:18;21425:26;;21497:9;21491:4;21487:20;21483:1;21472:9;21468:17;21461:47;21525:131;21651:4;21525:131;:::i;:::-;21517:139;;21244:419;;;:::o;21669:172::-;21809:24;21805:1;21797:6;21793:14;21786:48;21669:172;:::o;21847:366::-;21989:3;22010:67;22074:2;22069:3;22010:67;:::i;:::-;22003:74;;22086:93;22175:3;22086:93;:::i;:::-;22204:2;22199:3;22195:12;22188:19;;21847:366;;;:::o;22219:419::-;22385:4;22423:2;22412:9;22408:18;22400:26;;22472:9;22466:4;22462:20;22458:1;22447:9;22443:17;22436:47;22500:131;22626:4;22500:131;:::i;:::-;22492:139;;22219:419;;;:::o;22644:156::-;22784:8;22780:1;22772:6;22768:14;22761:32;22644:156;:::o;22806:365::-;22948:3;22969:66;23033:1;23028:3;22969:66;:::i;:::-;22962:73;;23044:93;23133:3;23044:93;:::i;:::-;23162:2;23157:3;23153:12;23146:19;;22806:365;;;:::o;23177:419::-;23343:4;23381:2;23370:9;23366:18;23358:26;;23430:9;23424:4;23420:20;23416:1;23405:9;23401:17;23394:47;23458:131;23584:4;23458:131;:::i;:::-;23450:139;;23177:419;;;:::o

Swarm Source

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