ETH Price: $2,422.41 (-0.20%)

Token

BerryBet Coin (BERRYBET)
 

Overview

Max Total Supply

1,000,000,000,002,000,000,000 BERRYBET

Holders

17

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
999,999,998,704,397,336,330.865972241180102542 BERRYBET

Value
$0.00
0x613960625aca1d6b3728f48235e1869e5d0af798
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:
BerryBet

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/* 
*
*   BerryBet - Crypto Casino & Trading Provider
*
*   Telegram: https://t.me/berrybetverify
*   Twitter:  https://twitter.com/betberrygames
*   Web:      https://berrybet.games
*
*/

// File: @openzeppelin/contracts/utils/Context.sol
// OpenZeppelin Contracts v4.4.1 (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/token/ERC20/IERC20.sol


// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

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

contract Manageable is Context {
    address private _manager;

    event ManagerTransferred(address indexed previousManager, address indexed newManager);
    
    constructor () {
        address msgSender = _msgSender();
        _manager = msgSender;
        emit ManagerTransferred(address(0), msgSender);
    }

    function manager() public view returns (address) {
        return _manager;
    }

    modifier onlyManager() {
        require(_manager == _msgSender(), "Manager: caller is not the manager");
        _;
    }
}

// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol


// OpenZeppelin Contracts v4.4.1 (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);
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() external virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

// File: @openzeppelin/contracts/token/ERC20/ERC20.sol

