Token NinJa Coin

 

Overview ERC-20

Price
$0.00 @ 0.000000 MATIC
Fully Diluted Market Cap
Total Supply:
100,000,000 NJC

Holders:
996 addresses

Transfers:
-

Contract:
0x8352c99b02ef931a25ef4ce6f417d889fd43b9040x8352c99B02ef931a25eF4cE6f417D889fd43b904

Decimals:
18

Social Profiles:
Not Available, Update ?

 
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

Click here to update the token ICO / general information
# Exchange Pair Price  24H Volume % Volume
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Gold

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: GPL-3.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;
    }
}






/**
 * @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() {
        _setOwner(_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 {
        _setOwner(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");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}





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






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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

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

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

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

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

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

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `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 transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

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






/**
 * @dev Extension of {ERC20} that allows token holders to destroy both their own
 * tokens and those that they have an allowance for, in a way that can be
 * recognized off-chain (via event analysis).
 */
abstract contract ERC20Burnable is Context, ERC20 {
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount) public virtual {
        uint256 currentAllowance = allowance(account, _msgSender());
        require(currentAllowance >= amount, "ERC20: burn amount exceeds allowance");
        unchecked {
            _approve(account, _msgSender(), currentAllowance - amount);
        }
        _burn(account, amount);
    }
}



pragma solidity ^0.8.0;


