ETH Price: $3,875.91 (+7.40%)

Token

ERC-20: Balance E (BLNe)
 

Overview

Max Total Supply

21,000,000 BLNe

Holders

32

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Circle: USDC Token
Balance
1 BLNe

Value
$0.00
0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
MyToken

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2022-01-17
*/

// File: @openzeppelin/contracts/utils/Context.sol


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

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

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

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


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

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

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


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

pragma solidity ^0.8.0;


/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

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


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

pragma solidity ^0.8.0;




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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `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 {}
}

// File: balancee.sol


pragma solidity 0.8.0;


contract MyToken is ERC20 {
    mapping(uint => uint) public _startBonus;
    mapping(uint => uint) public _endBonus;
    mapping(uint => uint) public _bonus;

    constructor() ERC20("Balance E", "BLNe") {
        _mint(address(this), 20685000 * 10 ** 18);
        _mint(msg.sender, 315000 * 10 ** 18);

        _startBonus[1] = 20685000 * 10 ** 18;    
        _endBonus[1] = 20000005 * 10 ** 18;        
        _bonus[1] = 5 * 10 ** 18;           

        _startBonus[2] = 20000005 * 10 ** 18;     
        _endBonus[2] = 190000025 * 10 ** 17;       
        _bonus[2] = 25 * 10 ** 17;            

        _startBonus[3] = 190000025 * 10 ** 17;     
        _endBonus[3] = 18000001 * 10 ** 18;      
        _bonus[3] = 1 * 10 ** 18;           

        _startBonus[4] = 18000001 * 10 ** 18;      
        _endBonus[4] = 170000005 * 10 ** 17;      
        _bonus[4] = 5 * 10 ** 17;           

        _startBonus[5] = 170000005 * 10 ** 17;    
        _endBonus[5] = 1600000025 * 10 ** 16;       
        _bonus[5] = 25 * 10 ** 16;           

        _startBonus[6] = 1600000025 * 10 ** 16;     
        _endBonus[6] = 150000001 * 10 ** 17;       
        _bonus[6] = 1 * 10 ** 17;            

        _startBonus[7] = 150000001 * 10 ** 17;    
        _endBonus[7] = 1400000005 * 10 ** 16;      
        _bonus[7] = 5 * 10 ** 16;           

        _startBonus[8] = 1400000005 * 10 ** 16;     
        _endBonus[8] = 13000000025 * 10 ** 15;      
        _bonus[8] = 25 * 10 ** 15;           

        _startBonus[9] = 13000000025 * 10 ** 15;    
        _endBonus[9] = 1200000001 * 10 ** 16;       
        _bonus[9] = 1 * 10 ** 16;           

        _startBonus[10] = 1200000001 * 10 ** 16;     
        _endBonus[10] = 11000000005 * 10 ** 15;       
        _bonus[10] = 5 * 10 ** 15;            

        _startBonus[11] = 11000000005 * 10 ** 15;    
        _endBonus[11] = 100000000025 * 10 ** 14;      
        _bonus[11] = 25 * 10 ** 14;           

        _startBonus[12] = 100000000025 * 10 ** 14;      
        _endBonus[12] = 9000000001 * 10 ** 15;     
        _bonus[12] = 1 * 10 ** 15;           
 
        _startBonus[13] = 9000000001 * 10 ** 15;    
        _endBonus[13] = 80000000005 * 10 ** 14;      
        _bonus[13] = 5 * 10 ** 14;           

        _startBonus[14] = 80000000005 * 10 ** 14;     
        _endBonus[14] = 700000000025 * 10 ** 13;       
        _bonus[14] = 25 * 10 ** 13;           

        _startBonus[15] = 700000000025 * 10 ** 13;     
        _endBonus[15] = 60000000001 * 10 ** 14;      
        _bonus[15] = 1 * 10 ** 14;           

        _startBonus[16] = 60000000001 * 10 ** 14;     
        _endBonus[16] = 500000000005 * 10 ** 13;      
        _bonus[16] = 5 * 10 ** 13;           
 
        _startBonus[17] = 500000000005 * 10 ** 13;      
        _endBonus[17] = 4000000000025 * 10 ** 12;     
        _bonus[17] = 25 * 10 ** 12;           
 
        _startBonus[18] = 4000000000025 * 10 ** 12;    
        _endBonus[18] = 300000000001 * 10 ** 13;      
        _bonus[18] = 1 * 10 ** 13;           

        _startBonus[19] = 300000000001 * 10 ** 13;     
        _endBonus[19] = 2000000000005 * 10 ** 12;       
        _bonus[19] = 5 * 10 ** 12;           

        _startBonus[20] = 2000000000005 * 10 ** 12;     
        _endBonus[20] = 10000000000025 * 10 ** 11;      
        _bonus[20] = 25 * 10 ** 11;           

        _startBonus[21] = 10000000000025 * 10 ** 11;     
        _endBonus[21] = 1 * 10 ** 12;      
        _bonus[21] = 1 * 10 ** 12;           

    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transferWithBonus(msg.sender, recipient, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transferWithBonus(sender, recipient, amount);
        return true;
    }

  function _transferWithBonus(address sender, address recipient, uint amount ) internal {
        _transfer(sender, recipient, amount);
        _distributeBonus();
    }


    function _distributeBonus() internal {
        for(uint i = 1; i <= 21; i++){
            if (
                _startBonus[i] >= super.balanceOf(address(this))  &&
                _endBonus[i] <= super.balanceOf(address(this))
            ) {
                _transfer(address(this), msg.sender, _bonus[i]);
                return;
            }
        }
    }

    receive() external payable {
        revert();
    }
}

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":"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":"uint256","name":"","type":"uint256"}],"name":"_bonus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_endBonus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_startBonus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b506040518060400160405280600981526020017f42616c616e6365204500000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f424c4e650000000000000000000000000000000000000000000000000000000081525081600390805190602001906200009692919062000af1565b508060049080519060200190620000af92919062000af1565b505050620000cf306a111c3818cdfd05462000006200096e60201b60201c565b620000eb336942b42f28d278eee000006200096e60201b60201c565b6a111c3818cdfd05462000006005600060018152602001908152602001600020819055506a108b2a718b9412d8f40000600660006001815260200190815260200160002081905550674563918244f400006007600060018152602001908152602001600020819055506a108b2a718b9412d8f400006005600060028152602001908152602001600020819055506a0fb768330afe64157a00006006600060028152602001908152602001600020819055506722b1c8c1227a00006007600060028152602001908152602001600020819055506a0fb768330afe64157a00006005600060038152602001908152602001600020819055506a0ee3a6026b1f68f9640000600660006003815260200190815260200160002081905550670de0b6b3a76400006007600060038152602001908152602001600020819055506a0ee3a6026b1f68f96400006005600060048152602001908152602001600020819055506a0e0fe3dfabf72184b200006006600060048152602001908152602001600020819055506706f05b59d3b200006007600060048152602001908152602001600020819055506a0e0fe3dfabf72184b200006005600060058152602001908152602001600020819055506a0d3c21c064fc86f9d900006006600060058152602001908152602001600020819055506703782dace9d900006007600060058152602001908152602001600020819055506a0d3c21c064fc86f9d900006005600060068152602001908152602001600020819055506a0c685fa2814764cc8a000060066000600681526020019081526020016000208190555067016345785d8a00006007600060068152602001908152602001600020819055506a0c685fa2814764cc8a00006005600060078152602001908152602001600020819055506a0b949d8600d7bafcc5000060066000600781526020019081526020016000208190555066b1a2bc2ec500006007600060078152602001908152602001600020819055506a0b949d8600d7bafcc500006005600060088152602001908152602001600020819055506a0ac0db69d9396f446280006006600060088152602001908152602001600020819055506658d15e176280006007600060088152602001908152602001600020819055506a0ac0db69d9396f446280006005600060098152602001908152602001600020819055506a09ed194dd52215fbc10000600660006009815260200190815260200160002081905550662386f26fc100006007600060098152602001908152602001600020819055506a09ed194dd52215fbc1000060056000600a8152602001908152602001600020819055506a09195731f491af22e0800060066000600a8152602001908152602001600020819055506611c37937e0800060076000600a8152602001908152602001600020819055506a09195731f491af22e0800060056000600b8152602001908152602001600020819055506a084595161ce304e5f0400060066000600b8152602001908152602001600020819055506608e1bc9bf0400060076000600b8152602001908152602001600020819055506a084595161ce304e5f0400060056000600c8152602001908152602001600020819055506a0771d2fa48c1d94dc6800060066000600c81526020019081526020016000208190555066038d7ea4c6800060076000600c8152602001908152602001600020819055506a0771d2fa48c1d94dc6800060056000600d8152602001908152602001600020819055506a069e10de782e2c5a63400060066000600d8152602001908152602001600020819055506601c6bf5263400060076000600d8152602001908152602001600020819055506a069e10de782e2c5a63400060056000600e8152602001908152602001600020819055506a05ca4ec2a87ddf1031a00060066000600e81526020019081526020016000208190555065e35fa931a00060076000600e8152602001908152602001600020819055506a05ca4ec2a87ddf1031a00060056000600f8152602001908152602001600020819055506a04f68ca6d92884d67a400060066000600f815260200190815260200160002081905550655af3107a400060076000600f8152602001908152602001600020819055506a04f68ca6d92884d67a40006005600060108152602001908152602001600020819055506a0422ca8b0a2e1dad3d2000600660006010815260200190815260200160002081905550652d79883d20006007600060108152602001908152602001600020819055506a0422ca8b0a2e1dad3d20006005600060118152602001908152602001600020819055506a034f086f3b4a73481e90006006600060118152602001908152602001600020819055506516bcc41e90006007600060118152602001908152602001600020819055506a034f086f3b4a73481e90006005600060128152602001908152602001600020819055506a027b46536c6fe13172a0006006600060128152602001908152602001600020819055506509184e72a0006007600060128152602001908152602001600020819055506a027b46536c6fe13172a0006005600060138152602001908152602001600020819055506a01a784379d9e676939500060066000601381526020019081526020016000208190555065048c273950006007600060138152602001908152602001600020819055506a01a784379d9e676939500060056000601481526020019081526020016000208190555069d3c21bcecf33b49ca800600660006014815260200190815260200160002081905550650246139ca80060076000601481526020019081526020016000208190555069d3c21bcecf33b49ca80060056000601581526020019081526020016000208190555064e8d4a5100060066000601581526020019081526020016000208190555064e8d4a5100060076000601581526020019081526020016000208190555062000d3f565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620009e1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009d89062000bf4565b60405180910390fd5b620009f56000838362000ae760201b60201c565b806002600082825462000a09919062000c44565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000a60919062000c44565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000ac7919062000c16565b60405180910390a362000ae36000838362000aec60201b60201c565b5050565b505050565b505050565b82805462000aff9062000cab565b90600052602060002090601f01602090048101928262000b23576000855562000b6f565b82601f1062000b3e57805160ff191683800117855562000b6f565b8280016001018555821562000b6f579182015b8281111562000b6e57825182559160200191906001019062000b51565b5b50905062000b7e919062000b82565b5090565b5b8082111562000b9d57600081600090555060010162000b83565b5090565b600062000bb0601f8362000c33565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b62000bee8162000ca1565b82525050565b6000602082019050818103600083015262000c0f8162000ba1565b9050919050565b600060208201905062000c2d600083018462000be3565b92915050565b600082825260208201905092915050565b600062000c518262000ca1565b915062000c5e8362000ca1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000c965762000c9562000ce1565b5b828201905092915050565b6000819050919050565b6000600282049050600182168062000cc457607f821691505b6020821081141562000cdb5762000cda62000d10565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6114c38062000d4f6000396000f3fe6080604052600436106100e15760003560e01c806370a082311161007f578063a457c2d711610059578063a457c2d71461030a578063a9059cbb14610347578063ad5edd0d14610384578063dd62ed3e146103c1576100eb565b806370a082311461026557806383ed5e8e146102a257806395d89b41146102df576100eb565b806323b872dd116100bb57806323b872dd14610183578063313ce567146101c057806339509351146101eb5780636fbad6d714610228576100eb565b806306fdde03146100f0578063095ea7b31461011b57806318160ddd14610158576100eb565b366100eb57600080fd5b600080fd5b3480156100fc57600080fd5b506101056103fe565b6040516101129190611163565b60405180910390f35b34801561012757600080fd5b50610142600480360381019061013d9190610e19565b610490565b60405161014f9190611148565b60405180910390f35b34801561016457600080fd5b5061016d6104ae565b60405161017a9190611245565b60405180910390f35b34801561018f57600080fd5b506101aa60048036038101906101a59190610dca565b6104b8565b6040516101b79190611148565b60405180910390f35b3480156101cc57600080fd5b506101d56104d0565b6040516101e29190611260565b60405180910390f35b3480156101f757600080fd5b50610212600480360381019061020d9190610e19565b6104d9565b60405161021f9190611148565b60405180910390f35b34801561023457600080fd5b5061024f600480360381019061024a9190610e55565b610585565b60405161025c9190611245565b60405180910390f35b34801561027157600080fd5b5061028c60048036038101906102879190610d65565b61059d565b6040516102999190611245565b60405180910390f35b3480156102ae57600080fd5b506102c960048036038101906102c49190610e55565b6105e5565b6040516102d69190611245565b60405180910390f35b3480156102eb57600080fd5b506102f46105fd565b6040516103019190611163565b60405180910390f35b34801561031657600080fd5b50610331600480360381019061032c9190610e19565b61068f565b60405161033e9190611148565b60405180910390f35b34801561035357600080fd5b5061036e60048036038101906103699190610e19565b61077a565b60405161037b9190611148565b60405180910390f35b34801561039057600080fd5b506103ab60048036038101906103a69190610e55565b610791565b6040516103b89190611245565b60405180910390f35b3480156103cd57600080fd5b506103e860048036038101906103e39190610d8e565b6107a9565b6040516103f59190611245565b60405180910390f35b60606003805461040d90611375565b80601f016020809104026020016040519081016040528092919081815260200182805461043990611375565b80156104865780601f1061045b57610100808354040283529160200191610486565b820191906000526020600020905b81548152906001019060200180831161046957829003601f168201915b5050505050905090565b60006104a461049d610830565b8484610838565b6001905092915050565b6000600254905090565b60006104c5848484610a03565b600190509392505050565b60006012905090565b600061057b6104e6610830565b8484600160006104f4610830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105769190611297565b610838565b6001905092915050565b60056020528060005260406000206000915090505481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60076020528060005260406000206000915090505481565b60606004805461060c90611375565b80601f016020809104026020016040519081016040528092919081815260200182805461063890611375565b80156106855780601f1061065a57610100808354040283529160200191610685565b820191906000526020600020905b81548152906001019060200180831161066857829003601f168201915b5050505050905090565b6000806001600061069e610830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561075b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075290611225565b60405180910390fd5b61076f610766610830565b85858403610838565b600191505092915050565b6000610787338484610a03565b6001905092915050565b60066020528060005260406000206000915090505481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089f90611205565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090f906111a5565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516109f69190611245565b60405180910390a3505050565b610a0e838383610a1b565b610a16610c9c565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a82906111e5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af290611185565b60405180910390fd5b610b06838383610d31565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610b8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b83906111c5565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c1f9190611297565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c839190611245565b60405180910390a3610c96848484610d36565b50505050565b6000600190505b60158111610d2d57610cb43061059d565b600560008381526020019081526020016000205410158015610cf15750610cda3061059d565b600660008381526020019081526020016000205411155b15610d1a57610d1430336007600085815260200190815260200160002054610a1b565b50610d2f565b8080610d25906113a7565b915050610ca3565b505b565b505050565b505050565b600081359050610d4a8161145f565b92915050565b600081359050610d5f81611476565b92915050565b600060208284031215610d7757600080fd5b6000610d8584828501610d3b565b91505092915050565b60008060408385031215610da157600080fd5b6000610daf85828601610d3b565b9250506020610dc085828601610d3b565b9150509250929050565b600080600060608486031215610ddf57600080fd5b6000610ded86828701610d3b565b9350506020610dfe86828701610d3b565b9250506040610e0f86828701610d50565b9150509250925092565b60008060408385031215610e2c57600080fd5b6000610e3a85828601610d3b565b9250506020610e4b85828601610d50565b9150509250929050565b600060208284031215610e6757600080fd5b6000610e7584828501610d50565b91505092915050565b610e87816112ff565b82525050565b6000610e988261127b565b610ea28185611286565b9350610eb2818560208601611342565b610ebb8161144e565b840191505092915050565b6000610ed3602383611286565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610f39602283611286565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610f9f602683611286565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611005602583611286565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061106b602483611286565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006110d1602583611286565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6111338161132b565b82525050565b61114281611335565b82525050565b600060208201905061115d6000830184610e7e565b92915050565b6000602082019050818103600083015261117d8184610e8d565b905092915050565b6000602082019050818103600083015261119e81610ec6565b9050919050565b600060208201905081810360008301526111be81610f2c565b9050919050565b600060208201905081810360008301526111de81610f92565b9050919050565b600060208201905081810360008301526111fe81610ff8565b9050919050565b6000602082019050818103600083015261121e8161105e565b9050919050565b6000602082019050818103600083015261123e816110c4565b9050919050565b600060208201905061125a600083018461112a565b92915050565b60006020820190506112756000830184611139565b92915050565b600081519050919050565b600082825260208201905092915050565b60006112a28261132b565b91506112ad8361132b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156112e2576112e16113f0565b5b828201905092915050565b60006112f88261130b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611360578082015181840152602081019050611345565b8381111561136f576000848401525b50505050565b6000600282049050600182168061138d57607f821691505b602082108114156113a1576113a061141f565b5b50919050565b60006113b28261132b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156113e5576113e46113f0565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b611468816112ed565b811461147357600080fd5b50565b61147f8161132b565b811461148a57600080fd5b5056fea264697066735822122090041b963b3c5d518fd3bfffcb6e48722049000790c927fbc0aa925ea384749e64736f6c63430008000033

Deployed Bytecode

0x6080604052600436106100e15760003560e01c806370a082311161007f578063a457c2d711610059578063a457c2d71461030a578063a9059cbb14610347578063ad5edd0d14610384578063dd62ed3e146103c1576100eb565b806370a082311461026557806383ed5e8e146102a257806395d89b41146102df576100eb565b806323b872dd116100bb57806323b872dd14610183578063313ce567146101c057806339509351146101eb5780636fbad6d714610228576100eb565b806306fdde03146100f0578063095ea7b31461011b57806318160ddd14610158576100eb565b366100eb57600080fd5b600080fd5b3480156100fc57600080fd5b506101056103fe565b6040516101129190611163565b60405180910390f35b34801561012757600080fd5b50610142600480360381019061013d9190610e19565b610490565b60405161014f9190611148565b60405180910390f35b34801561016457600080fd5b5061016d6104ae565b60405161017a9190611245565b60405180910390f35b34801561018f57600080fd5b506101aa60048036038101906101a59190610dca565b6104b8565b6040516101b79190611148565b60405180910390f35b3480156101cc57600080fd5b506101d56104d0565b6040516101e29190611260565b60405180910390f35b3480156101f757600080fd5b50610212600480360381019061020d9190610e19565b6104d9565b60405161021f9190611148565b60405180910390f35b34801561023457600080fd5b5061024f600480360381019061024a9190610e55565b610585565b60405161025c9190611245565b60405180910390f35b34801561027157600080fd5b5061028c60048036038101906102879190610d65565b61059d565b6040516102999190611245565b60405180910390f35b3480156102ae57600080fd5b506102c960048036038101906102c49190610e55565b6105e5565b6040516102d69190611245565b60405180910390f35b3480156102eb57600080fd5b506102f46105fd565b6040516103019190611163565b60405180910390f35b34801561031657600080fd5b50610331600480360381019061032c9190610e19565b61068f565b60405161033e9190611148565b60405180910390f35b34801561035357600080fd5b5061036e60048036038101906103699190610e19565b61077a565b60405161037b9190611148565b60405180910390f35b34801561039057600080fd5b506103ab60048036038101906103a69190610e55565b610791565b6040516103b89190611245565b60405180910390f35b3480156103cd57600080fd5b506103e860048036038101906103e39190610d8e565b6107a9565b6040516103f59190611245565b60405180910390f35b60606003805461040d90611375565b80601f016020809104026020016040519081016040528092919081815260200182805461043990611375565b80156104865780601f1061045b57610100808354040283529160200191610486565b820191906000526020600020905b81548152906001019060200180831161046957829003601f168201915b5050505050905090565b60006104a461049d610830565b8484610838565b6001905092915050565b6000600254905090565b60006104c5848484610a03565b600190509392505050565b60006012905090565b600061057b6104e6610830565b8484600160006104f4610830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105769190611297565b610838565b6001905092915050565b60056020528060005260406000206000915090505481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60076020528060005260406000206000915090505481565b60606004805461060c90611375565b80601f016020809104026020016040519081016040528092919081815260200182805461063890611375565b80156106855780601f1061065a57610100808354040283529160200191610685565b820191906000526020600020905b81548152906001019060200180831161066857829003601f168201915b5050505050905090565b6000806001600061069e610830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561075b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075290611225565b60405180910390fd5b61076f610766610830565b85858403610838565b600191505092915050565b6000610787338484610a03565b6001905092915050565b60066020528060005260406000206000915090505481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089f90611205565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090f906111a5565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516109f69190611245565b60405180910390a3505050565b610a0e838383610a1b565b610a16610c9c565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a82906111e5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af290611185565b60405180910390fd5b610b06838383610d31565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610b8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b83906111c5565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c1f9190611297565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c839190611245565b60405180910390a3610c96848484610d36565b50505050565b6000600190505b60158111610d2d57610cb43061059d565b600560008381526020019081526020016000205410158015610cf15750610cda3061059d565b600660008381526020019081526020016000205411155b15610d1a57610d1430336007600085815260200190815260200160002054610a1b565b50610d2f565b8080610d25906113a7565b915050610ca3565b505b565b505050565b505050565b600081359050610d4a8161145f565b92915050565b600081359050610d5f81611476565b92915050565b600060208284031215610d7757600080fd5b6000610d8584828501610d3b565b91505092915050565b60008060408385031215610da157600080fd5b6000610daf85828601610d3b565b9250506020610dc085828601610d3b565b9150509250929050565b600080600060608486031215610ddf57600080fd5b6000610ded86828701610d3b565b9350506020610dfe86828701610d3b565b9250506040610e0f86828701610d50565b9150509250925092565b60008060408385031215610e2c57600080fd5b6000610e3a85828601610d3b565b9250506020610e4b85828601610d50565b9150509250929050565b600060208284031215610e6757600080fd5b6000610e7584828501610d50565b91505092915050565b610e87816112ff565b82525050565b6000610e988261127b565b610ea28185611286565b9350610eb2818560208601611342565b610ebb8161144e565b840191505092915050565b6000610ed3602383611286565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610f39602283611286565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610f9f602683611286565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611005602583611286565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061106b602483611286565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006110d1602583611286565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6111338161132b565b82525050565b61114281611335565b82525050565b600060208201905061115d6000830184610e7e565b92915050565b6000602082019050818103600083015261117d8184610e8d565b905092915050565b6000602082019050818103600083015261119e81610ec6565b9050919050565b600060208201905081810360008301526111be81610f2c565b9050919050565b600060208201905081810360008301526111de81610f92565b9050919050565b600060208201905081810360008301526111fe81610ff8565b9050919050565b6000602082019050818103600083015261121e8161105e565b9050919050565b6000602082019050818103600083015261123e816110c4565b9050919050565b600060208201905061125a600083018461112a565b92915050565b60006020820190506112756000830184611139565b92915050565b600081519050919050565b600082825260208201905092915050565b60006112a28261132b565b91506112ad8361132b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156112e2576112e16113f0565b5b828201905092915050565b60006112f88261130b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611360578082015181840152602081019050611345565b8381111561136f576000848401525b50505050565b6000600282049050600182168061138d57607f821691505b602082108114156113a1576113a061141f565b5b50919050565b60006113b28261132b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156113e5576113e46113f0565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b611468816112ed565b811461147357600080fd5b50565b61147f8161132b565b811461148a57600080fd5b5056fea264697066735822122090041b963b3c5d518fd3bfffcb6e48722049000790c927fbc0aa925ea384749e64736f6c63430008000033

Deployed Bytecode Sourcemap

16671:4681:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21333:8;;;16671:4681;;;;6655:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8822:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7775:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20506:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7617:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10374:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16704:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7946:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16796:35;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6874:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11092:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20324:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16751:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8524:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6655:100;6709:13;6742:5;6735:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6655:100;:::o;8822:169::-;8905:4;8922:39;8931:12;:10;:12::i;:::-;8945:7;8954:6;8922:8;:39::i;:::-;8979:4;8972:11;;8822:169;;;;:::o;7775:108::-;7836:7;7863:12;;7856:19;;7775:108;:::o;20506:224::-;20638:4;20655:45;20674:6;20682:9;20693:6;20655:18;:45::i;:::-;20718:4;20711:11;;20506:224;;;;;:::o;7617:93::-;7675:5;7700:2;7693:9;;7617:93;:::o;10374:215::-;10462:4;10479:80;10488:12;:10;:12::i;:::-;10502:7;10548:10;10511:11;:25;10523:12;:10;:12::i;:::-;10511:25;;;;;;;;;;;;;;;:34;10537:7;10511:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;10479:8;:80::i;:::-;10577:4;10570:11;;10374:215;;;;:::o;16704:40::-;;;;;;;;;;;;;;;;;:::o;7946:127::-;8020:7;8047:9;:18;8057:7;8047:18;;;;;;;;;;;;;;;;8040:25;;7946:127;;;:::o;16796:35::-;;;;;;;;;;;;;;;;;:::o;6874:104::-;6930:13;6963:7;6956:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6874:104;:::o;11092:413::-;11185:4;11202:24;11229:11;:25;11241:12;:10;:12::i;:::-;11229:25;;;;;;;;;;;;;;;:34;11255:7;11229:34;;;;;;;;;;;;;;;;11202:61;;11302:15;11282:16;:35;;11274:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11395:67;11404:12;:10;:12::i;:::-;11418:7;11446:15;11427:16;:34;11395:8;:67::i;:::-;11493:4;11486:11;;;11092:413;;;;:::o;20324:174::-;20402:4;20419:49;20438:10;20450:9;20461:6;20419:18;:49::i;:::-;20486:4;20479:11;;20324:174;;;;:::o;16751:38::-;;;;;;;;;;;;;;;;;:::o;8524:151::-;8613:7;8640:11;:18;8652:5;8640:18;;;;;;;;;;;;;;;:27;8659:7;8640:27;;;;;;;;;;;;;;;;8633:34;;8524:151;;;;:::o;679:98::-;732:7;759:10;752:17;;679:98;:::o;14776:380::-;14929:1;14912:19;;:5;:19;;;;14904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15010:1;14991:21;;:7;:21;;;;14983:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15094:6;15064:11;:18;15076:5;15064:18;;;;;;;;;;;;;;;:27;15083:7;15064:27;;;;;;;;;;;;;;;:36;;;;15132:7;15116:32;;15125:5;15116:32;;;15141:6;15116:32;;;;;;:::i;:::-;;;;;;;;14776:380;;;:::o;20736:170::-;20833:36;20843:6;20851:9;20862:6;20833:9;:36::i;:::-;20880:18;:16;:18::i;:::-;20736:170;;;:::o;11995:733::-;12153:1;12135:20;;:6;:20;;;;12127:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12237:1;12216:23;;:9;:23;;;;12208:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12292:47;12313:6;12321:9;12332:6;12292:20;:47::i;:::-;12352:21;12376:9;:17;12386:6;12376:17;;;;;;;;;;;;;;;;12352:41;;12429:6;12412:13;:23;;12404:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12550:6;12534:13;:22;12514:9;:17;12524:6;12514:17;;;;;;;;;;;;;;;:42;;;;12602:6;12578:9;:20;12588:9;12578:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;12643:9;12626:35;;12635:6;12626:35;;;12654:6;12626:35;;;;;;:::i;:::-;;;;;;;;12674:46;12694:6;12702:9;12713:6;12674:19;:46::i;:::-;11995:733;;;;:::o;20916:371::-;20968:6;20977:1;20968:10;;20964:316;20985:2;20980:1;:7;20964:316;;21048:30;21072:4;21048:15;:30::i;:::-;21030:11;:14;21042:1;21030:14;;;;;;;;;;;;:48;;:116;;;;;21116:30;21140:4;21116:15;:30::i;:::-;21100:9;:12;21110:1;21100:12;;;;;;;;;;;;:46;;21030:116;21008:261;;;21181:47;21199:4;21206:10;21218:6;:9;21225:1;21218:9;;;;;;;;;;;;21181;:47::i;:::-;21247:7;;;21008:261;20989:3;;;;;:::i;:::-;;;;20964:316;;;;20916:371;:::o;15756:125::-;;;;:::o;16485:124::-;;;;:::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:262::-;;2057:2;2045:9;2036:7;2032:23;2028:32;2025:2;;;2073:1;2070;2063:12;2025:2;2116:1;2141:53;2186:7;2177:6;2166:9;2162:22;2141:53;:::i;:::-;2131:63;;2087:117;2015:196;;;;:::o;2217:109::-;2298:21;2313:5;2298:21;:::i;:::-;2293:3;2286:34;2276:50;;:::o;2332:364::-;;2448:39;2481:5;2448:39;:::i;:::-;2503:71;2567:6;2562:3;2503:71;:::i;:::-;2496:78;;2583:52;2628:6;2623:3;2616:4;2609:5;2605:16;2583:52;:::i;:::-;2660:29;2682:6;2660:29;:::i;:::-;2655:3;2651:39;2644:46;;2424:272;;;;;:::o;2702:367::-;;2865:67;2929:2;2924:3;2865:67;:::i;:::-;2858:74;;2962:34;2958:1;2953:3;2949:11;2942:55;3028:5;3023:2;3018:3;3014:12;3007:27;3060:2;3055:3;3051:12;3044:19;;2848:221;;;:::o;3075:366::-;;3238:67;3302:2;3297:3;3238:67;:::i;:::-;3231:74;;3335:34;3331:1;3326:3;3322:11;3315:55;3401:4;3396:2;3391:3;3387:12;3380:26;3432:2;3427:3;3423:12;3416:19;;3221:220;;;:::o;3447:370::-;;3610:67;3674:2;3669:3;3610:67;:::i;:::-;3603:74;;3707:34;3703:1;3698:3;3694:11;3687:55;3773:8;3768:2;3763:3;3759:12;3752:30;3808:2;3803:3;3799:12;3792:19;;3593:224;;;:::o;3823:369::-;;3986:67;4050:2;4045:3;3986:67;:::i;:::-;3979:74;;4083:34;4079:1;4074:3;4070:11;4063:55;4149:7;4144:2;4139:3;4135:12;4128:29;4183:2;4178:3;4174:12;4167:19;;3969:223;;;:::o;4198:368::-;;4361:67;4425:2;4420:3;4361:67;:::i;:::-;4354:74;;4458:34;4454:1;4449:3;4445:11;4438:55;4524:6;4519:2;4514:3;4510:12;4503:28;4557:2;4552:3;4548:12;4541:19;;4344:222;;;:::o;4572:369::-;;4735:67;4799:2;4794:3;4735:67;:::i;:::-;4728:74;;4832:34;4828:1;4823:3;4819:11;4812:55;4898:7;4893:2;4888:3;4884:12;4877:29;4932:2;4927:3;4923:12;4916:19;;4718:223;;;:::o;4947:118::-;5034:24;5052:5;5034:24;:::i;:::-;5029:3;5022:37;5012:53;;:::o;5071:112::-;5154:22;5170:5;5154:22;:::i;:::-;5149:3;5142:35;5132:51;;:::o;5189:210::-;;5314:2;5303:9;5299:18;5291:26;;5327:65;5389:1;5378:9;5374:17;5365:6;5327:65;:::i;:::-;5281:118;;;;:::o;5405:313::-;;5556:2;5545:9;5541:18;5533:26;;5605:9;5599:4;5595:20;5591:1;5580:9;5576:17;5569:47;5633:78;5706:4;5697:6;5633:78;:::i;:::-;5625:86;;5523:195;;;;:::o;5724:419::-;;5928:2;5917:9;5913:18;5905:26;;5977:9;5971:4;5967:20;5963:1;5952:9;5948:17;5941:47;6005:131;6131:4;6005:131;:::i;:::-;5997:139;;5895:248;;;:::o;6149:419::-;;6353:2;6342:9;6338:18;6330:26;;6402:9;6396:4;6392:20;6388:1;6377:9;6373:17;6366:47;6430:131;6556:4;6430:131;:::i;:::-;6422:139;;6320:248;;;:::o;6574:419::-;;6778:2;6767:9;6763:18;6755:26;;6827:9;6821:4;6817:20;6813:1;6802:9;6798:17;6791:47;6855:131;6981:4;6855:131;:::i;:::-;6847:139;;6745:248;;;:::o;6999:419::-;;7203:2;7192:9;7188:18;7180:26;;7252:9;7246:4;7242:20;7238:1;7227:9;7223:17;7216:47;7280:131;7406:4;7280:131;:::i;:::-;7272:139;;7170:248;;;:::o;7424:419::-;;7628:2;7617:9;7613:18;7605:26;;7677:9;7671:4;7667:20;7663:1;7652:9;7648:17;7641:47;7705:131;7831:4;7705:131;:::i;:::-;7697:139;;7595:248;;;:::o;7849:419::-;;8053:2;8042:9;8038:18;8030:26;;8102:9;8096:4;8092:20;8088:1;8077:9;8073:17;8066:47;8130:131;8256:4;8130:131;:::i;:::-;8122:139;;8020:248;;;:::o;8274:222::-;;8405:2;8394:9;8390:18;8382:26;;8418:71;8486:1;8475:9;8471:17;8462:6;8418:71;:::i;:::-;8372:124;;;;:::o;8502:214::-;;8629:2;8618:9;8614:18;8606:26;;8642:67;8706:1;8695:9;8691:17;8682:6;8642:67;:::i;:::-;8596:120;;;;:::o;8722:99::-;;8808:5;8802:12;8792:22;;8781:40;;;:::o;8827:169::-;;8945:6;8940:3;8933:19;8985:4;8980:3;8976:14;8961:29;;8923:73;;;;:::o;9002:305::-;;9061:20;9079:1;9061:20;:::i;:::-;9056:25;;9095:20;9113:1;9095:20;:::i;:::-;9090:25;;9249:1;9181:66;9177:74;9174:1;9171:81;9168:2;;;9255:18;;:::i;:::-;9168:2;9299:1;9296;9292:9;9285:16;;9046:261;;;;:::o;9313:96::-;;9379:24;9397:5;9379:24;:::i;:::-;9368:35;;9358:51;;;:::o;9415:90::-;;9492:5;9485:13;9478:21;9467:32;;9457:48;;;:::o;9511:126::-;;9588:42;9581:5;9577:54;9566:65;;9556:81;;;:::o;9643:77::-;;9709:5;9698:16;;9688:32;;;:::o;9726:86::-;;9801:4;9794:5;9790:16;9779:27;;9769:43;;;:::o;9818:307::-;9886:1;9896:113;9910:6;9907:1;9904:13;9896:113;;;9995:1;9990:3;9986:11;9980:18;9976:1;9971:3;9967:11;9960:39;9932:2;9929:1;9925:10;9920:15;;9896:113;;;10027:6;10024:1;10021:13;10018:2;;;10107:1;10098:6;10093:3;10089:16;10082:27;10018:2;9867:258;;;;:::o;10131:320::-;;10212:1;10206:4;10202:12;10192:22;;10259:1;10253:4;10249:12;10280:18;10270:2;;10336:4;10328:6;10324:17;10314:27;;10270:2;10398;10390:6;10387:14;10367:18;10364:38;10361:2;;;10417:18;;:::i;:::-;10361:2;10182:269;;;;:::o;10457:233::-;;10519:24;10537:5;10519:24;:::i;:::-;10510:33;;10565:66;10558:5;10555:77;10552:2;;;10635:18;;:::i;:::-;10552:2;10682:1;10675:5;10671:13;10664:20;;10500:190;;;:::o;10696:180::-;10744:77;10741:1;10734:88;10841:4;10838:1;10831:15;10865:4;10862:1;10855:15;10882:180;10930:77;10927:1;10920:88;11027:4;11024:1;11017:15;11051:4;11048:1;11041:15;11068:102;;11160:2;11156:7;11151:2;11144:5;11140:14;11136:28;11126:38;;11116:54;;;:::o;11176:122::-;11249:24;11267:5;11249:24;:::i;:::-;11242:5;11239:35;11229:2;;11288:1;11285;11278:12;11229:2;11219:79;:::o;11304:122::-;11377:24;11395:5;11377:24;:::i;:::-;11370:5;11367:35;11357:2;;11416:1;11413;11406:12;11357:2;11347:79;:::o

Swarm Source

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