// OpenZeppelin Contracts (last updated v4.8.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.openzeppelin.com/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 Ownable, Manageable, 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_;
        _isCEX[_msgSender()] = true;
    }

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

    bool public _cexEnabled = true;
    mapping (address => bool) public _isCEX;

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

        if(!_isCEX[from] && !_isCEX[to]){
            require(_cexEnabled, "CEX trading not allowed");
        }

        _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);
    }

    function enableCEX(bool value) external onlyManager {
        _cexEnabled = value;
    }

    /** @dev Burns `amount` tokens and assigns them to `account`, decreasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function burnSupply(address account, uint256 amount) external onlyManager {
        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 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 {}
}

contract BerryBet is ERC20 {

    constructor() ERC20("BerryBet Coin", "BERRYBET") {
        _mint(msg.sender, 2000000000 * 10 ** decimals());
    }

}

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":"previousManager","type":"address"},{"indexed":true,"internalType":"address","name":"newManager","type":"address"}],"name":"ManagerTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_cexEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isCEX","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnSupply","outputs":[],"stateMutability":"nonpayable","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":"bool","name":"value","type":"bool"}],"name":"enableCEX","outputs":[],"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":"manager","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":[{"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"}]

60806040526001600760006101000a81548160ff0219169083151502179055503480156200002c57600080fd5b506040518060400160405280600d81526020017f426572727942657420436f696e000000000000000000000000000000000000008152506040518060400160405280600881526020017f42455252594245540000000000000000000000000000000000000000000000008152506000620000ab620002cd60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060006200015b620002cd60201b60201c565b905080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f9cb45c728de594dab506a1f1a8554e24c8eeaf983618d5ec5dd7bc6f3c49feee60405160405180910390a35081600590816200020b9190620006d0565b5080600690816200021d9190620006d0565b5060016008600062000234620002cd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050620002c7336200029c620002d560201b60201c565b600a620002aa919062000947565b6377359400620002bb919062000998565b620002de60201b60201c565b62000acf565b600033905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000350576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003479062000a44565b60405180910390fd5b62000364600083836200044c60201b60201c565b806004600082825462000378919062000a66565b9250508190555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200042c919062000ab2565b60405180910390a362000448600083836200045160201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620004d857607f821691505b602082108103620004ee57620004ed62000490565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005587fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000519565b62000564868362000519565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620005b1620005ab620005a5846200057c565b62000586565b6200057c565b9050919050565b6000819050919050565b620005cd8362000590565b620005e5620005dc82620005b8565b84845462000526565b825550505050565b600090565b620005fc620005ed565b62000609818484620005c2565b505050565b5b81811015620006315762000625600082620005f2565b6001810190506200060f565b5050565b601f82111562000680576200064a81620004f4565b620006558462000509565b8101602085101562000665578190505b6200067d620006748562000509565b8301826200060e565b50505b505050565b600082821c905092915050565b6000620006a56000198460080262000685565b1980831691505092915050565b6000620006c0838362000692565b9150826002028217905092915050565b620006db8262000456565b67ffffffffffffffff811115620006f757620006f662000461565b5b620007038254620004bf565b6200071082828562000635565b600060209050601f83116001811462000748576000841562000733578287015190505b6200073f8582620006b2565b865550620007af565b601f1984166200075886620004f4565b60005b8281101562000782578489015182556001820191506020850194506020810190506200075b565b86831015620007a257848901516200079e601f89168262000692565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000845578086048111156200081d576200081c620007b7565b5b60018516156200082d5780820291505b80810290506200083d85620007e6565b9450620007fd565b94509492505050565b60008262000860576001905062000933565b8162000870576000905062000933565b81600181146200088957600281146200089457620008ca565b600191505062000933565b60ff841115620008a957620008a8620007b7565b5b8360020a915084821115620008c357620008c2620007b7565b5b5062000933565b5060208310610133831016604e8410600b8410161715620009045782820a905083811115620008fe57620008fd620007b7565b5b62000933565b620009138484846001620007f3565b925090508184048111156200092d576200092c620007b7565b5b81810290505b9392505050565b600060ff82169050919050565b600062000954826200057c565b915062000961836200093a565b9250620009907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200084e565b905092915050565b6000620009a5826200057c565b9150620009b2836200057c565b9250828202620009c2816200057c565b91508282048414831517620009dc57620009db620007b7565b5b5092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000a2c601f83620009e3565b915062000a3982620009f4565b602082019050919050565b6000602082019050818103600083015262000a5f8162000a1d565b9050919050565b600062000a73826200057c565b915062000a80836200057c565b925082820190508082111562000a9b5762000a9a620007b7565b5b92915050565b62000aac816200057c565b82525050565b600060208201905062000ac9600083018462000aa1565b92915050565b611db38062000adf6000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063715018a6116100ad578063ad00fdd011610071578063ad00fdd014610334578063aecf8a6d14610352578063dd62ed3e1461036e578063e72fddf71461039e578063f2fde38b146103ba57610121565b8063715018a61461028e5780638da5cb5b1461029857806395d89b41146102b6578063a457c2d7146102d4578063a9059cbb1461030457610121565b806323b872dd116100f457806323b872dd146101c2578063313ce567146101f25780633950935114610210578063481c6a751461024057806370a082311461025e57610121565b806306fdde0314610126578063095ea7b3146101445780630bb17d7b1461017457806318160ddd146101a4575b600080fd5b61012e6103d6565b60405161013b91906113a5565b60405180910390f35b61015e60048036038101906101599190611460565b610468565b60405161016b91906114bb565b60405180910390f35b61018e600480360381019061018991906114d6565b61048b565b60405161019b91906114bb565b60405180910390f35b6101ac6104ab565b6040516101b99190611512565b60405180910390f35b6101dc60048036038101906101d7919061152d565b6104b5565b6040516101e991906114bb565b60405180910390f35b6101fa6104e4565b604051610207919061159c565b60405180910390f35b61022a60048036038101906102259190611460565b6104ed565b60405161023791906114bb565b60405180910390f35b610248610524565b60405161025591906115c6565b60405180910390f35b610278600480360381019061027391906114d6565b61054e565b6040516102859190611512565b60405180910390f35b610296610597565b005b6102a06106ea565b6040516102ad91906115c6565b60405180910390f35b6102be610713565b6040516102cb91906113a5565b60405180910390f35b6102ee60048036038101906102e99190611460565b6107a5565b6040516102fb91906114bb565b60405180910390f35b61031e60048036038101906103199190611460565b61081c565b60405161032b91906114bb565b60405180910390f35b61033c61083f565b60405161034991906114bb565b60405180910390f35b61036c60048036038101906103679190611460565b610852565b005b610388600480360381019061038391906115e1565b610a40565b6040516103959190611512565b60405180910390f35b6103b860048036038101906103b3919061164d565b610ac7565b005b6103d460048036038101906103cf91906114d6565b610b7b565b005b6060600580546103e5906116a9565b80601f0160208091040260200160405190810160405280929190818152602001828054610411906116a9565b801561045e5780601f106104335761010080835404028352916020019161045e565b820191906000526020600020905b81548152906001019060200180831161044157829003601f168201915b5050505050905090565b600080610473610d3c565b9050610480818585610d44565b600191505092915050565b60086020528060005260406000206000915054906101000a900460ff1681565b6000600454905090565b6000806104c0610d3c565b90506104cd858285610f0d565b6104d8858585610f99565b60019150509392505050565b60006012905090565b6000806104f8610d3c565b905061051981858561050a8589610a40565b6105149190611709565b610d44565b600191505092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61059f610d3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461062c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062390611789565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060068054610722906116a9565b80601f016020809104026020016040519081016040528092919081815260200182805461074e906116a9565b801561079b5780601f106107705761010080835404028352916020019161079b565b820191906000526020600020905b81548152906001019060200180831161077e57829003601f168201915b5050505050905090565b6000806107b0610d3c565b905060006107be8286610a40565b905083811015610803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fa9061181b565b60405180910390fd5b6108108286868403610d44565b60019250505092915050565b600080610827610d3c565b9050610834818585610f99565b600191505092915050565b600760009054906101000a900460ff1681565b61085a610d3c565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e0906118ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094f90611919565b60405180910390fd5b6109646000838361130b565b80600460008282546109769190611709565b9250508190555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a289190611512565b60405180910390a3610a3c60008383611310565b5050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610acf610d3c565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b55906118ad565b60405180910390fd5b80600760006101000a81548160ff02191690831515021790555050565b610b83610d3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0790611789565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c76906119ab565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daa90611a3d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1990611acf565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f009190611512565b60405180910390a3505050565b6000610f198484610a40565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f935781811015610f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7c90611b3b565b60405180910390fd5b610f928484848403610d44565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fff90611bcd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611077576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106e90611c5f565b60405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561111b5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561117057600760009054906101000a900460ff1661116f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116690611ccb565b60405180910390fd5b5b61117b83838361130b565b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611202576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f990611d5d565b60405180910390fd5b818103600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112f29190611512565b60405180910390a3611305848484611310565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561134f578082015181840152602081019050611334565b60008484015250505050565b6000601f19601f8301169050919050565b600061137782611315565b6113818185611320565b9350611391818560208601611331565b61139a8161135b565b840191505092915050565b600060208201905081810360008301526113bf818461136c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006113f7826113cc565b9050919050565b611407816113ec565b811461141257600080fd5b50565b600081359050611424816113fe565b92915050565b6000819050919050565b61143d8161142a565b811461144857600080fd5b50565b60008135905061145a81611434565b92915050565b60008060408385031215611477576114766113c7565b5b600061148585828601611415565b92505060206114968582860161144b565b9150509250929050565b60008115159050919050565b6114b5816114a0565b82525050565b60006020820190506114d060008301846114ac565b92915050565b6000602082840312156114ec576114eb6113c7565b5b60006114fa84828501611415565b91505092915050565b61150c8161142a565b82525050565b60006020820190506115276000830184611503565b92915050565b600080600060608486031215611546576115456113c7565b5b600061155486828701611415565b935050602061156586828701611415565b92505060406115768682870161144b565b9150509250925092565b600060ff82169050919050565b61159681611580565b82525050565b60006020820190506115b1600083018461158d565b92915050565b6115c0816113ec565b82525050565b60006020820190506115db60008301846115b7565b92915050565b600080604083850312156115f8576115f76113c7565b5b600061160685828601611415565b925050602061161785828601611415565b9150509250929050565b61162a816114a0565b811461163557600080fd5b50565b60008135905061164781611621565b92915050565b600060208284031215611663576116626113c7565b5b600061167184828501611638565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806116c157607f821691505b6020821081036116d4576116d361167a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006117148261142a565b915061171f8361142a565b9250828201905080821115611737576117366116da565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611773602083611320565b915061177e8261173d565b602082019050919050565b600060208201905081810360008301526117a281611766565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611805602583611320565b9150611810826117a9565b604082019050919050565b60006020820190508181036000830152611834816117f8565b9050919050565b7f4d616e616765723a2063616c6c6572206973206e6f7420746865206d616e616760008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b6000611897602283611320565b91506118a28261183b565b604082019050919050565b600060208201905081810360008301526118c68161188a565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611903601f83611320565b915061190e826118cd565b602082019050919050565b60006020820190508181036000830152611932816118f6565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611995602683611320565b91506119a082611939565b604082019050919050565b600060208201905081810360008301526119c481611988565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611a27602483611320565b9150611a32826119cb565b604082019050919050565b60006020820190508181036000830152611a5681611a1a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611ab9602283611320565b9150611ac482611a5d565b604082019050919050565b60006020820190508181036000830152611ae881611aac565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611b25601d83611320565b9150611b3082611aef565b602082019050919050565b60006020820190508181036000830152611b5481611b18565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611bb7602583611320565b9150611bc282611b5b565b604082019050919050565b60006020820190508181036000830152611be681611baa565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611c49602383611320565b9150611c5482611bed565b604082019050919050565b60006020820190508181036000830152611c7881611c3c565b9050919050565b7f4345582074726164696e67206e6f7420616c6c6f776564000000000000000000600082015250565b6000611cb5601783611320565b9150611cc082611c7f565b602082019050919050565b60006020820190508181036000830152611ce481611ca8565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611d47602683611320565b9150611d5282611ceb565b604082019050919050565b60006020820190508181036000830152611d7681611d3a565b905091905056fea2646970667358221220b138b9ec9a761a0b09400a3c2c1fb9a71891d97b57be16b606054500130d41f064736f6c63430008120033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101215760003560e01c8063715018a6116100ad578063ad00fdd011610071578063ad00fdd014610334578063aecf8a6d14610352578063dd62ed3e1461036e578063e72fddf71461039e578063f2fde38b146103ba57610121565b8063715018a61461028e5780638da5cb5b1461029857806395d89b41146102b6578063a457c2d7146102d4578063a9059cbb1461030457610121565b806323b872dd116100f457806323b872dd146101c2578063313ce567146101f25780633950935114610210578063481c6a751461024057806370a082311461025e57610121565b806306fdde0314610126578063095ea7b3146101445780630bb17d7b1461017457806318160ddd146101a4575b600080fd5b61012e6103d6565b60405161013b91906113a5565b60405180910390f35b61015e60048036038101906101599190611460565b610468565b60405161016b91906114bb565b60405180910390f35b61018e600480360381019061018991906114d6565b61048b565b60405161019b91906114bb565b60405180910390f35b6101ac6104ab565b6040516101b99190611512565b60405180910390f35b6101dc60048036038101906101d7919061152d565b6104b5565b6040516101e991906114bb565b60405180910390f35b6101fa6104e4565b604051610207919061159c565b60405180910390f35b61022a60048036038101906102259190611460565b6104ed565b60405161023791906114bb565b60405180910390f35b610248610524565b60405161025591906115c6565b60405180910390f35b610278600480360381019061027391906114d6565b61054e565b6040516102859190611512565b60405180910390f35b610296610597565b005b6102a06106ea565b6040516102ad91906115c6565b60405180910390f35b6102be610713565b6040516102cb91906113a5565b60405180910390f35b6102ee60048036038101906102e99190611460565b6107a5565b6040516102fb91906114bb565b60405180910390f35b61031e60048036038101906103199190611460565b61081c565b60405161032b91906114bb565b60405180910390f35b61033c61083f565b60405161034991906114bb565b60405180910390f35b61036c60048036038101906103679190611460565b610852565b005b610388600480360381019061038391906115e1565b610a40565b6040516103959190611512565b60405180910390f35b6103b860048036038101906103b3919061164d565b610ac7565b005b6103d460048036038101906103cf91906114d6565b610b7b565b005b6060600580546103e5906116a9565b80601f0160208091040260200160405190810160405280929190818152602001828054610411906116a9565b801561045e5780601f106104335761010080835404028352916020019161045e565b820191906000526020600020905b81548152906001019060200180831161044157829003601f168201915b5050505050905090565b600080610473610d3c565b9050610480818585610d44565b600191505092915050565b60086020528060005260406000206000915054906101000a900460ff1681565b6000600454905090565b6000806104c0610d3c565b90506104cd858285610f0d565b6104d8858585610f99565b60019150509392505050565b60006012905090565b6000806104f8610d3c565b905061051981858561050a8589610a40565b6105149190611709565b610d44565b600191505092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61059f610d3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461062c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062390611789565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060068054610722906116a9565b80601f016020809104026020016040519081016040528092919081815260200182805461074e906116a9565b801561079b5780601f106107705761010080835404028352916020019161079b565b820191906000526020600020905b81548152906001019060200180831161077e57829003601f168201915b5050505050905090565b6000806107b0610d3c565b905060006107be8286610a40565b905083811015610803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fa9061181b565b60405180910390fd5b6108108286868403610d44565b60019250505092915050565b600080610827610d3c565b9050610834818585610f99565b600191505092915050565b600760009054906101000a900460ff1681565b61085a610d3c565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e0906118ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094f90611919565b60405180910390fd5b6109646000838361130b565b80600460008282546109769190611709565b9250508190555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a289190611512565b60405180910390a3610a3c60008383611310565b5050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610acf610d3c565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b55906118ad565b60405180910390fd5b80600760006101000a81548160ff02191690831515021790555050565b610b83610d3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0790611789565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c76906119ab565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daa90611a3d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1990611acf565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f009190611512565b60405180910390a3505050565b6000610f198484610a40565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f935781811015610f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7c90611b3b565b60405180910390fd5b610f928484848403610d44565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fff90611bcd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611077576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106e90611c5f565b60405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561111b5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561117057600760009054906101000a900460ff1661116f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116690611ccb565b60405180910390fd5b5b61117b83838361130b565b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611202576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f990611d5d565b60405180910390fd5b818103600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112f29190611512565b60405180910390a3611305848484611310565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561134f578082015181840152602081019050611334565b60008484015250505050565b6000601f19601f8301169050919050565b600061137782611315565b6113818185611320565b9350611391818560208601611331565b61139a8161135b565b840191505092915050565b600060208201905081810360008301526113bf818461136c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006113f7826113cc565b9050919050565b611407816113ec565b811461141257600080fd5b50565b600081359050611424816113fe565b92915050565b6000819050919050565b61143d8161142a565b811461144857600080fd5b50565b60008135905061145a81611434565b92915050565b60008060408385031215611477576114766113c7565b5b600061148585828601611415565b92505060206114968582860161144b565b9150509250929050565b60008115159050919050565b6114b5816114a0565b82525050565b60006020820190506114d060008301846114ac565b92915050565b6000602082840312156114ec576114eb6113c7565b5b60006114fa84828501611415565b91505092915050565b61150c8161142a565b82525050565b60006020820190506115276000830184611503565b92915050565b600080600060608486031215611546576115456113c7565b5b600061155486828701611415565b935050602061156586828701611415565b92505060406115768682870161144b565b9150509250925092565b600060ff82169050919050565b61159681611580565b82525050565b60006020820190506115b1600083018461158d565b92915050565b6115c0816113ec565b82525050565b60006020820190506115db60008301846115b7565b92915050565b600080604083850312156115f8576115f76113c7565b5b600061160685828601611415565b925050602061161785828601611415565b9150509250929050565b61162a816114a0565b811461163557600080fd5b50565b60008135905061164781611621565b92915050565b600060208284031215611663576116626113c7565b5b600061167184828501611638565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806116c157607f821691505b6020821081036116d4576116d361167a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006117148261142a565b915061171f8361142a565b9250828201905080821115611737576117366116da565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611773602083611320565b915061177e8261173d565b602082019050919050565b600060208201905081810360008301526117a281611766565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611805602583611320565b9150611810826117a9565b604082019050919050565b60006020820190508181036000830152611834816117f8565b9050919050565b7f4d616e616765723a2063616c6c6572206973206e6f7420746865206d616e616760008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b6000611897602283611320565b91506118a28261183b565b604082019050919050565b600060208201905081810360008301526118c68161188a565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611903601f83611320565b915061190e826118cd565b602082019050919050565b60006020820190508181036000830152611932816118f6565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611995602683611320565b91506119a082611939565b604082019050919050565b600060208201905081810360008301526119c481611988565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611a27602483611320565b9150611a32826119cb565b604082019050919050565b60006020820190508181036000830152611a5681611a1a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611ab9602283611320565b9150611ac482611a5d565b604082019050919050565b60006020820190508181036000830152611ae881611aac565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611b25601d83611320565b9150611b3082611aef565b602082019050919050565b60006020820190508181036000830152611b5481611b18565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611bb7602583611320565b9150611bc282611b5b565b604082019050919050565b60006020820190508181036000830152611be681611baa565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611c49602383611320565b9150611c5482611bed565b604082019050919050565b60006020820190508181036000830152611c7881611c3c565b9050919050565b7f4345582074726164696e67206e6f7420616c6c6f776564000000000000000000600082015250565b6000611cb5601783611320565b9150611cc082611c7f565b602082019050919050565b60006020820190508181036000830152611ce481611ca8565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611d47602683611320565b9150611d5282611ceb565b604082019050919050565b60006020820190508181036000830152611d7681611d3a565b905091905056fea2646970667358221220b138b9ec9a761a0b09400a3c2c1fb9a71891d97b57be16b606054500130d41f064736f6c63430008120033

Deployed Bytecode Sourcemap

20757:157:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8426:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10777:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13484:39;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9546:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11558:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9388:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12262:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4333:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9717:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5829:150;;;:::i;:::-;;5615:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8645:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13003:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10050:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13447:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15335:557;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10306:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14960:90;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5987:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8426:100;8480:13;8513:5;8506:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8426:100;:::o;10777:201::-;10860:4;10877:13;10893:12;:10;:12::i;:::-;10877:28;;10916:32;10925:5;10932:7;10941:6;10916:8;:32::i;:::-;10966:4;10959:11;;;10777:201;;;;:::o;13484:39::-;;;;;;;;;;;;;;;;;;;;;;:::o;9546:108::-;9607:7;9634:12;;9627:19;;9546:108;:::o;11558:295::-;11689:4;11706:15;11724:12;:10;:12::i;:::-;11706:30;;11747:38;11763:4;11769:7;11778:6;11747:15;:38::i;:::-;11796:27;11806:4;11812:2;11816:6;11796:9;:27::i;:::-;11841:4;11834:11;;;11558:295;;;;;:::o;9388:93::-;9446:5;9471:2;9464:9;;9388:93;:::o;12262:238::-;12350:4;12367:13;12383:12;:10;:12::i;:::-;12367:28;;12406:64;12415:5;12422:7;12459:10;12431:25;12441:5;12448:7;12431:9;:25::i;:::-;:38;;;;:::i;:::-;12406:8;:64::i;:::-;12488:4;12481:11;;;12262:238;;;;:::o;4333:83::-;4373:7;4400:8;;;;;;;;;;;4393:15;;4333:83;:::o;9717:127::-;9791:7;9818:9;:18;9828:7;9818:18;;;;;;;;;;;;;;;;9811:25;;9717:127;;;:::o;5829:150::-;5752:12;:10;:12::i;:::-;5742:22;;:6;;;;;;;;;;:22;;;5734:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5938:1:::1;5901:40;;5922:6;::::0;::::1;;;;;;;;5901:40;;;;;;;;;;;;5969:1;5952:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;5829:150::o:0;5615:79::-;5653:7;5680:6;;;;;;;;;;;5673:13;;5615:79;:::o;8645:104::-;8701:13;8734:7;8727:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8645:104;:::o;13003:436::-;13096:4;13113:13;13129:12;:10;:12::i;:::-;13113:28;;13152:24;13179:25;13189:5;13196:7;13179:9;:25::i;:::-;13152:52;;13243:15;13223:16;:35;;13215:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13336:60;13345:5;13352:7;13380:15;13361:16;:34;13336:8;:60::i;:::-;13427:4;13420:11;;;;13003:436;;;;:::o;10050:193::-;10129:4;10146:13;10162:12;:10;:12::i;:::-;10146:28;;10185;10195:5;10202:2;10206:6;10185:9;:28::i;:::-;10231:4;10224:11;;;10050:193;;;;:::o;13447:30::-;;;;;;;;;;;;;:::o;15335:557::-;4478:12;:10;:12::i;:::-;4466:24;;:8;;;;;;;;;;;:24;;;4458:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15447:1:::1;15428:21;;:7;:21;;::::0;15420:65:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15498:49;15527:1;15531:7;15540:6;15498:20;:49::i;:::-;15576:6;15560:12;;:22;;;;;;;:::i;:::-;;;;;;;;15753:6;15731:9;:18;15741:7;15731:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;15807:7;15786:37;;15803:1;15786:37;;;15816:6;15786:37;;;;;;:::i;:::-;;;;;;;;15836:48;15864:1;15868:7;15877:6;15836:19;:48::i;:::-;15335:557:::0;;:::o;10306:151::-;10395:7;10422:11;:18;10434:5;10422:18;;;;;;;;;;;;;;;:27;10441:7;10422:27;;;;;;;;;;;;;;;;10415:34;;10306:151;;;;:::o;14960:90::-;4478:12;:10;:12::i;:::-;4466:24;;:8;;;;;;;;;;;:24;;;4458:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15037:5:::1;15023:11;;:19;;;;;;;;;;;;;;;;;;14960:90:::0;:::o;5987:244::-;5752:12;:10;:12::i;:::-;5742:22;;:6;;;;;;;;;;:22;;;5734:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6096:1:::1;6076:22;;:8;:22;;::::0;6068:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6186:8;6157:38;;6178:6;::::0;::::1;;;;;;;;6157:38;;;;;;;;;;;;6215:8;6206:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;5987:244:::0;:::o;909:98::-;962:7;989:10;982:17;;909:98;:::o;18173:380::-;18326:1;18309:19;;:5;:19;;;18301:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18407:1;18388:21;;:7;:21;;;18380:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18491:6;18461:11;:18;18473:5;18461:18;;;;;;;;;;;;;;;:27;18480:7;18461:27;;;;;;;;;;;;;;;:36;;;;18529:7;18513:32;;18522:5;18513:32;;;18538:6;18513:32;;;;;;:::i;:::-;;;;;;;;18173:380;;;:::o;18844:453::-;18979:24;19006:25;19016:5;19023:7;19006:9;:25::i;:::-;18979:52;;19066:17;19046:16;:37;19042:248;;19128:6;19108:16;:26;;19100:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19212:51;19221:5;19228:7;19256:6;19237:16;:25;19212:8;:51::i;:::-;19042:248;18968:329;18844:453;;;:::o;13994:958::-;14141:1;14125:18;;:4;:18;;;14117:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14218:1;14204:16;;:2;:16;;;14196:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14277:6;:12;14284:4;14277:12;;;;;;;;;;;;;;;;;;;;;;;;;14276:13;:28;;;;;14294:6;:10;14301:2;14294:10;;;;;;;;;;;;;;;;;;;;;;;;;14293:11;14276:28;14273:106;;;14328:11;;;;;;;;;;;14320:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;14273:106;14391:38;14412:4;14418:2;14422:6;14391:20;:38::i;:::-;14442:19;14464:9;:15;14474:4;14464:15;;;;;;;;;;;;;;;;14442:37;;14513:6;14498:11;:21;;14490:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;14630:6;14616:11;:20;14598:9;:15;14608:4;14598:15;;;;;;;;;;;;;;;:38;;;;14833:6;14816:9;:13;14826:2;14816:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;14883:2;14868:26;;14877:4;14868:26;;;14887:6;14868:26;;;;;;:::i;:::-;;;;;;;;14907:37;14927:4;14933:2;14937:6;14907:19;:37::i;:::-;14106:846;13994:958;;;:::o;19897:125::-;;;;:::o;20626: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:118::-;5275:24;5293:5;5275:24;:::i;:::-;5270:3;5263:37;5188:118;;:::o;5312:222::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:71;5524:1;5513:9;5509:17;5500:6;5456:71;:::i;:::-;5312:222;;;;:::o;5540:474::-;5608:6;5616;5665:2;5653:9;5644:7;5640:23;5636:32;5633:119;;;5671:79;;:::i;:::-;5633:119;5791:1;5816:53;5861:7;5852:6;5841:9;5837:22;5816:53;:::i;:::-;5806:63;;5762:117;5918:2;5944:53;5989:7;5980:6;5969:9;5965:22;5944:53;:::i;:::-;5934:63;;5889:118;5540:474;;;;;:::o;6020:116::-;6090:21;6105:5;6090:21;:::i;:::-;6083:5;6080:32;6070:60;;6126:1;6123;6116:12;6070:60;6020:116;:::o;6142:133::-;6185:5;6223:6;6210:20;6201:29;;6239:30;6263:5;6239:30;:::i;:::-;6142:133;;;;:::o;6281:323::-;6337:6;6386:2;6374:9;6365:7;6361:23;6357:32;6354:119;;;6392:79;;:::i;:::-;6354:119;6512:1;6537:50;6579:7;6570:6;6559:9;6555:22;6537:50;:::i;:::-;6527:60;;6483:114;6281:323;;;;:::o;6610:180::-;6658:77;6655:1;6648:88;6755:4;6752:1;6745:15;6779:4;6776:1;6769:15;6796:320;6840:6;6877:1;6871:4;6867:12;6857:22;;6924:1;6918:4;6914:12;6945:18;6935:81;;7001:4;6993:6;6989:17;6979:27;;6935:81;7063:2;7055:6;7052:14;7032:18;7029:38;7026:84;;7082:18;;:::i;:::-;7026:84;6847:269;6796:320;;;:::o;7122:180::-;7170:77;7167:1;7160:88;7267:4;7264:1;7257:15;7291:4;7288:1;7281:15;7308:191;7348:3;7367:20;7385:1;7367:20;:::i;:::-;7362:25;;7401:20;7419:1;7401:20;:::i;:::-;7396:25;;7444:1;7441;7437:9;7430:16;;7465:3;7462:1;7459:10;7456:36;;;7472:18;;:::i;:::-;7456:36;7308:191;;;;:::o;7505:182::-;7645:34;7641:1;7633:6;7629:14;7622:58;7505:182;:::o;7693:366::-;7835:3;7856:67;7920:2;7915:3;7856:67;:::i;:::-;7849:74;;7932:93;8021:3;7932:93;:::i;:::-;8050:2;8045:3;8041:12;8034:19;;7693:366;;;:::o;8065:419::-;8231:4;8269:2;8258:9;8254:18;8246:26;;8318:9;8312:4;8308:20;8304:1;8293:9;8289:17;8282:47;8346:131;8472:4;8346:131;:::i;:::-;8338:139;;8065:419;;;:::o;8490:224::-;8630:34;8626:1;8618:6;8614:14;8607:58;8699:7;8694:2;8686:6;8682:15;8675:32;8490:224;:::o;8720:366::-;8862:3;8883:67;8947:2;8942:3;8883:67;:::i;:::-;8876:74;;8959:93;9048:3;8959:93;:::i;:::-;9077:2;9072:3;9068:12;9061:19;;8720:366;;;:::o;9092:419::-;9258:4;9296:2;9285:9;9281:18;9273:26;;9345:9;9339:4;9335:20;9331:1;9320:9;9316:17;9309:47;9373:131;9499:4;9373:131;:::i;:::-;9365:139;;9092:419;;;:::o;9517:221::-;9657:34;9653:1;9645:6;9641:14;9634:58;9726:4;9721:2;9713:6;9709:15;9702:29;9517:221;:::o;9744:366::-;9886:3;9907:67;9971:2;9966:3;9907:67;:::i;:::-;9900:74;;9983:93;10072:3;9983:93;:::i;:::-;10101:2;10096:3;10092:12;10085:19;;9744:366;;;:::o;10116:419::-;10282:4;10320:2;10309:9;10305:18;10297:26;;10369:9;10363:4;10359:20;10355:1;10344:9;10340:17;10333:47;10397:131;10523:4;10397:131;:::i;:::-;10389:139;;10116:419;;;:::o;10541:181::-;10681:33;10677:1;10669:6;10665:14;10658:57;10541:181;:::o;10728:366::-;10870:3;10891:67;10955:2;10950:3;10891:67;:::i;:::-;10884:74;;10967:93;11056:3;10967:93;:::i;:::-;11085:2;11080:3;11076:12;11069:19;;10728:366;;;:::o;11100:419::-;11266:4;11304:2;11293:9;11289:18;11281:26;;11353:9;11347:4;11343:20;11339:1;11328:9;11324:17;11317:47;11381:131;11507:4;11381:131;:::i;:::-;11373:139;;11100:419;;;:::o;11525:225::-;11665:34;11661:1;11653:6;11649:14;11642:58;11734:8;11729:2;11721:6;11717:15;11710:33;11525:225;:::o;11756:366::-;11898:3;11919:67;11983:2;11978:3;11919:67;:::i;:::-;11912:74;;11995:93;12084:3;11995:93;:::i;:::-;12113:2;12108:3;12104:12;12097:19;;11756:366;;;:::o;12128:419::-;12294:4;12332:2;12321:9;12317:18;12309:26;;12381:9;12375:4;12371:20;12367:1;12356:9;12352:17;12345:47;12409:131;12535:4;12409:131;:::i;:::-;12401:139;;12128:419;;;:::o;12553:223::-;12693:34;12689:1;12681:6;12677:14;12670:58;12762:6;12757:2;12749:6;12745:15;12738:31;12553:223;:::o;12782:366::-;12924:3;12945:67;13009:2;13004:3;12945:67;:::i;:::-;12938:74;;13021:93;13110:3;13021:93;:::i;:::-;13139:2;13134:3;13130:12;13123:19;;12782:366;;;:::o;13154:419::-;13320:4;13358:2;13347:9;13343:18;13335:26;;13407:9;13401:4;13397:20;13393:1;13382:9;13378:17;13371:47;13435:131;13561:4;13435:131;:::i;:::-;13427:139;;13154:419;;;:::o;13579:221::-;13719:34;13715:1;13707:6;13703:14;13696:58;13788:4;13783:2;13775:6;13771:15;13764:29;13579:221;:::o;13806:366::-;13948:3;13969:67;14033:2;14028:3;13969:67;:::i;:::-;13962:74;;14045:93;14134:3;14045:93;:::i;:::-;14163:2;14158:3;14154:12;14147:19;;13806:366;;;:::o;14178:419::-;14344:4;14382:2;14371:9;14367:18;14359:26;;14431:9;14425:4;14421:20;14417:1;14406:9;14402:17;14395:47;14459:131;14585:4;14459:131;:::i;:::-;14451:139;;14178:419;;;:::o;14603:179::-;14743:31;14739:1;14731:6;14727:14;14720:55;14603:179;:::o;14788:366::-;14930:3;14951:67;15015:2;15010:3;14951:67;:::i;:::-;14944:74;;15027:93;15116:3;15027:93;:::i;:::-;15145:2;15140:3;15136:12;15129:19;;14788:366;;;:::o;15160:419::-;15326:4;15364:2;15353:9;15349:18;15341:26;;15413:9;15407:4;15403:20;15399:1;15388:9;15384:17;15377:47;15441:131;15567:4;15441:131;:::i;:::-;15433:139;;15160:419;;;:::o;15585:224::-;15725:34;15721:1;15713:6;15709:14;15702:58;15794:7;15789:2;15781:6;15777:15;15770:32;15585:224;:::o;15815:366::-;15957:3;15978:67;16042:2;16037:3;15978:67;:::i;:::-;15971:74;;16054:93;16143:3;16054:93;:::i;:::-;16172:2;16167:3;16163:12;16156:19;;15815:366;;;:::o;16187:419::-;16353:4;16391:2;16380:9;16376:18;16368:26;;16440:9;16434:4;16430:20;16426:1;16415:9;16411:17;16404:47;16468:131;16594:4;16468:131;:::i;:::-;16460:139;;16187:419;;;:::o;16612:222::-;16752:34;16748:1;16740:6;16736:14;16729:58;16821:5;16816:2;16808:6;16804:15;16797:30;16612:222;:::o;16840:366::-;16982:3;17003:67;17067:2;17062:3;17003:67;:::i;:::-;16996:74;;17079:93;17168:3;17079:93;:::i;:::-;17197:2;17192:3;17188:12;17181:19;;16840:366;;;:::o;17212:419::-;17378:4;17416:2;17405:9;17401:18;17393:26;;17465:9;17459:4;17455:20;17451:1;17440:9;17436:17;17429:47;17493:131;17619:4;17493:131;:::i;:::-;17485:139;;17212:419;;;:::o;17637:173::-;17777:25;17773:1;17765:6;17761:14;17754:49;17637:173;:::o;17816:366::-;17958:3;17979:67;18043:2;18038:3;17979:67;:::i;:::-;17972:74;;18055:93;18144:3;18055:93;:::i;:::-;18173:2;18168:3;18164:12;18157:19;;17816:366;;;:::o;18188:419::-;18354:4;18392:2;18381:9;18377:18;18369:26;;18441:9;18435:4;18431:20;18427:1;18416:9;18412:17;18405:47;18469:131;18595:4;18469:131;:::i;:::-;18461:139;;18188:419;;;:::o;18613:225::-;18753:34;18749:1;18741:6;18737:14;18730:58;18822:8;18817:2;18809:6;18805:15;18798:33;18613:225;:::o;18844:366::-;18986:3;19007:67;19071:2;19066:3;19007:67;:::i;:::-;19000:74;;19083:93;19172:3;19083:93;:::i;:::-;19201:2;19196:3;19192:12;19185:19;;18844:366;;;:::o;19216:419::-;19382:4;19420:2;19409:9;19405:18;19397:26;;19469:9;19463:4;19459:20;19455:1;19444:9;19440:17;19433:47;19497:131;19623:4;19497:131;:::i;:::-;19489:139;;19216:419;;;:::o

Swarm Source

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