contract Gold is ERC20Burnable, Ownable {

    mapping(address => bool) public frozenAccount;

    event FrozenFunds(address target, bool frozen);

    constructor() ERC20("NinJa Coin", "NJC") {
    }

    function freezeAccount(address target, bool freeze) onlyOwner public {
        frozenAccount[target] = freeze;
        emit FrozenFunds(target, freeze);
    }

    function mint(address _to, uint256 _amount) external onlyOwner {
        _mint(_to, _amount);
    }

    function _beforeTokenTransfer(
        address from,
        address,
        uint256
    ) internal override virtual {
        require(frozenAccount[from] == false, "FA");
    }
}

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":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"bool","name":"frozen","type":"bool"}],"name":"FrozenFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","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":"target","type":"address"},{"internalType":"bool","name":"freeze","type":"bool"}],"name":"freezeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"frozenAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","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":"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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040518060400160405280600a81526020017f4e696e4a6120436f696e000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4e4a430000000000000000000000000000000000000000000000000000000000815250816003908051906020019062000096929190620001a6565b508060049080519060200190620000af929190620001a6565b505050620000d2620000c6620000d860201b60201c565b620000e060201b60201c565b620002bb565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001b49062000256565b90600052602060002090601f016020900481019282620001d8576000855562000224565b82601f10620001f357805160ff191683800117855562000224565b8280016001018555821562000224579182015b828111156200022357825182559160200191906001019062000206565b5b50905062000233919062000237565b5090565b5b808211156200025257600081600090555060010162000238565b5090565b600060028204905060018216806200026f57607f821691505b602082108114156200028657620002856200028c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61217080620002cb6000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063715018a6116100ad578063a9059cbb11610071578063a9059cbb1461030a578063b414d4b61461033a578063dd62ed3e1461036a578063e724529c1461039a578063f2fde38b146103b657610121565b8063715018a61461027857806379cc6790146102825780638da5cb5b1461029e57806395d89b41146102bc578063a457c2d7146102da57610121565b8063313ce567116100f4578063313ce567146101c257806339509351146101e057806340c10f191461021057806342966c681461022c57806370a082311461024857610121565b806306fdde0314610126578063095ea7b31461014457806318160ddd1461017457806323b872dd14610192575b600080fd5b61012e6103d2565b60405161013b9190611d0e565b60405180910390f35b61015e600480360381019061015991906116b3565b610464565b60405161016b9190611cf3565b60405180910390f35b61017c610482565b6040516101899190611ef0565b60405180910390f35b6101ac60048036038101906101a79190611628565b61048c565b6040516101b99190611cf3565b60405180910390f35b6101ca610584565b6040516101d79190611f0b565b60405180910390f35b6101fa60048036038101906101f591906116b3565b61058d565b6040516102079190611cf3565b60405180910390f35b61022a600480360381019061022591906116b3565b610639565b005b610246600480360381019061024191906116ef565b6106c3565b005b610262600480360381019061025d91906115c3565b6106d7565b60405161026f9190611ef0565b60405180910390f35b61028061071f565b005b61029c600480360381019061029791906116b3565b6107a7565b005b6102a6610822565b6040516102b39190611caf565b60405180910390f35b6102c461084c565b6040516102d19190611d0e565b60405180910390f35b6102f460048036038101906102ef91906116b3565b6108de565b6040516103019190611cf3565b60405180910390f35b610324600480360381019061031f91906116b3565b6109c9565b6040516103319190611cf3565b60405180910390f35b610354600480360381019061034f91906115c3565b6109e7565b6040516103619190611cf3565b60405180910390f35b610384600480360381019061037f91906115ec565b610a07565b6040516103919190611ef0565b60405180910390f35b6103b460048036038101906103af9190611677565b610a8e565b005b6103d060048036038101906103cb91906115c3565b610b9e565b005b6060600380546103e190612054565b80601f016020809104026020016040519081016040528092919081815260200182805461040d90612054565b801561045a5780601f1061042f5761010080835404028352916020019161045a565b820191906000526020600020905b81548152906001019060200180831161043d57829003601f168201915b5050505050905090565b6000610478610471610c96565b8484610c9e565b6001905092915050565b6000600254905090565b6000610499848484610e69565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104e4610c96565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055b90611dd0565b60405180910390fd5b61057885610570610c96565b858403610c9e565b60019150509392505050565b60006012905090565b600061062f61059a610c96565b8484600160006105a8610c96565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461062a9190611f42565b610c9e565b6001905092915050565b610641610c96565b73ffffffffffffffffffffffffffffffffffffffff1661065f610822565b73ffffffffffffffffffffffffffffffffffffffff16146106b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ac90611df0565b60405180910390fd5b6106bf82826110ea565b5050565b6106d46106ce610c96565b8261124a565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610727610c96565b73ffffffffffffffffffffffffffffffffffffffff16610745610822565b73ffffffffffffffffffffffffffffffffffffffff161461079b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079290611df0565b60405180910390fd5b6107a56000611421565b565b60006107ba836107b5610c96565b610a07565b9050818110156107ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f690611e10565b60405180910390fd5b6108138361080b610c96565b848403610c9e565b61081d838361124a565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461085b90612054565b80601f016020809104026020016040519081016040528092919081815260200182805461088790612054565b80156108d45780601f106108a9576101008083540402835291602001916108d4565b820191906000526020600020905b8154815290600101906020018083116108b757829003601f168201915b5050505050905090565b600080600160006108ed610c96565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156109aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a190611eb0565b60405180910390fd5b6109be6109b5610c96565b85858403610c9e565b600191505092915050565b60006109dd6109d6610c96565b8484610e69565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610a96610c96565b73ffffffffffffffffffffffffffffffffffffffff16610ab4610822565b73ffffffffffffffffffffffffffffffffffffffff1614610b0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0190611df0565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a58282604051610b92929190611cca565b60405180910390a15050565b610ba6610c96565b73ffffffffffffffffffffffffffffffffffffffff16610bc4610822565b73ffffffffffffffffffffffffffffffffffffffff1614610c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1190611df0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8190611d70565b60405180910390fd5b610c9381611421565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0590611e70565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7590611d90565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e5c9190611ef0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed090611e50565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4090611d30565b60405180910390fd5b610f548383836114e7565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd190611db0565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461106d9190611f42565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110d19190611ef0565b60405180910390a36110e484848461157f565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561115a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115190611ed0565b60405180910390fd5b611166600083836114e7565b80600260008282546111789190611f42565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111cd9190611f42565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112329190611ef0565b60405180910390a36112466000838361157f565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b190611e30565b60405180910390fd5b6112c6826000836114e7565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561134c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134390611d50565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282546113a39190611f98565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114089190611ef0565b60405180910390a361141c8360008461157f565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60001515600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461157a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157190611e90565b60405180910390fd5b505050565b505050565b600081359050611593816120f5565b92915050565b6000813590506115a88161210c565b92915050565b6000813590506115bd81612123565b92915050565b6000602082840312156115d557600080fd5b60006115e384828501611584565b91505092915050565b600080604083850312156115ff57600080fd5b600061160d85828601611584565b925050602061161e85828601611584565b9150509250929050565b60008060006060848603121561163d57600080fd5b600061164b86828701611584565b935050602061165c86828701611584565b925050604061166d868287016115ae565b9150509250925092565b6000806040838503121561168a57600080fd5b600061169885828601611584565b92505060206116a985828601611599565b9150509250929050565b600080604083850312156116c657600080fd5b60006116d485828601611584565b92505060206116e5858286016115ae565b9150509250929050565b60006020828403121561170157600080fd5b600061170f848285016115ae565b91505092915050565b61172181611fcc565b82525050565b61173081611fde565b82525050565b600061174182611f26565b61174b8185611f31565b935061175b818560208601612021565b611764816120e4565b840191505092915050565b600061177c602383611f31565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006117e2602283611f31565b91507f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611848602683611f31565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006118ae602283611f31565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611914602683611f31565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061197a602883611f31565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b60006119e0602083611f31565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000611a20602483611f31565b91507f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008301527f616e6365000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611a86602183611f31565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611aec602583611f31565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611b52602483611f31565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611bb8600283611f31565b91507f46410000000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000611bf8602583611f31565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611c5e601f83611f31565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b611c9a8161200a565b82525050565b611ca981612014565b82525050565b6000602082019050611cc46000830184611718565b92915050565b6000604082019050611cdf6000830185611718565b611cec6020830184611727565b9392505050565b6000602082019050611d086000830184611727565b92915050565b60006020820190508181036000830152611d288184611736565b905092915050565b60006020820190508181036000830152611d498161176f565b9050919050565b60006020820190508181036000830152611d69816117d5565b9050919050565b60006020820190508181036000830152611d898161183b565b9050919050565b60006020820190508181036000830152611da9816118a1565b9050919050565b60006020820190508181036000830152611dc981611907565b9050919050565b60006020820190508181036000830152611de98161196d565b9050919050565b60006020820190508181036000830152611e09816119d3565b9050919050565b60006020820190508181036000830152611e2981611a13565b9050919050565b60006020820190508181036000830152611e4981611a79565b9050919050565b60006020820190508181036000830152611e6981611adf565b9050919050565b60006020820190508181036000830152611e8981611b45565b9050919050565b60006020820190508181036000830152611ea981611bab565b9050919050565b60006020820190508181036000830152611ec981611beb565b9050919050565b60006020820190508181036000830152611ee981611c51565b9050919050565b6000602082019050611f056000830184611c91565b92915050565b6000602082019050611f206000830184611ca0565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611f4d8261200a565b9150611f588361200a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611f8d57611f8c612086565b5b828201905092915050565b6000611fa38261200a565b9150611fae8361200a565b925082821015611fc157611fc0612086565b5b828203905092915050565b6000611fd782611fea565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561203f578082015181840152602081019050612024565b8381111561204e576000848401525b50505050565b6000600282049050600182168061206c57607f821691505b602082108114156120805761207f6120b5565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b6120fe81611fcc565b811461210957600080fd5b50565b61211581611fde565b811461212057600080fd5b50565b61212c8161200a565b811461213757600080fd5b5056fea2646970667358221220914b0112a0f893715a5ec855797ea641806b6655327d78c16dbbf0a4652483c564736f6c63430008000033

