ETH Price: $3,658.80 (+2.24%)

Token

izumi Token (iZi)
 

Overview

Max Total Supply

2,000,000,000 iZi

Holders

3,716 ( -0.027%)

Market

Price

$0.01 @ 0.000003 ETH (+1.01%)

Onchain Market Cap

$21,403,200.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 iZi

Value
$0.00
0x7d1a098b0d61621ad0ad51ad6964a5f37e2148a4
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

izumi Finance is a platform providing programmable Liquidity As A Service (LaaS) on Uniswap V3 and Multi-chains, aimed to become the next-generation LaaS to support the future of on-chain liquidity.

Market

Volume (24H):$1,987,458.00
Market Capitalization:$0.00
Circulating Supply:0.00 iZi
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
izumiToken

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-08-25
*/

// SPDX-License-Identifier: MIT

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) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}


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


/**
 * @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 () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), 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(), "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 {
        emit OwnershipTransferred(_owner, address(0));
        _owner = 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");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

/**
 * @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 guidelines: functions revert instead
 * of 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 {
    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 defaut value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All three 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 returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual 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
     * overloaded;
     *
     * 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 returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);
    }

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

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

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;

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

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

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

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be 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 { }
}

contract OperableToken is ERC20, Ownable  {
  address public operator;
  mapping(address=>bool) public trusted;

  modifier onlyTrusted {
      require(trusted[msg.sender] || msg.sender == owner(), "not trusted");
      _;
  }
  modifier onlyOperator {
      require(msg.sender == operator, "operator only");
      _;
  }

  constructor(string memory name, string memory symbol) ERC20(name, symbol) {
    operator = msg.sender;
  }

  function transferOperator(address newOperator) public onlyOperator {
    require(newOperator != address(0), "zero operator");
    operator = newOperator;
  }

  function addTrusted(address user) public onlyOperator {
      trusted[user] = true;
  }

  function removeTrusted(address user) public onlyOperator {
      trusted[user] = false;
  }

  function mint(address account, uint amount) public onlyTrusted {
    _mint(account, amount);
  }

  function burn(address account, uint amount) public onlyTrusted {
    _burn(account, amount);
  }

}

contract izumiToken is OperableToken {
  constructor() OperableToken("izumi Token", "iZi") {}
}

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":"user","type":"address"}],"name":"addTrusted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","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":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"removeTrusted","outputs":[],"stateMutability":"nonpayable","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":"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":"newOperator","type":"address"}],"name":"transferOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"trusted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b506040518060400160405280600b81526020017f697a756d6920546f6b656e0000000000000000000000000000000000000000008152506040518060400160405280600381526020017f695a6900000000000000000000000000000000000000000000000000000000008152508181816003908051906020019062000098929190620001b6565b508060049080519060200190620000b1929190620001b6565b5050506000620000c6620001ae60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050620002cb565b600033905090565b828054620001c49062000266565b90600052602060002090601f016020900481019282620001e8576000855562000234565b82601f106200020357805160ff191683800117855562000234565b8280016001018555821562000234579182015b828111156200023357825182559160200191906001019062000216565b5b50905062000243919062000247565b5090565b5b808211156200026257600081600090555060010162000248565b5090565b600060028204905060018216806200027f57607f821691505b602082108114156200029657620002956200029c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61241180620002db6000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d71461033e578063a9059cbb1461036e578063d4d0d6e61461039e578063d55e62a0146103ba578063dd62ed3e146103d6578063f2fde38b1461040657610137565b806370a08231146102ac578063715018a6146102dc5780638da5cb5b146102e657806395d89b41146103045780639dc29fac1461032257610137565b8063313ce567116100ff578063313ce567146101f4578063395093511461021257806340c10f1914610242578063570ca7351461025e5780636e9821c21461027c57610137565b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461018a57806323b872dd146101a857806329605e77146101d8575b600080fd5b610144610422565b6040516101519190611fa6565b60405180910390f35b610174600480360381019061016f9190611983565b6104b4565b6040516101819190611f8b565b60405180910390f35b6101926104d2565b60405161019f91906121a8565b60405180910390f35b6101c260048036038101906101bd9190611934565b6104dc565b6040516101cf9190611f8b565b60405180910390f35b6101f260048036038101906101ed91906118cf565b6105dd565b005b6101fc610721565b60405161020991906121c3565b60405180910390f35b61022c60048036038101906102279190611983565b61072a565b6040516102399190611f8b565b60405180910390f35b61025c60048036038101906102579190611983565b6107d6565b005b6102666108ad565b6040516102739190611f70565b60405180910390f35b610296600480360381019061029191906118cf565b6108d3565b6040516102a39190611f8b565b60405180910390f35b6102c660048036038101906102c191906118cf565b6108f3565b6040516102d391906121a8565b60405180910390f35b6102e461093b565b005b6102ee610a78565b6040516102fb9190611f70565b60405180910390f35b61030c610aa2565b6040516103199190611fa6565b60405180910390f35b61033c60048036038101906103379190611983565b610b34565b005b61035860048036038101906103539190611983565b610c0b565b6040516103659190611f8b565b60405180910390f35b61038860048036038101906103839190611983565b610cff565b6040516103959190611f8b565b60405180910390f35b6103b860048036038101906103b391906118cf565b610d1d565b005b6103d460048036038101906103cf91906118cf565b610e08565b005b6103f060048036038101906103eb91906118f8565b610ef3565b6040516103fd91906121a8565b60405180910390f35b610420600480360381019061041b91906118cf565b610f7a565b005b6060600380546104319061230c565b80601f016020809104026020016040519081016040528092919081815260200182805461045d9061230c565b80156104aa5780601f1061047f576101008083540402835291602001916104aa565b820191906000526020600020905b81548152906001019060200180831161048d57829003601f168201915b5050505050905090565b60006104c86104c1611126565b848461112e565b6001905092915050565b6000600254905090565b60006104e98484846112f9565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610534611126565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156105b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ab906120a8565b60405180910390fd5b6105d1856105c0611126565b85846105cc9190612250565b61112e565b60019150509392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461066d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066490612088565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156106dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d4906120e8565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006012905090565b60006107cc610737611126565b848460016000610745611126565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107c791906121fa565b61112e565b6001905092915050565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806108605750610831610a78565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61089f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089690612048565b60405180910390fd5b6108a98282611578565b5050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60076020528060005260406000206000915054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610943611126565b73ffffffffffffffffffffffffffffffffffffffff16610961610a78565b73ffffffffffffffffffffffffffffffffffffffff16146109b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ae906120c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610ab19061230c565b80601f0160208091040260200160405190810160405280929190818152602001828054610add9061230c565b8015610b2a5780601f10610aff57610100808354040283529160200191610b2a565b820191906000526020600020905b815481529060010190602001808311610b0d57829003601f168201915b5050505050905090565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610bbe5750610b8f610a78565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf490612048565b60405180910390fd5b610c0782826116cc565b5050565b60008060016000610c1a611126565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cce90612168565b60405180910390fd5b610cf4610ce2611126565b858584610cef9190612250565b61112e565b600191505092915050565b6000610d13610d0c611126565b84846112f9565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da490612088565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8f90612088565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610f82611126565b73ffffffffffffffffffffffffffffffffffffffff16610fa0610a78565b73ffffffffffffffffffffffffffffffffffffffff1614610ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fed906120c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105d90612008565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561119e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119590612148565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561120e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120590612028565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112ec91906121a8565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611369576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136090612128565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d090611fc8565b60405180910390fd5b6113e48383836118a0565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561146a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146190612068565b60405180910390fd5b81816114769190612250565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461150691906121fa565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161156a91906121a8565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115df90612188565b60405180910390fd5b6115f4600083836118a0565b806002600082825461160691906121fa565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461165b91906121fa565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116c091906121a8565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561173c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173390612108565b60405180910390fd5b611748826000836118a0565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156117ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c590611fe8565b60405180910390fd5b81816117da9190612250565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816002600082825461182e9190612250565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161189391906121a8565b60405180910390a3505050565b505050565b6000813590506118b4816123ad565b92915050565b6000813590506118c9816123c4565b92915050565b6000602082840312156118e157600080fd5b60006118ef848285016118a5565b91505092915050565b6000806040838503121561190b57600080fd5b6000611919858286016118a5565b925050602061192a858286016118a5565b9150509250929050565b60008060006060848603121561194957600080fd5b6000611957868287016118a5565b9350506020611968868287016118a5565b9250506040611979868287016118ba565b9150509250925092565b6000806040838503121561199657600080fd5b60006119a4858286016118a5565b92505060206119b5858286016118ba565b9150509250929050565b6119c881612284565b82525050565b6119d781612296565b82525050565b60006119e8826121de565b6119f281856121e9565b9350611a028185602086016122d9565b611a0b8161239c565b840191505092915050565b6000611a236023836121e9565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611a896022836121e9565b91507f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611aef6026836121e9565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611b556022836121e9565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611bbb600b836121e9565b91507f6e6f7420747275737465640000000000000000000000000000000000000000006000830152602082019050919050565b6000611bfb6026836121e9565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611c61600d836121e9565b91507f6f70657261746f72206f6e6c79000000000000000000000000000000000000006000830152602082019050919050565b6000611ca16028836121e9565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611d076020836121e9565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000611d47600d836121e9565b91507f7a65726f206f70657261746f72000000000000000000000000000000000000006000830152602082019050919050565b6000611d876021836121e9565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611ded6025836121e9565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e536024836121e9565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611eb96025836121e9565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611f1f601f836121e9565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b611f5b816122c2565b82525050565b611f6a816122cc565b82525050565b6000602082019050611f8560008301846119bf565b92915050565b6000602082019050611fa060008301846119ce565b92915050565b60006020820190508181036000830152611fc081846119dd565b905092915050565b60006020820190508181036000830152611fe181611a16565b9050919050565b6000602082019050818103600083015261200181611a7c565b9050919050565b6000602082019050818103600083015261202181611ae2565b9050919050565b6000602082019050818103600083015261204181611b48565b9050919050565b6000602082019050818103600083015261206181611bae565b9050919050565b6000602082019050818103600083015261208181611bee565b9050919050565b600060208201905081810360008301526120a181611c54565b9050919050565b600060208201905081810360008301526120c181611c94565b9050919050565b600060208201905081810360008301526120e181611cfa565b9050919050565b6000602082019050818103600083015261210181611d3a565b9050919050565b6000602082019050818103600083015261212181611d7a565b9050919050565b6000602082019050818103600083015261214181611de0565b9050919050565b6000602082019050818103600083015261216181611e46565b9050919050565b6000602082019050818103600083015261218181611eac565b9050919050565b600060208201905081810360008301526121a181611f12565b9050919050565b60006020820190506121bd6000830184611f52565b92915050565b60006020820190506121d86000830184611f61565b92915050565b600081519050919050565b600082825260208201905092915050565b6000612205826122c2565b9150612210836122c2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156122455761224461233e565b5b828201905092915050565b600061225b826122c2565b9150612266836122c2565b9250828210156122795761227861233e565b5b828203905092915050565b600061228f826122a2565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156122f75780820151818401526020810190506122dc565b83811115612306576000848401525b50505050565b6000600282049050600182168061232457607f821691505b602082108114156123385761233761236d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b6123b681612284565b81146123c157600080fd5b50565b6123cd816122c2565b81146123d857600080fd5b5056fea264697066735822122002b6f4503f684e83c77ba7c9db42a9c8e35d25ff1df4fc3844e3e435820e6eaa64736f6c63430008000033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d71461033e578063a9059cbb1461036e578063d4d0d6e61461039e578063d55e62a0146103ba578063dd62ed3e146103d6578063f2fde38b1461040657610137565b806370a08231146102ac578063715018a6146102dc5780638da5cb5b146102e657806395d89b41146103045780639dc29fac1461032257610137565b8063313ce567116100ff578063313ce567146101f4578063395093511461021257806340c10f1914610242578063570ca7351461025e5780636e9821c21461027c57610137565b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461018a57806323b872dd146101a857806329605e77146101d8575b600080fd5b610144610422565b6040516101519190611fa6565b60405180910390f35b610174600480360381019061016f9190611983565b6104b4565b6040516101819190611f8b565b60405180910390f35b6101926104d2565b60405161019f91906121a8565b60405180910390f35b6101c260048036038101906101bd9190611934565b6104dc565b6040516101cf9190611f8b565b60405180910390f35b6101f260048036038101906101ed91906118cf565b6105dd565b005b6101fc610721565b60405161020991906121c3565b60405180910390f35b61022c60048036038101906102279190611983565b61072a565b6040516102399190611f8b565b60405180910390f35b61025c60048036038101906102579190611983565b6107d6565b005b6102666108ad565b6040516102739190611f70565b60405180910390f35b610296600480360381019061029191906118cf565b6108d3565b6040516102a39190611f8b565b60405180910390f35b6102c660048036038101906102c191906118cf565b6108f3565b6040516102d391906121a8565b60405180910390f35b6102e461093b565b005b6102ee610a78565b6040516102fb9190611f70565b60405180910390f35b61030c610aa2565b6040516103199190611fa6565b60405180910390f35b61033c60048036038101906103379190611983565b610b34565b005b61035860048036038101906103539190611983565b610c0b565b6040516103659190611f8b565b60405180910390f35b61038860048036038101906103839190611983565b610cff565b6040516103959190611f8b565b60405180910390f35b6103b860048036038101906103b391906118cf565b610d1d565b005b6103d460048036038101906103cf91906118cf565b610e08565b005b6103f060048036038101906103eb91906118f8565b610ef3565b6040516103fd91906121a8565b60405180910390f35b610420600480360381019061041b91906118cf565b610f7a565b005b6060600380546104319061230c565b80601f016020809104026020016040519081016040528092919081815260200182805461045d9061230c565b80156104aa5780601f1061047f576101008083540402835291602001916104aa565b820191906000526020600020905b81548152906001019060200180831161048d57829003601f168201915b5050505050905090565b60006104c86104c1611126565b848461112e565b6001905092915050565b6000600254905090565b60006104e98484846112f9565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610534611126565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156105b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ab906120a8565b60405180910390fd5b6105d1856105c0611126565b85846105cc9190612250565b61112e565b60019150509392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461066d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066490612088565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156106dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d4906120e8565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006012905090565b60006107cc610737611126565b848460016000610745611126565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107c791906121fa565b61112e565b6001905092915050565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806108605750610831610a78565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61089f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089690612048565b60405180910390fd5b6108a98282611578565b5050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60076020528060005260406000206000915054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610943611126565b73ffffffffffffffffffffffffffffffffffffffff16610961610a78565b73ffffffffffffffffffffffffffffffffffffffff16146109b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ae906120c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610ab19061230c565b80601f0160208091040260200160405190810160405280929190818152602001828054610add9061230c565b8015610b2a5780601f10610aff57610100808354040283529160200191610b2a565b820191906000526020600020905b815481529060010190602001808311610b0d57829003601f168201915b5050505050905090565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610bbe5750610b8f610a78565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf490612048565b60405180910390fd5b610c0782826116cc565b5050565b60008060016000610c1a611126565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cce90612168565b60405180910390fd5b610cf4610ce2611126565b858584610cef9190612250565b61112e565b600191505092915050565b6000610d13610d0c611126565b84846112f9565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da490612088565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8f90612088565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610f82611126565b73ffffffffffffffffffffffffffffffffffffffff16610fa0610a78565b73ffffffffffffffffffffffffffffffffffffffff1614610ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fed906120c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105d90612008565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561119e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119590612148565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561120e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120590612028565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112ec91906121a8565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611369576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136090612128565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d090611fc8565b60405180910390fd5b6113e48383836118a0565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561146a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146190612068565b60405180910390fd5b81816114769190612250565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461150691906121fa565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161156a91906121a8565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115df90612188565b60405180910390fd5b6115f4600083836118a0565b806002600082825461160691906121fa565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461165b91906121fa565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116c091906121a8565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561173c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173390612108565b60405180910390fd5b611748826000836118a0565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156117ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c590611fe8565b60405180910390fd5b81816117da9190612250565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816002600082825461182e9190612250565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161189391906121a8565b60405180910390a3505050565b505050565b6000813590506118b4816123ad565b92915050565b6000813590506118c9816123c4565b92915050565b6000602082840312156118e157600080fd5b60006118ef848285016118a5565b91505092915050565b6000806040838503121561190b57600080fd5b6000611919858286016118a5565b925050602061192a858286016118a5565b9150509250929050565b60008060006060848603121561194957600080fd5b6000611957868287016118a5565b9350506020611968868287016118a5565b9250506040611979868287016118ba565b9150509250925092565b6000806040838503121561199657600080fd5b60006119a4858286016118a5565b92505060206119b5858286016118ba565b9150509250929050565b6119c881612284565b82525050565b6119d781612296565b82525050565b60006119e8826121de565b6119f281856121e9565b9350611a028185602086016122d9565b611a0b8161239c565b840191505092915050565b6000611a236023836121e9565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611a896022836121e9565b91507f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611aef6026836121e9565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611b556022836121e9565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611bbb600b836121e9565b91507f6e6f7420747275737465640000000000000000000000000000000000000000006000830152602082019050919050565b6000611bfb6026836121e9565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611c61600d836121e9565b91507f6f70657261746f72206f6e6c79000000000000000000000000000000000000006000830152602082019050919050565b6000611ca16028836121e9565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611d076020836121e9565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000611d47600d836121e9565b91507f7a65726f206f70657261746f72000000000000000000000000000000000000006000830152602082019050919050565b6000611d876021836121e9565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611ded6025836121e9565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e536024836121e9565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611eb96025836121e9565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611f1f601f836121e9565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b611f5b816122c2565b82525050565b611f6a816122cc565b82525050565b6000602082019050611f8560008301846119bf565b92915050565b6000602082019050611fa060008301846119ce565b92915050565b60006020820190508181036000830152611fc081846119dd565b905092915050565b60006020820190508181036000830152611fe181611a16565b9050919050565b6000602082019050818103600083015261200181611a7c565b9050919050565b6000602082019050818103600083015261202181611ae2565b9050919050565b6000602082019050818103600083015261204181611b48565b9050919050565b6000602082019050818103600083015261206181611bae565b9050919050565b6000602082019050818103600083015261208181611bee565b9050919050565b600060208201905081810360008301526120a181611c54565b9050919050565b600060208201905081810360008301526120c181611c94565b9050919050565b600060208201905081810360008301526120e181611cfa565b9050919050565b6000602082019050818103600083015261210181611d3a565b9050919050565b6000602082019050818103600083015261212181611d7a565b9050919050565b6000602082019050818103600083015261214181611de0565b9050919050565b6000602082019050818103600083015261216181611e46565b9050919050565b6000602082019050818103600083015261218181611eac565b9050919050565b600060208201905081810360008301526121a181611f12565b9050919050565b60006020820190506121bd6000830184611f52565b92915050565b60006020820190506121d86000830184611f61565b92915050565b600081519050919050565b600082825260208201905092915050565b6000612205826122c2565b9150612210836122c2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156122455761224461233e565b5b828201905092915050565b600061225b826122c2565b9150612266836122c2565b9250828210156122795761227861233e565b5b828203905092915050565b600061228f826122a2565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156122f75780820151818401526020810190506122dc565b83811115612306576000848401525b50505050565b6000600282049050600182168061232457607f821691505b602082108114156123385761233761236d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b6123b681612284565b81146123c157600080fd5b50565b6123cd816122c2565b81146123d857600080fd5b5056fea264697066735822122002b6f4503f684e83c77ba7c9db42a9c8e35d25ff1df4fc3844e3e435820e6eaa64736f6c63430008000033

Deployed Bytecode Sourcemap

17602:97:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7835:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9975:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8928:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10626:422;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17031:160;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8779:84;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11457:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17391:98;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16626:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16654:37;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9099:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5325:148;;;:::i;:::-;;4674:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8045:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17495:98;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12175:377;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9439:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17197:89;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17292:93;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9677:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5628:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7835:91;7880:13;7913:5;7906:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7835:91;:::o;9975:169::-;10058:4;10075:39;10084:12;:10;:12::i;:::-;10098:7;10107:6;10075:8;:39::i;:::-;10132:4;10125:11;;9975:169;;;;:::o;8928:108::-;8989:7;9016:12;;9009:19;;8928:108;:::o;10626:422::-;10732:4;10749:36;10759:6;10767:9;10778:6;10749:9;:36::i;:::-;10798:24;10825:11;:19;10837:6;10825:19;;;;;;;;;;;;;;;:33;10845:12;:10;:12::i;:::-;10825:33;;;;;;;;;;;;;;;;10798:60;;10897:6;10877:16;:26;;10869:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10959:57;10968:6;10976:12;:10;:12::i;:::-;11009:6;10990:16;:25;;;;:::i;:::-;10959:8;:57::i;:::-;11036:4;11029:11;;;10626:422;;;;;:::o;17031:160::-;16869:8;;;;;;;;;;;16855:22;;:10;:22;;;16847:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;17136:1:::1;17113:25;;:11;:25;;;;17105:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;17174:11;17163:8;;:22;;;;;;;;;;;;;;;;;;17031:160:::0;:::o;8779:84::-;8828:5;8853:2;8846:9;;8779:84;:::o;11457:215::-;11545:4;11562:80;11571:12;:10;:12::i;:::-;11585:7;11631:10;11594:11;:25;11606:12;:10;:12::i;:::-;11594:25;;;;;;;;;;;;;;;:34;11620:7;11594:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;11562:8;:80::i;:::-;11660:4;11653:11;;11457:215;;;;:::o;17391:98::-;16736:7;:19;16744:10;16736:19;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;16773:7;:5;:7::i;:::-;16759:21;;:10;:21;;;16736:44;16728:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17461:22:::1;17467:7;17476:6;17461:5;:22::i;:::-;17391:98:::0;;:::o;16626:23::-;;;;;;;;;;;;;:::o;16654:37::-;;;;;;;;;;;;;;;;;;;;;;:::o;9099:127::-;9173:7;9200:9;:18;9210:7;9200:18;;;;;;;;;;;;;;;;9193:25;;9099:127;;;:::o;5325:148::-;4905:12;:10;:12::i;:::-;4894:23;;:7;:5;:7::i;:::-;:23;;;4886:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5432:1:::1;5395:40;;5416:6;;;;;;;;;;;5395:40;;;;;;;;;;;;5463:1;5446:6;;:19;;;;;;;;;;;;;;;;;;5325:148::o:0;4674:87::-;4720:7;4747:6;;;;;;;;;;;4740:13;;4674:87;:::o;8045:95::-;8092:13;8125:7;8118:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8045:95;:::o;17495:98::-;16736:7;:19;16744:10;16736:19;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;16773:7;:5;:7::i;:::-;16759:21;;:10;:21;;;16736:44;16728:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17565:22:::1;17571:7;17580:6;17565:5;:22::i;:::-;17495:98:::0;;:::o;12175:377::-;12268:4;12285:24;12312:11;:25;12324:12;:10;:12::i;:::-;12312:25;;;;;;;;;;;;;;;:34;12338:7;12312:34;;;;;;;;;;;;;;;;12285:61;;12385:15;12365:16;:35;;12357:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;12453:67;12462:12;:10;:12::i;:::-;12476:7;12504:15;12485:16;:34;;;;:::i;:::-;12453:8;:67::i;:::-;12540:4;12533:11;;;12175:377;;;;:::o;9439:175::-;9525:4;9542:42;9552:12;:10;:12::i;:::-;9566:9;9577:6;9542:9;:42::i;:::-;9602:4;9595:11;;9439:175;;;;:::o;17197:89::-;16869:8;;;;;;;;;;;16855:22;;:10;:22;;;16847:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;17276:4:::1;17260:7;:13;17268:4;17260:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;17197:89:::0;:::o;17292:93::-;16869:8;;;;;;;;;;;16855:22;;:10;:22;;;16847:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;17374:5:::1;17358:7;:13;17366:4;17358:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;17292:93:::0;:::o;9677:151::-;9766:7;9793:11;:18;9805:5;9793:18;;;;;;;;;;;;;;;:27;9812:7;9793:27;;;;;;;;;;;;;;;;9786:34;;9677:151;;;;:::o;5628:244::-;4905:12;:10;:12::i;:::-;4894:23;;:7;:5;:7::i;:::-;:23;;;4886:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5737:1:::1;5717:22;;:8;:22;;;;5709:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5827:8;5798:38;;5819:6;;;;;;;;;;;5798:38;;;;;;;;;;;;5856:8;5847:6;;:17;;;;;;;;;;;;;;;;;;5628:244:::0;:::o;601:98::-;654:7;681:10;674:17;;601:98;:::o;15531:346::-;15650:1;15633:19;;:5;:19;;;;15625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15731:1;15712:21;;:7;:21;;;;15704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15815:6;15785:11;:18;15797:5;15785:18;;;;;;;;;;;;;;;:27;15804:7;15785:27;;;;;;;;;;;;;;;:36;;;;15853:7;15837:32;;15846:5;15837:32;;;15862:6;15837:32;;;;;;:::i;:::-;;;;;;;;15531:346;;;:::o;13042:604::-;13166:1;13148:20;;:6;:20;;;;13140:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13250:1;13229:23;;:9;:23;;;;13221:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13305:47;13326:6;13334:9;13345:6;13305:20;:47::i;:::-;13365:21;13389:9;:17;13399:6;13389:17;;;;;;;;;;;;;;;;13365:41;;13442:6;13425:13;:23;;13417:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13538:6;13522:13;:22;;;;:::i;:::-;13502:9;:17;13512:6;13502:17;;;;;;;;;;;;;;;:42;;;;13579:6;13555:9;:20;13565:9;13555:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;13620:9;13603:35;;13612:6;13603:35;;;13631:6;13603:35;;;;;;:::i;:::-;;;;;;;;13042:604;;;;:::o;13928:338::-;14031:1;14012:21;;:7;:21;;;;14004:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;14082:49;14111:1;14115:7;14124:6;14082:20;:49::i;:::-;14160:6;14144:12;;:22;;;;;;;:::i;:::-;;;;;;;;14199:6;14177:9;:18;14187:7;14177:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;14242:7;14221:37;;14238:1;14221:37;;;14251:6;14221:37;;;;;;:::i;:::-;;;;;;;;13928:338;;:::o;14599:494::-;14702:1;14683:21;;:7;:21;;;;14675:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14755:49;14776:7;14793:1;14797:6;14755:20;:49::i;:::-;14817:22;14842:9;:18;14852:7;14842:18;;;;;;;;;;;;;;;;14817:43;;14897:6;14879:14;:24;;14871:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14991:6;14974:14;:23;;;;:::i;:::-;14953:9;:18;14963:7;14953:18;;;;;;;;;;;;;;;:44;;;;15024:6;15008:12;;:22;;;;;;;:::i;:::-;;;;;;;;15074:1;15048:37;;15057:7;15048:37;;;15078:6;15048:37;;;;;;:::i;:::-;;;;;;;;14599:494;;;:::o;16480:92::-;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;;405:2;393:9;384:7;380:23;376:32;373:2;;;421:1;418;411:12;373:2;464:1;489:53;534:7;525:6;514:9;510:22;489:53;:::i;:::-;479:63;;435:117;363:196;;;;:::o;565:407::-;;;690:2;678:9;669:7;665:23;661:32;658:2;;;706:1;703;696:12;658:2;749:1;774:53;819:7;810:6;799:9;795:22;774:53;:::i;:::-;764:63;;720:117;876:2;902:53;947:7;938:6;927:9;923:22;902:53;:::i;:::-;892:63;;847:118;648:324;;;;;:::o;978:552::-;;;;1120:2;1108:9;1099:7;1095:23;1091:32;1088:2;;;1136:1;1133;1126:12;1088:2;1179:1;1204:53;1249:7;1240:6;1229:9;1225:22;1204:53;:::i;:::-;1194:63;;1150:117;1306:2;1332:53;1377:7;1368:6;1357:9;1353:22;1332:53;:::i;:::-;1322:63;;1277:118;1434:2;1460:53;1505:7;1496:6;1485:9;1481:22;1460:53;:::i;:::-;1450:63;;1405:118;1078:452;;;;;:::o;1536:407::-;;;1661:2;1649:9;1640:7;1636:23;1632:32;1629:2;;;1677:1;1674;1667:12;1629:2;1720:1;1745:53;1790:7;1781:6;1770:9;1766:22;1745:53;:::i;:::-;1735:63;;1691:117;1847:2;1873:53;1918:7;1909:6;1898:9;1894:22;1873:53;:::i;:::-;1863:63;;1818:118;1619:324;;;;;:::o;1949:118::-;2036:24;2054:5;2036:24;:::i;:::-;2031:3;2024:37;2014:53;;:::o;2073:109::-;2154:21;2169:5;2154:21;:::i;:::-;2149:3;2142:34;2132:50;;:::o;2188:364::-;;2304:39;2337:5;2304:39;:::i;:::-;2359:71;2423:6;2418:3;2359:71;:::i;:::-;2352:78;;2439:52;2484:6;2479:3;2472:4;2465:5;2461:16;2439:52;:::i;:::-;2516:29;2538:6;2516:29;:::i;:::-;2511:3;2507:39;2500:46;;2280:272;;;;;:::o;2558:367::-;;2721:67;2785:2;2780:3;2721:67;:::i;:::-;2714:74;;2818:34;2814:1;2809:3;2805:11;2798:55;2884:5;2879:2;2874:3;2870:12;2863:27;2916:2;2911:3;2907:12;2900:19;;2704:221;;;:::o;2931:366::-;;3094:67;3158:2;3153:3;3094:67;:::i;:::-;3087:74;;3191:34;3187:1;3182:3;3178:11;3171:55;3257:4;3252:2;3247:3;3243:12;3236:26;3288:2;3283:3;3279:12;3272:19;;3077:220;;;:::o;3303:370::-;;3466:67;3530:2;3525:3;3466:67;:::i;:::-;3459:74;;3563:34;3559:1;3554:3;3550:11;3543:55;3629:8;3624:2;3619:3;3615:12;3608:30;3664:2;3659:3;3655:12;3648:19;;3449:224;;;:::o;3679:366::-;;3842:67;3906:2;3901:3;3842:67;:::i;:::-;3835:74;;3939:34;3935:1;3930:3;3926:11;3919:55;4005:4;4000:2;3995:3;3991:12;3984:26;4036:2;4031:3;4027:12;4020:19;;3825:220;;;:::o;4051:309::-;;4214:67;4278:2;4273:3;4214:67;:::i;:::-;4207:74;;4311:13;4307:1;4302:3;4298:11;4291:34;4351:2;4346:3;4342:12;4335:19;;4197:163;;;:::o;4366:370::-;;4529:67;4593:2;4588:3;4529:67;:::i;:::-;4522:74;;4626:34;4622:1;4617:3;4613:11;4606:55;4692:8;4687:2;4682:3;4678:12;4671:30;4727:2;4722:3;4718:12;4711:19;;4512:224;;;:::o;4742:311::-;;4905:67;4969:2;4964:3;4905:67;:::i;:::-;4898:74;;5002:15;4998:1;4993:3;4989:11;4982:36;5044:2;5039:3;5035:12;5028:19;;4888:165;;;:::o;5059:372::-;;5222:67;5286:2;5281:3;5222:67;:::i;:::-;5215:74;;5319:34;5315:1;5310:3;5306:11;5299:55;5385:10;5380:2;5375:3;5371:12;5364:32;5422:2;5417:3;5413:12;5406:19;;5205:226;;;:::o;5437:330::-;;5600:67;5664:2;5659:3;5600:67;:::i;:::-;5593:74;;5697:34;5693:1;5688:3;5684:11;5677:55;5758:2;5753:3;5749:12;5742:19;;5583:184;;;:::o;5773:311::-;;5936:67;6000:2;5995:3;5936:67;:::i;:::-;5929:74;;6033:15;6029:1;6024:3;6020:11;6013:36;6075:2;6070:3;6066:12;6059:19;;5919:165;;;:::o;6090:365::-;;6253:67;6317:2;6312:3;6253:67;:::i;:::-;6246:74;;6350:34;6346:1;6341:3;6337:11;6330:55;6416:3;6411:2;6406:3;6402:12;6395:25;6446:2;6441:3;6437:12;6430:19;;6236:219;;;:::o;6461:369::-;;6624:67;6688:2;6683:3;6624:67;:::i;:::-;6617:74;;6721:34;6717:1;6712:3;6708:11;6701:55;6787:7;6782:2;6777:3;6773:12;6766:29;6821:2;6816:3;6812:12;6805:19;;6607:223;;;:::o;6836:368::-;;6999:67;7063:2;7058:3;6999:67;:::i;:::-;6992:74;;7096:34;7092:1;7087:3;7083:11;7076:55;7162:6;7157:2;7152:3;7148:12;7141:28;7195:2;7190:3;7186:12;7179:19;;6982:222;;;:::o;7210:369::-;;7373:67;7437:2;7432:3;7373:67;:::i;:::-;7366:74;;7470:34;7466:1;7461:3;7457:11;7450:55;7536:7;7531:2;7526:3;7522:12;7515:29;7570:2;7565:3;7561:12;7554:19;;7356:223;;;:::o;7585:329::-;;7748:67;7812:2;7807:3;7748:67;:::i;:::-;7741:74;;7845:33;7841:1;7836:3;7832:11;7825:54;7905:2;7900:3;7896:12;7889:19;;7731:183;;;:::o;7920:118::-;8007:24;8025:5;8007:24;:::i;:::-;8002:3;7995:37;7985:53;;:::o;8044:112::-;8127:22;8143:5;8127:22;:::i;:::-;8122:3;8115:35;8105:51;;:::o;8162:222::-;;8293:2;8282:9;8278:18;8270:26;;8306:71;8374:1;8363:9;8359:17;8350:6;8306:71;:::i;:::-;8260:124;;;;:::o;8390:210::-;;8515:2;8504:9;8500:18;8492:26;;8528:65;8590:1;8579:9;8575:17;8566:6;8528:65;:::i;:::-;8482:118;;;;:::o;8606:313::-;;8757:2;8746:9;8742:18;8734:26;;8806:9;8800:4;8796:20;8792:1;8781:9;8777:17;8770:47;8834:78;8907:4;8898:6;8834:78;:::i;:::-;8826:86;;8724:195;;;;:::o;8925:419::-;;9129:2;9118:9;9114:18;9106:26;;9178:9;9172:4;9168:20;9164:1;9153:9;9149:17;9142:47;9206:131;9332:4;9206:131;:::i;:::-;9198:139;;9096:248;;;:::o;9350:419::-;;9554:2;9543:9;9539:18;9531:26;;9603:9;9597:4;9593:20;9589:1;9578:9;9574:17;9567:47;9631:131;9757:4;9631:131;:::i;:::-;9623:139;;9521:248;;;:::o;9775:419::-;;9979:2;9968:9;9964:18;9956:26;;10028:9;10022:4;10018:20;10014:1;10003:9;9999:17;9992:47;10056:131;10182:4;10056:131;:::i;:::-;10048:139;;9946:248;;;:::o;10200:419::-;;10404:2;10393:9;10389:18;10381:26;;10453:9;10447:4;10443:20;10439:1;10428:9;10424:17;10417:47;10481:131;10607:4;10481:131;:::i;:::-;10473:139;;10371:248;;;:::o;10625:419::-;;10829:2;10818:9;10814:18;10806:26;;10878:9;10872:4;10868:20;10864:1;10853:9;10849:17;10842:47;10906:131;11032:4;10906:131;:::i;:::-;10898:139;;10796:248;;;:::o;11050:419::-;;11254:2;11243:9;11239:18;11231:26;;11303:9;11297:4;11293:20;11289:1;11278:9;11274:17;11267:47;11331:131;11457:4;11331:131;:::i;:::-;11323:139;;11221:248;;;:::o;11475:419::-;;11679:2;11668:9;11664:18;11656:26;;11728:9;11722:4;11718:20;11714:1;11703:9;11699:17;11692:47;11756:131;11882:4;11756:131;:::i;:::-;11748:139;;11646:248;;;:::o;11900:419::-;;12104:2;12093:9;12089:18;12081:26;;12153:9;12147:4;12143:20;12139:1;12128:9;12124:17;12117:47;12181:131;12307:4;12181:131;:::i;:::-;12173:139;;12071:248;;;:::o;12325:419::-;;12529:2;12518:9;12514:18;12506:26;;12578:9;12572:4;12568:20;12564:1;12553:9;12549:17;12542:47;12606:131;12732:4;12606:131;:::i;:::-;12598:139;;12496:248;;;:::o;12750:419::-;;12954:2;12943:9;12939:18;12931:26;;13003:9;12997:4;12993:20;12989:1;12978:9;12974:17;12967:47;13031:131;13157:4;13031:131;:::i;:::-;13023:139;;12921:248;;;:::o;13175:419::-;;13379:2;13368:9;13364:18;13356:26;;13428:9;13422:4;13418:20;13414:1;13403:9;13399:17;13392:47;13456:131;13582:4;13456:131;:::i;:::-;13448:139;;13346:248;;;:::o;13600:419::-;;13804:2;13793:9;13789:18;13781:26;;13853:9;13847:4;13843:20;13839:1;13828:9;13824:17;13817:47;13881:131;14007:4;13881:131;:::i;:::-;13873:139;;13771:248;;;:::o;14025:419::-;;14229:2;14218:9;14214:18;14206:26;;14278:9;14272:4;14268:20;14264:1;14253:9;14249:17;14242:47;14306:131;14432:4;14306:131;:::i;:::-;14298:139;;14196:248;;;:::o;14450:419::-;;14654:2;14643:9;14639:18;14631:26;;14703:9;14697:4;14693:20;14689:1;14678:9;14674:17;14667:47;14731:131;14857:4;14731:131;:::i;:::-;14723:139;;14621:248;;;:::o;14875:419::-;;15079:2;15068:9;15064:18;15056:26;;15128:9;15122:4;15118:20;15114:1;15103:9;15099:17;15092:47;15156:131;15282:4;15156:131;:::i;:::-;15148:139;;15046:248;;;:::o;15300:222::-;;15431:2;15420:9;15416:18;15408:26;;15444:71;15512:1;15501:9;15497:17;15488:6;15444:71;:::i;:::-;15398:124;;;;:::o;15528:214::-;;15655:2;15644:9;15640:18;15632:26;;15668:67;15732:1;15721:9;15717:17;15708:6;15668:67;:::i;:::-;15622:120;;;;:::o;15748:99::-;;15834:5;15828:12;15818:22;;15807:40;;;:::o;15853:169::-;;15971:6;15966:3;15959:19;16011:4;16006:3;16002:14;15987:29;;15949:73;;;;:::o;16028:305::-;;16087:20;16105:1;16087:20;:::i;:::-;16082:25;;16121:20;16139:1;16121:20;:::i;:::-;16116:25;;16275:1;16207:66;16203:74;16200:1;16197:81;16194:2;;;16281:18;;:::i;:::-;16194:2;16325:1;16322;16318:9;16311:16;;16072:261;;;;:::o;16339:191::-;;16399:20;16417:1;16399:20;:::i;:::-;16394:25;;16433:20;16451:1;16433:20;:::i;:::-;16428:25;;16472:1;16469;16466:8;16463:2;;;16477:18;;:::i;:::-;16463:2;16522:1;16519;16515:9;16507:17;;16384:146;;;;:::o;16536:96::-;;16602:24;16620:5;16602:24;:::i;:::-;16591:35;;16581:51;;;:::o;16638:90::-;;16715:5;16708:13;16701:21;16690:32;;16680:48;;;:::o;16734:126::-;;16811:42;16804:5;16800:54;16789:65;;16779:81;;;:::o;16866:77::-;;16932:5;16921:16;;16911:32;;;:::o;16949:86::-;;17024:4;17017:5;17013:16;17002:27;;16992:43;;;:::o;17041:307::-;17109:1;17119:113;17133:6;17130:1;17127:13;17119:113;;;17218:1;17213:3;17209:11;17203:18;17199:1;17194:3;17190:11;17183:39;17155:2;17152:1;17148:10;17143:15;;17119:113;;;17250:6;17247:1;17244:13;17241:2;;;17330:1;17321:6;17316:3;17312:16;17305:27;17241:2;17090:258;;;;:::o;17354:320::-;;17435:1;17429:4;17425:12;17415:22;;17482:1;17476:4;17472:12;17503:18;17493:2;;17559:4;17551:6;17547:17;17537:27;;17493:2;17621;17613:6;17610:14;17590:18;17587:38;17584:2;;;17640:18;;:::i;:::-;17584:2;17405:269;;;;:::o;17680:180::-;17728:77;17725:1;17718:88;17825:4;17822:1;17815:15;17849:4;17846:1;17839:15;17866:180;17914:77;17911:1;17904:88;18011:4;18008:1;18001:15;18035:4;18032:1;18025:15;18052:102;;18144:2;18140:7;18135:2;18128:5;18124:14;18120:28;18110:38;;18100:54;;;:::o;18160:122::-;18233:24;18251:5;18233:24;:::i;:::-;18226:5;18223:35;18213:2;;18272:1;18269;18262:12;18213:2;18203:79;:::o;18288:122::-;18361:24;18379:5;18361:24;:::i;:::-;18354:5;18351:35;18341:2;;18400:1;18397;18390:12;18341:2;18331:79;:::o

Swarm Source

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