Deployed ByteCode Sourcemap

19464:680:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8296:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10463:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9416:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11114:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9258:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12015:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19848:101;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18646:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9587:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2368:94;;;:::i;:::-;;19056:368;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1717:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8515:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12733:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9927:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19513:45;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10165:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19679:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2617:192;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8296:100;8350:13;8383:5;8376:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8296:100;:::o;10463:169::-;10546:4;10563:39;10572:12;:10;:12::i;:::-;10586:7;10595:6;10563:8;:39::i;:::-;10620:4;10613:11;;10463:169;;;;:::o;9416:108::-;9477:7;9504:12;;9497:19;;9416:108;:::o;11114:492::-;11254:4;11271:36;11281:6;11289:9;11300:6;11271:9;:36::i;:::-;11320:24;11347:11;:19;11359:6;11347:19;;;;;;;;;;;;;;;:33;11367:12;:10;:12::i;:::-;11347:33;;;;;;;;;;;;;;;;11320:60;;11419:6;11399:16;:26;;11391:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;11506:57;11515:6;11523:12;:10;:12::i;:::-;11556:6;11537:16;:25;11506:8;:57::i;:::-;11594:4;11587:11;;;11114:492;;;;;:::o;9258:93::-;9316:5;9341:2;9334:9;;9258:93;:::o;12015:215::-;12103:4;12120:80;12129:12;:10;:12::i;:::-;12143:7;12189:10;12152:11;:25;12164:12;:10;:12::i;:::-;12152:25;;;;;;;;;;;;;;;:34;12178:7;12152:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;12120:8;:80::i;:::-;12218:4;12211:11;;12015:215;;;;:::o;19848:101::-;1948:12;:10;:12::i;:::-;1937:23;;:7;:5;:7::i;:::-;:23;;;1929:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19922:19:::1;19928:3;19933:7;19922:5;:19::i;:::-;19848:101:::0;;:::o;18646:91::-;18702:27;18708:12;:10;:12::i;:::-;18722:6;18702:5;:27::i;:::-;18646:91;:::o;9587:127::-;9661:7;9688:9;:18;9698:7;9688:18;;;;;;;;;;;;;;;;9681:25;;9587:127;;;:::o;2368:94::-;1948:12;:10;:12::i;:::-;1937:23;;:7;:5;:7::i;:::-;:23;;;1929:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2433:21:::1;2451:1;2433:9;:21::i;:::-;2368:94::o:0;19056:368::-;19133:24;19160:32;19170:7;19179:12;:10;:12::i;:::-;19160:9;:32::i;:::-;19133:59;;19231:6;19211:16;:26;;19203:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;19314:58;19323:7;19332:12;:10;:12::i;:::-;19365:6;19346:16;:25;19314:8;:58::i;:::-;19394:22;19400:7;19409:6;19394:5;:22::i;:::-;19056:368;;;:::o;1717:87::-;1763:7;1790:6;;;;;;;;;;;1783:13;;1717:87;:::o;8515:104::-;8571:13;8604:7;8597:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8515:104;:::o;12733:413::-;12826:4;12843:24;12870:11;:25;12882:12;:10;:12::i;:::-;12870:25;;;;;;;;;;;;;;;:34;12896:7;12870:34;;;;;;;;;;;;;;;;12843:61;;12943:15;12923:16;:35;;12915:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13036:67;13045:12;:10;:12::i;:::-;13059:7;13087:15;13068:16;:34;13036:8;:67::i;:::-;13134:4;13127:11;;;12733:413;;;;:::o;9927:175::-;10013:4;10030:42;10040:12;:10;:12::i;:::-;10054:9;10065:6;10030:9;:42::i;:::-;10090:4;10083:11;;9927:175;;;;:::o;19513:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;10165:151::-;10254:7;10281:11;:18;10293:5;10281:18;;;;;;;;;;;;;;;:27;10300:7;10281:27;;;;;;;;;;;;;;;;10274:34;;10165:151;;;;:::o;19679:161::-;1948:12;:10;:12::i;:::-;1937:23;;:7;:5;:7::i;:::-;:23;;;1929:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19783:6:::1;19759:13;:21;19773:6;19759:21;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;19805:27;19817:6;19825;19805:27;;;;;;;:::i;:::-;;;;;;;;19679:161:::0;;:::o;2617:192::-;1948:12;:10;:12::i;:::-;1937:23;;:7;:5;:7::i;:::-;:23;;;1929:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2726:1:::1;2706:22;;:8;:22;;;;2698:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2782:19;2792:8;2782:9;:19::i;:::-;2617:192:::0;:::o;583:98::-;636:7;663:10;656:17;;583:98;:::o;16417:380::-;16570:1;16553:19;;:5;:19;;;;16545:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16651:1;16632:21;;:7;:21;;;;16624:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16735:6;16705:11;:18;16717:5;16705:18;;;;;;;;;;;;;;;:27;16724:7;16705:27;;;;;;;;;;;;;;;:36;;;;16773:7;16757:32;;16766:5;16757:32;;;16782:6;16757:32;;;;;;:::i;:::-;;;;;;;;16417:380;;;:::o;13636:733::-;13794:1;13776:20;;:6;:20;;;;13768:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13878:1;13857:23;;:9;:23;;;;13849:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13933:47;13954:6;13962:9;13973:6;13933:20;:47::i;:::-;13993:21;14017:9;:17;14027:6;14017:17;;;;;;;;;;;;;;;;13993:41;;14070:6;14053:13;:23;;14045:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14191:6;14175:13;:22;14155:9;:17;14165:6;14155:17;;;;;;;;;;;;;;;:42;;;;14243:6;14219:9;:20;14229:9;14219:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;14284:9;14267:35;;14276:6;14267:35;;;14295:6;14267:35;;;;;;:::i;:::-;;;;;;;;14315:46;14335:6;14343:9;14354:6;14315:19;:46::i;:::-;13636:733;;;;:::o;14656:399::-;14759:1;14740:21;;:7;:21;;;;14732:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;14810:49;14839:1;14843:7;14852:6;14810:20;:49::i;:::-;14888:6;14872:12;;:22;;;;;;;:::i;:::-;;;;;;;;14927:6;14905:9;:18;14915:7;14905:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;14970:7;14949:37;;14966:1;14949:37;;;14979:6;14949:37;;;;;;:::i;:::-;;;;;;;;14999:48;15027:1;15031:7;15040:6;14999:19;:48::i;:::-;14656:399;;:::o;15388:591::-;15491:1;15472:21;;:7;:21;;;;15464:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15544:49;15565:7;15582:1;15586:6;15544:20;:49::i;:::-;15606:22;15631:9;:18;15641:7;15631:18;;;;;;;;;;;;;;;;15606:43;;15686:6;15668:14;:24;;15660:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15805:6;15788:14;:23;15767:9;:18;15777:7;15767:18;;;;;;;;;;;;;;;:44;;;;15849:6;15833:12;;:22;;;;;;;:::i;:::-;;;;;;;;15899:1;15873:37;;15882:7;15873:37;;;15903:6;15873:37;;;;;;:::i;:::-;;;;;;;;15923:48;15943:7;15960:1;15964:6;15923:19;:48::i;:::-;15388:591;;;:::o;2817:173::-;2873:16;2892:6;;;;;;;;;;;2873:25;;2918:8;2909:6;;:17;;;;;;;;;;;;;;;;;;2973:8;2942:40;;2963:8;2942:40;;;;;;;;;;;;2817:173;;:::o;19957:184::-;20121:5;20098:28;;:13;:19;20112:4;20098:19;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;20090:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;19957:184;;;:::o;18126:124::-;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:133::-;;233:6;220:20;211:29;;249:30;273:5;249:30;:::i;:::-;201:84;;;;:::o;291:139::-;;375:6;362:20;353:29;;391:33;418:5;391:33;:::i;:::-;343:87;;;;:::o;436:262::-;;544:2;532:9;523:7;519:23;515:32;512:2;;;560:1;557;550:12;512:2;603:1;628:53;673:7;664:6;653:9;649:22;628:53;:::i;:::-;618:63;;574:117;502:196;;;;:::o;704:407::-;;;829:2;817:9;808:7;804:23;800:32;797:2;;;845:1;842;835:12;797:2;888:1;913:53;958:7;949:6;938:9;934:22;913:53;:::i;:::-;903:63;;859:117;1015:2;1041:53;1086:7;1077:6;1066:9;1062:22;1041:53;:::i;:::-;1031:63;;986:118;787:324;;;;;:::o;1117:552::-;;;;1259:2;1247:9;1238:7;1234:23;1230:32;1227:2;;;1275:1;1272;1265:12;1227:2;1318:1;1343:53;1388:7;1379:6;1368:9;1364:22;1343:53;:::i;:::-;1333:63;;1289:117;1445:2;1471:53;1516:7;1507:6;1496:9;1492:22;1471:53;:::i;:::-;1461:63;;1416:118;1573:2;1599:53;1644:7;1635:6;1624:9;1620:22;1599:53;:::i;:::-;1589:63;;1544:118;1217:452;;;;;:::o;1675:401::-;;;1797:2;1785:9;1776:7;1772:23;1768:32;1765:2;;;1813:1;1810;1803:12;1765:2;1856:1;1881:53;1926:7;1917:6;1906:9;1902:22;1881:53;:::i;:::-;1871:63;;1827:117;1983:2;2009:50;2051:7;2042:6;2031:9;2027:22;2009:50;:::i;:::-;1999:60;;1954:115;1755:321;;;;;:::o;2082:407::-;;;2207:2;2195:9;2186:7;2182:23;2178:32;2175:2;;;2223:1;2220;2213:12;2175:2;2266:1;2291:53;2336:7;2327:6;2316:9;2312:22;2291:53;:::i;:::-;2281:63;;2237:117;2393:2;2419:53;2464:7;2455:6;2444:9;2440:22;2419:53;:::i;:::-;2409:63;;2364:118;2165:324;;;;;:::o;2495:262::-;;2603:2;2591:9;2582:7;2578:23;2574:32;2571:2;;;2619:1;2616;2609:12;2571:2;2662:1;2687:53;2732:7;2723:6;2712:9;2708:22;2687:53;:::i;:::-;2677:63;;2633:117;2561:196;;;;:::o;2763:118::-;2850:24;2868:5;2850:24;:::i;:::-;2845:3;2838:37;2828:53;;:::o;2887:109::-;2968:21;2983:5;2968:21;:::i;:::-;2963:3;2956:34;2946:50;;:::o;3002:364::-;;3118:39;3151:5;3118:39;:::i;:::-;3173:71;3237:6;3232:3;3173:71;:::i;:::-;3166:78;;3253:52;3298:6;3293:3;3286:4;3279:5;3275:16;3253:52;:::i;:::-;3330:29;3352:6;3330:29;:::i;:::-;3325:3;3321:39;3314:46;;3094:272;;;;;:::o;3372:367::-;;3535:67;3599:2;3594:3;3535:67;:::i;:::-;3528:74;;3632:34;3628:1;3623:3;3619:11;3612:55;3698:5;3693:2;3688:3;3684:12;3677:27;3730:2;3725:3;3721:12;3714:19;;3518:221;;;:::o;3745:366::-;;3908:67;3972:2;3967:3;3908:67;:::i;:::-;3901:74;;4005:34;4001:1;3996:3;3992:11;3985:55;4071:4;4066:2;4061:3;4057:12;4050:26;4102:2;4097:3;4093:12;4086:19;;3891:220;;;:::o;4117:370::-;;4280:67;4344:2;4339:3;4280:67;:::i;:::-;4273:74;;4377:34;4373:1;4368:3;4364:11;4357:55;4443:8;4438:2;4433:3;4429:12;4422:30;4478:2;4473:3;4469:12;4462:19;;4263:224;;;:::o;4493:366::-;;4656:67;4720:2;4715:3;4656:67;:::i;:::-;4649:74;;4753:34;4749:1;4744:3;4740:11;4733:55;4819:4;4814:2;4809:3;4805:12;4798:26;4850:2;4845:3;4841:12;4834:19;;4639:220;;;:::o;4865:370::-;;5028:67;5092:2;5087:3;5028:67;:::i;:::-;5021:74;;5125:34;5121:1;5116:3;5112:11;5105:55;5191:8;5186:2;5181:3;5177:12;5170:30;5226:2;5221:3;5217:12;5210:19;;5011:224;;;:::o;5241:372::-;;5404:67;5468:2;5463:3;5404:67;:::i;:::-;5397:74;;5501:34;5497:1;5492:3;5488:11;5481:55;5567:10;5562:2;5557:3;5553:12;5546:32;5604:2;5599:3;5595:12;5588:19;;5387:226;;;:::o;5619:330::-;;5782:67;5846:2;5841:3;5782:67;:::i;:::-;5775:74;;5879:34;5875:1;5870:3;5866:11;5859:55;5940:2;5935:3;5931:12;5924:19;;5765:184;;;:::o;5955:368::-;;6118:67;6182:2;6177:3;6118:67;:::i;:::-;6111:74;;6215:34;6211:1;6206:3;6202:11;6195:55;6281:6;6276:2;6271:3;6267:12;6260:28;6314:2;6309:3;6305:12;6298:19;;6101:222;;;:::o;6329:365::-;;6492:67;6556:2;6551:3;6492:67;:::i;:::-;6485:74;;6589:34;6585:1;6580:3;6576:11;6569:55;6655:3;6650:2;6645:3;6641:12;6634:25;6685:2;6680:3;6676:12;6669:19;;6475:219;;;:::o;6700:369::-;;6863:67;6927:2;6922:3;6863:67;:::i;:::-;6856:74;;6960:34;6956:1;6951:3;6947:11;6940:55;7026:7;7021:2;7016:3;7012:12;7005:29;7060:2;7055:3;7051:12;7044:19;;6846:223;;;:::o;7075:368::-;;7238:67;7302:2;7297:3;7238:67;:::i;:::-;7231:74;;7335:34;7331:1;7326:3;7322:11;7315:55;7401:6;7396:2;7391:3;7387:12;7380:28;7434:2;7429:3;7425:12;7418:19;;7221:222;;;:::o;7449:299::-;;7612:66;7676:1;7671:3;7612:66;:::i;:::-;7605:73;;7708:4;7704:1;7699:3;7695:11;7688:25;7739:2;7734:3;7730:12;7723:19;;7595:153;;;:::o;7754:369::-;;7917:67;7981:2;7976:3;7917:67;:::i;:::-;7910:74;;8014:34;8010:1;8005:3;8001:11;7994:55;8080:7;8075:2;8070:3;8066:12;8059:29;8114:2;8109:3;8105:12;8098:19;;7900:223;;;:::o;8129:329::-;;8292:67;8356:2;8351:3;8292:67;:::i;:::-;8285:74;;8389:33;8385:1;8380:3;8376:11;8369:54;8449:2;8444:3;8440:12;8433:19;;8275:183;;;:::o;8464:118::-;8551:24;8569:5;8551:24;:::i;:::-;8546:3;8539:37;8529:53;;:::o;8588:112::-;8671:22;8687:5;8671:22;:::i;:::-;8666:3;8659:35;8649:51;;:::o;8706:222::-;;8837:2;8826:9;8822:18;8814:26;;8850:71;8918:1;8907:9;8903:17;8894:6;8850:71;:::i;:::-;8804:124;;;;:::o;8934:320::-;;9087:2;9076:9;9072:18;9064:26;;9100:71;9168:1;9157:9;9153:17;9144:6;9100:71;:::i;:::-;9181:66;9243:2;9232:9;9228:18;9219:6;9181:66;:::i;:::-;9054:200;;;;;:::o;9260:210::-;;9385:2;9374:9;9370:18;9362:26;;9398:65;9460:1;9449:9;9445:17;9436:6;9398:65;:::i;:::-;9352:118;;;;:::o;9476:313::-;;9627:2;9616:9;9612:18;9604:26;;9676:9;9670:4;9666:20;9662:1;9651:9;9647:17;9640:47;9704:78;9777:4;9768:6;9704:78;:::i;:::-;9696:86;;9594:195;;;;:::o;9795:419::-;;9999:2;9988:9;9984:18;9976:26;;10048:9;10042:4;10038:20;10034:1;10023:9;10019:17;10012:47;10076:131;10202:4;10076:131;:::i;:::-;10068:139;;9966:248;;;:::o;10220:419::-;;10424:2;10413:9;10409:18;10401:26;;10473:9;10467:4;10463:20;10459:1;10448:9;10444:17;10437:47;10501:131;10627:4;10501:131;:::i;:::-;10493:139;;10391:248;;;:::o;10645:419::-;;10849:2;10838:9;10834:18;10826:26;;10898:9;10892:4;10888:20;10884:1;10873:9;10869:17;10862:47;10926:131;11052:4;10926:131;:::i;:::-;10918:139;;10816:248;;;:::o;11070:419::-;;11274:2;11263:9;11259:18;11251:26;;11323:9;11317:4;11313:20;11309:1;11298:9;11294:17;11287:47;11351:131;11477:4;11351:131;:::i;:::-;11343:139;;11241:248;;;:::o;11495:419::-;;11699:2;11688:9;11684:18;11676:26;;11748:9;11742:4;11738:20;11734:1;11723:9;11719:17;11712:47;11776:131;11902:4;11776:131;:::i;:::-;11768:139;;11666:248;;;:::o;11920:419::-;;12124:2;12113:9;12109:18;12101:26;;12173:9;12167:4;12163:20;12159:1;12148:9;12144:17;12137:47;12201:131;12327:4;12201:131;:::i;:::-;12193:139;;12091:248;;;:::o;12345:419::-;;12549:2;12538:9;12534:18;12526:26;;12598:9;12592:4;12588:20;12584:1;12573:9;12569:17;12562:47;12626:131;12752:4;12626:131;:::i;:::-;12618:139;;12516:248;;;:::o;12770:419::-;;12974:2;12963:9;12959:18;12951:26;;13023:9;13017:4;13013:20;13009:1;12998:9;12994:17;12987:47;13051:131;13177:4;13051:131;:::i;:::-;13043:139;;12941:248;;;:::o;13195:419::-;;13399:2;13388:9;13384:18;13376:26;;13448:9;13442:4;13438:20;13434:1;13423:9;13419:17;13412:47;13476:131;13602:4;13476:131;:::i;:::-;13468:139;;13366:248;;;:::o;13620:419::-;;13824:2;13813:9;13809:18;13801:26;;13873:9;13867:4;13863:20;13859:1;13848:9;13844:17;13837:47;13901:131;14027:4;13901:131;:::i;:::-;13893:139;;13791:248;;;:::o;14045:419::-;;14249:2;14238:9;14234:18;14226:26;;14298:9;14292:4;14288:20;14284:1;14273:9;14269:17;14262:47;14326:131;14452:4;14326:131;:::i;:::-;14318:139;;14216:248;;;:::o;14470:419::-;;14674:2;14663:9;14659:18;14651:26;;14723:9;14717:4;14713:20;14709:1;14698:9;14694:17;14687:47;14751:131;14877:4;14751:131;:::i;:::-;14743:139;;14641:248;;;:::o;14895:419::-;;15099:2;15088:9;15084:18;15076:26;;15148:9;15142:4;15138:20;15134:1;15123:9;15119:17;15112:47;15176:131;15302:4;15176:131;:::i;:::-;15168:139;;15066:248;;;:::o;15320:419::-;;15524:2;15513:9;15509:18;15501:26;;15573:9;15567:4;15563:20;15559:1;15548:9;15544:17;15537:47;15601:131;15727:4;15601:131;:::i;:::-;15593:139;;15491:248;;;:::o;15745:222::-;;15876:2;15865:9;15861:18;15853:26;;15889:71;15957:1;15946:9;15942:17;15933:6;15889:71;:::i;:::-;15843:124;;;;:::o;15973:214::-;;16100:2;16089:9;16085:18;16077:26;;16113:67;16177:1;16166:9;16162:17;16153:6;16113:67;:::i;:::-;16067:120;;;;:::o;16193:99::-;;16279:5;16273:12;16263:22;;16252:40;;;:::o;16298:169::-;;16416:6;16411:3;16404:19;16456:4;16451:3;16447:14;16432:29;;16394:73;;;;:::o;16473:305::-;;16532:20;16550:1;16532:20;:::i;:::-;16527:25;;16566:20;16584:1;16566:20;:::i;:::-;16561:25;;16720:1;16652:66;16648:74;16645:1;16642:81;16639:2;;;16726:18;;:::i;:::-;16639:2;16770:1;16767;16763:9;16756:16;;16517:261;;;;:::o;16784:191::-;;16844:20;16862:1;16844:20;:::i;:::-;16839:25;;16878:20;16896:1;16878:20;:::i;:::-;16873:25;;16917:1;16914;16911:8;16908:2;;;16922:18;;:::i;:::-;16908:2;16967:1;16964;16960:9;16952:17;;16829:146;;;;:::o;16981:96::-;;17047:24;17065:5;17047:24;:::i;:::-;17036:35;;17026:51;;;:::o;17083:90::-;;17160:5;17153:13;17146:21;17135:32;;17125:48;;;:::o;17179:126::-;;17256:42;17249:5;17245:54;17234:65;;17224:81;;;:::o;17311:77::-;;17377:5;17366:16;;17356:32;;;:::o;17394:86::-;;17469:4;17462:5;17458:16;17447:27;;17437:43;;;:::o;17486:307::-;17554:1;17564:113;17578:6;17575:1;17572:13;17564:113;;;17663:1;17658:3;17654:11;17648:18;17644:1;17639:3;17635:11;17628:39;17600:2;17597:1;17593:10;17588:15;;17564:113;;;17695:6;17692:1;17689:13;17686:2;;;17775:1;17766:6;17761:3;17757:16;17750:27;17686:2;17535:258;;;;:::o;17799:320::-;;17880:1;17874:4;17870:12;17860:22;;17927:1;17921:4;17917:12;17948:18;17938:2;;18004:4;17996:6;17992:17;17982:27;;17938:2;18066;18058:6;18055:14;18035:18;18032:38;18029:2;;;18085:18;;:::i;:::-;18029:2;17850:269;;;;:::o;18125:180::-;18173:77;18170:1;18163:88;18270:4;18267:1;18260:15;18294:4;18291:1;18284:15;18311:180;18359:77;18356:1;18349:88;18456:4;18453:1;18446:15;18480:4;18477:1;18470:15;18497:102;;18589:2;18585:7;18580:2;18573:5;18569:14;18565:28;18555:38;;18545:54;;;:::o;18605:122::-;18678:24;18696:5;18678:24;:::i;:::-;18671:5;18668:35;18658:2;;18717:1;18714;18707:12;18658:2;18648:79;:::o;18733:116::-;18803:21;18818:5;18803:21;:::i;:::-;18796:5;18793:32;18783:2;;18839:1;18836;18829:12;18783:2;18773:76;:::o;18855:122::-;18928:24;18946:5;18928:24;:::i;:::-;18921:5;18918:35;18908:2;;18967:1;18964;18957:12;18908:2;18898:79;:::o

Swarm Source

ipfs://914b0112a0f893715a5ec855797ea641806b6655327d78c16dbbf0a4652483c5
Loading