ETH Price: $3,424.04 (+2.16%)

Token

DMM: Governance (DMG)
 

Overview

Max Total Supply

249,511,024.989879355177175971 DMG

Holders

7,737 (0.00%)

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

$277,711.43

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
100 DMG

Value
$0.11 ( ~3.21257877613565E-05 Eth) [0.0000%]
0xc0b5184686bb90d1c0fb04e6b0080a181a675897
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Earn 6.25% on ETH, DAI and USDC with DeFi Money Market (DMM) all backed by real world income generating assets viewable on-chain.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
DMGToken

Compiler Version
v0.5.13+commit.5b0b510c

Optimization Enabled:
Yes with 200 runs

Other Settings:
istanbul EvmVersion, Apache-2.0 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-05-18
*/

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

pragma solidity ^0.5.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP. Does not include
 * the optional functions; to access them see {ERC20Detailed}.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

// File: contracts/governance/dmg/SafeBitMath.sol

pragma solidity ^0.5.0;

library SafeBitMath {

    function safe64(uint n, string memory errorMessage) internal pure returns (uint64) {
        require(n < 2 ** 64, errorMessage);
        return uint64(n);
    }

    function safe128(uint n, string memory errorMessage) internal pure returns (uint128) {
        require(n < 2 ** 128, errorMessage);
        return uint128(n);
    }

    function add128(uint128 a, uint128 b, string memory errorMessage) internal pure returns (uint128) {
        uint128 c = a + b;
        require(c >= a, errorMessage);
        return c;
    }

    function sub128(uint128 a, uint128 b, string memory errorMessage) internal pure returns (uint128) {
        require(b <= a, errorMessage);
        return a - b;
    }

}

// File: contracts/utils/EvmUtil.sol

pragma solidity ^0.5.13;

library EvmUtil {

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

}

// File: contracts/governance/dmg/DMGToken.sol

pragma solidity ^0.5.13;
pragma experimental ABIEncoderV2;




/**
 * This contract is mainly based on Compound's COMP token
 * (https://etherscan.io/address/0xc00e94cb662c3520282e6f5717214004a7f26888). Unfortunately, no license was found on
 * Etherscan for the token and the code for the token cannot be found on their GitHub, so the proper attribution to the
 * Compound team cannot be made.
 *
 * Changes made to the token contract include modifying internal storage of balances/allowances to use 128 bits instead
 * of 96, increasing the number of bits for a checkpoint to 64, adding a burn function, and creating an initial
 * totalSupply of 250mm.
 */
contract DMGToken is IERC20 {

    string public constant name = "DMM: Governance";

    string public constant symbol = "DMG";

    uint8 public constant decimals = 18;

    uint public totalSupply;

    /// @notice Allowance amounts on behalf of others
    mapping(address => mapping(address => uint128)) internal allowances;

    /// @notice Official record of token balances for each account
    mapping(address => uint128) internal balances;

    /// @notice A record of each account's delegate
    mapping(address => address) public delegates;

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

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

    /// @notice The number of checkpoints for each account
    mapping(address => uint64) public numCheckpoints;

    bytes32 public domainSeparator;

    /// @notice The EIP-712 typehash for the contract's domain
    bytes32 public constant DOMAIN_TYPE_HASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)");

    /// @notice The EIP-712 typehash for the delegation struct used by the contract
    bytes32 public constant DELEGATION_TYPE_HASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)");

    /// @notice The EIP-712 typehash for the transfer struct used by the contract
    bytes32 public constant TRANSFER_TYPE_HASH = keccak256("Transfer(address recipient,uint256 rawAmount,uint256 nonce,uint256 expiry)");

    /// @notice The EIP-712 typehash for the approve struct used by the contract
    bytes32 public constant APPROVE_TYPE_HASH = keccak256("Approve(address spender,uint256 rawAmount,uint256 nonce,uint256 expiry)");

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

    /// @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 Construct the DMG token
     * @param account The initial account to receive all of the tokens
     */
    constructor(address account) public {
        // 250mm
        totalSupply = 250000000e18;
        require(totalSupply == uint128(totalSupply), "DMG: total supply exceeds 128 bits");

        domainSeparator = keccak256(
            abi.encode(DOMAIN_TYPE_HASH, keccak256(bytes(name)), EvmUtil.getChainId(), address(this))
        );

        balances[account] = uint128(totalSupply);
        emit Transfer(address(0), account, totalSupply);
    }

    /**
     * @notice Get the number of tokens `spender` is approved to spend on behalf of `account`
     * @param account The address of the account holding the funds
     * @param spender The address of the account spending the funds
     * @return The number of tokens approved
     */
    function allowance(address account, address spender) external view returns (uint) {
        return allowances[account][spender];
    }

    /**
     * @notice Approve `spender` to transfer up to `amount` from `src`
     * @dev This will overwrite the approval amount for `spender`
     *  and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)
     * @param spender The address of the account which may transfer tokens
     * @param rawAmount The number of tokens that are approved (2^256-1 means infinite)
     * @return Whether or not the approval succeeded
     */
    function approve(address spender, uint rawAmount) external returns (bool) {
        uint128 amount;
        if (rawAmount == uint(- 1)) {
            amount = uint128(- 1);
        } else {
            amount = SafeBitMath.safe128(rawAmount, "DMG::approve: amount exceeds 128 bits");
        }

        _approveTokens(msg.sender, spender, amount);
        return true;
    }

    /**
     * @notice Get the number of tokens held by the `account`
     * @param account The address of the account to get the balance of
     * @return The number of tokens held
     */
    function balanceOf(address account) external view returns (uint) {
        return balances[account];
    }

    /**
     * @notice Transfer `amount` tokens from `msg.sender` to `dst`
     * @param dst The address of the destination account
     * @param rawAmount The number of tokens to transfer
     * @return Whether or not the transfer succeeded
     */
    function transfer(address dst, uint rawAmount) external returns (bool) {
        uint128 amount = SafeBitMath.safe128(rawAmount, "DMG::transfer: amount exceeds 128 bits");
        _transferTokens(msg.sender, dst, amount);
        return true;
    }

    /**
     * @notice Transfers `amount` tokens from `msg.sender` to the zero address
     * @param rawAmount The number of tokens to burn
     * @return Whether or not the transfer succeeded
    */
    function burn(uint rawAmount) external returns (bool) {
        uint128 amount = SafeBitMath.safe128(rawAmount, "DMG::burn: amount exceeds 128 bits");
        _burnTokens(msg.sender, amount);
        return true;
    }

    /**
     * @notice Transfer `amount` tokens from `src` to `dst`
     * @param src The address of the source account
     * @param dst The address of the destination account
     * @param rawAmount The number of tokens to transfer
     * @return Whether or not the transfer succeeded
     */
    function transferFrom(address src, address dst, uint rawAmount) external returns (bool) {
        address spender = msg.sender;
        uint128 spenderAllowance = allowances[src][spender];
        uint128 amount = SafeBitMath.safe128(rawAmount, "DMG::allowances: amount exceeds 128 bits");

        if (spender != src && spenderAllowance != uint128(- 1)) {
            uint128 newAllowance = SafeBitMath.sub128(spenderAllowance, amount, "DMG::transferFrom: transfer amount exceeds spender allowance");
            allowances[src][spender] = newAllowance;

            emit Approval(src, spender, newAllowance);
        }

        _transferTokens(src, dst, amount);
        return true;
    }

    /**
     * @notice Delegate votes from `msg.sender` to `delegatee`
     * @param delegatee The address to delegate votes to
     */
    function delegate(address delegatee) public {
        return _delegate(msg.sender, delegatee);
    }

    function nonceOf(address signer) public view returns (uint) {
        return nonces[signer];
    }

    /**
     * @notice Delegates votes from signatory to `delegatee`
     * @param delegatee The address to delegate votes to
     * @param nonce The contract state required to match the signature
     * @param expiry The time at which to expire the signature
     * @param v The recovery byte of the signature
     * @param r Half of the ECDSA signature pair
     * @param s Half of the ECDSA signature pair
     */
    function delegateBySig(address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) public {
        bytes32 structHash = keccak256(abi.encode(DELEGATION_TYPE_HASH, delegatee, nonce, expiry));
        bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "DMG::delegateBySig: invalid signature");
        require(nonce == nonces[signatory]++, "DMG::delegateBySig: invalid nonce");
        require(now <= expiry, "DMG::delegateBySig: signature expired");
        return _delegate(signatory, delegatee);
    }

    /**
     * @notice Transfers tokens from signatory to `recipient`
     * @param recipient The address to receive the tokens
     * @param rawAmount The amount of tokens to be sent to recipient
     * @param nonce The contract state required to match the signature
     * @param expiry The time at which to expire the signature
     * @param v The recovery byte of the signature
     * @param r Half of the ECDSA signature pair
     * @param s Half of the ECDSA signature pair
     */
    function transferBySig(address recipient, uint rawAmount, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) public {
        bytes32 structHash = keccak256(abi.encode(TRANSFER_TYPE_HASH, recipient, rawAmount, nonce, expiry));
        bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "DMG::transferBySig: invalid signature");
        require(nonce == nonces[signatory]++, "DMG::transferBySig: invalid nonce");
        require(now <= expiry, "DMG::transferBySig: signature expired");

        uint128 amount = SafeBitMath.safe128(rawAmount, "DMG::transferBySig: amount exceeds 128 bits");
        return _transferTokens(signatory, recipient, amount);
    }

    /**
     * @notice Approves tokens from signatory to be spent by `spender`
     * @param spender The address to receive the tokens
     * @param rawAmount The amount of tokens to be sent to spender
     * @param nonce The contract state required to match the signature
     * @param expiry The time at which to expire the signature
     * @param v The recovery byte of the signature
     * @param r Half of the ECDSA signature pair
     * @param s Half of the ECDSA signature pair
     */
    function approveBySig(address spender, uint rawAmount, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) public {
        bytes32 structHash = keccak256(abi.encode(APPROVE_TYPE_HASH, spender, rawAmount, nonce, expiry));
        bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "DMG::approveBySig: invalid signature");
        require(nonce == nonces[signatory]++, "DMG::approveBySig: invalid nonce");
        require(now <= expiry, "DMG::approveBySig: signature expired");

        uint128 amount;
        if (rawAmount == uint(- 1)) {
            amount = uint128(- 1);
        } else {
            amount = SafeBitMath.safe128(rawAmount, "DMG::approveBySig: amount exceeds 128 bits");
        }
        _approveTokens(signatory, spender, amount);
    }

    /**
     * @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 (uint128) {
        uint64 nCheckpoints = numCheckpoints[account];
        return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0;
    }

    /**
     * @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) public view returns (uint128) {
        require(blockNumber < block.number, "DMG::getPriorVotes: not yet determined");

        uint64 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;
        }

        uint64 lower = 0;
        uint64 upper = nCheckpoints - 1;
        while (upper > lower) {
            uint64 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;
    }

    function _delegate(address delegator, address delegatee) internal {
        address currentDelegate = delegates[delegator];
        uint128 delegatorBalance = balances[delegator];
        delegates[delegator] = delegatee;

        emit DelegateChanged(delegator, currentDelegate, delegatee);

        _moveDelegates(currentDelegate, delegatee, delegatorBalance);
    }

    function _transferTokens(address src, address dst, uint128 amount) internal {
        require(src != address(0), "DMG::_transferTokens: cannot transfer from the zero address");
        require(dst != address(0), "DMG::_transferTokens: cannot transfer to the zero address");

        balances[src] = SafeBitMath.sub128(balances[src], amount, "DMG::_transferTokens: transfer amount exceeds balance");
        balances[dst] = SafeBitMath.add128(balances[dst], amount, "DMG::_transferTokens: transfer amount overflows");
        emit Transfer(src, dst, amount);

        _moveDelegates(delegates[src], delegates[dst], amount);
    }

    function _approveTokens(address owner, address spender, uint128 amount) internal {
        allowances[owner][spender] = amount;

        emit Approval(owner, spender, amount);
    }

    function _burnTokens(address src, uint128 amount) internal {
        require(src != address(0), "DMG::_burnTokens: cannot burn from the zero address");

        balances[src] = SafeBitMath.sub128(balances[src], amount, "DMG::_burnTokens: burn amount exceeds balance");
        emit Transfer(src, address(0), amount);

        totalSupply = SafeBitMath.sub128(uint128(totalSupply), amount, "DMG::_burnTokens: burn amount exceeds total supply");

        _moveDelegates(delegates[src], address(0), amount);
    }

    function _moveDelegates(address srcRep, address dstRep, uint128 amount) internal {
        if (srcRep != dstRep && amount > 0) {
            if (srcRep != address(0)) {
                uint64 srcRepNum = numCheckpoints[srcRep];
                uint128 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0;
                uint128 srcRepNew = SafeBitMath.sub128(srcRepOld, amount, "DMG::_moveVotes: vote amount underflows");
                _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew);
            }

            if (dstRep != address(0)) {
                uint64 dstRepNum = numCheckpoints[dstRep];
                uint128 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0;
                uint128 dstRepNew = SafeBitMath.add128(dstRepOld, amount, "DMG::_moveVotes: vote amount overflows");
                _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew);
            }
        }
    }

    function _writeCheckpoint(address delegatee, uint64 nCheckpoints, uint128 oldVotes, uint128 newVotes) internal {
        uint64 blockNumber = SafeBitMath.safe64(block.number, "DMG::_writeCheckpoint: block number exceeds 64 bits");

        if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) {
            checkpoints[delegatee][nCheckpoints - 1].votes = newVotes;
        } else {
            checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes);
            numCheckpoints[delegatee] = nCheckpoints + 1;
        }

        emit DelegateVotesChanged(delegatee, oldVotes, newVotes);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"account","type":"address"}],"payable":false,"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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[],"name":"APPROVE_TYPE_HASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DELEGATION_TYPE_HASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DOMAIN_TYPE_HASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TRANSFER_TYPE_HASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"approveBySig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint64","name":"","type":"uint64"}],"name":"checkpoints","outputs":[{"internalType":"uint64","name":"fromBlock","type":"uint64"},{"internalType":"uint128","name":"votes","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"domainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"signer","type":"address"}],"name":"nonceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"transferBySig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b50604051620027f4380380620027f4833981016040819052620000349162000182565b6acecb8f27f4200f3a00000060005560405162000051906200024e565b60408051918290038220828201909152600f82527f444d4d3a20476f7665726e616e63650000000000000000000000000000000000602092830152907f3fbae15a6813c059ad27483fac92be61e776946871f5b5054fedbdb94e478d9290620000c390620022486200016b821b17901c565b30604051602001620000d994939291906200025b565b60408051808303601f190181528282528051602091820120600655600080546001600160a01b038616808352600290935292812080546001600160801b0319166001600160801b0390941693909317909255815490927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916200015c91620002a1565b60405180910390a350620002ec565b4690565b80516200017c81620002d2565b92915050565b6000602082840312156200019557600080fd5b6000620001a384846200016f565b949350505050565b620001b681620002b6565b82525050565b620001b681620002c3565b6000620001d6604383620002b1565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b60006200017c82620001c7565b608081016200026b8287620001bc565b6200027a6020830186620001bc565b620002896040830185620001bc565b620002986060830184620001ab565b95945050505050565b602081016200017c8284620001bc565b919050565b60006200017c82620002c6565b90565b6001600160a01b031690565b620002dd81620002b6565b8114620002e957600080fd5b50565b6124f880620002fc6000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c80637b8d665e116100de578063c0993eea11610097578063dd558dd111610071578063dd558dd114610351578063dd62ed3e14610364578063ed2a2d6414610377578063f698da251461038a5761018e565b8063c0993eea14610315578063c3cda5201461031d578063d4ea1bcb146103305761018e565b80637b8d665e146102c45780637ecebe00146102cc57806395d89b41146102df578063a9059cbb146102e7578063b4b5ea57146102fa578063bad517881461030d5761018e565b80633dbf7a241161014b5780635c19a95c116101255780635c19a95c1461025e5780636fcfff451461027157806370a0823114610291578063782d6fe1146102a45761018e565b80633dbf7a241461021657806342966c681461022b578063587cde1e1461023e5761018e565b806306fdde0314610193578063095ea7b3146101b157806318160ddd146101d157806323b872dd146101e6578063313ce567146101f95780633cd7ddc81461020e575b600080fd5b61019b610392565b6040516101a8919061203a565b60405180910390f35b6101c46101bf366004611754565b6103bd565b6040516101a89190611f79565b6101d961040f565b6040516101a89190611f87565b6101c46101f4366004611707565b610415565b61020161055e565b6040516101a8919061217b565b6101d9610563565b610229610224366004611784565b61057a565b005b6101c46102393660046118d7565b610720565b61025161024c3660046116a7565b61075a565b6040516101a89190611f6b565b61022961026c3660046116a7565b610775565b61028461027f3660046116a7565b610782565b6040516101a89190612152565b6101d961029f3660046116a7565b61079d565b6102b76102b2366004611754565b6107c1565b6040516101a8919061211b565b6101d96109ed565b6101d96102da3660046116a7565b6109f9565b61019b610a0b565b6101c46102f5366004611754565b610a2a565b6102b76103083660046116a7565b610a5c565b6101d9610ad2565b6101d9610ade565b61022961032b366004611820565b610aea565b61034361033e3660046118a7565b610c49565b6040516101a8929190612160565b61022961035f366004611784565b610c81565b6101d96103723660046116cd565b610dfd565b6101d96103853660046116a7565b610e31565b6101d9610e4c565b6040518060400160405280600f81526020016e444d4d3a20476f7665726e616e636560881b81525081565b6000806000198314156103d357506000196103f8565b6103f58360405180606001604052806025815260200161246960259139610e52565b90505b610403338583610e81565b60019150505b92915050565b60005481565b6001600160a01b03831660009081526001602090815260408083203380855290835281842054825160608101909352602880845291936001600160801b0390911692859261046d928892919061248e90830139610e52565b9050866001600160a01b0316836001600160a01b03161415801561049a57506001600160801b0382811614155b156105445760006104c483836040518060600160405280603c815260200161233d603c9139610eff565b6001600160a01b038981166000818152600160209081526040808320948a16808452949091529081902080546001600160801b0319166001600160801b0386161790555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061053a908590612129565b60405180910390a3505b61054f878783610f3e565b600193505050505b9392505050565b601281565b60405161056f90611f3f565b604051809103902081565b600060405161058890611f3f565b6040519081900381206105a5918a908a908a908a90602001611fd3565b6040516020818303038152906040528051906020012090506000600654826040516020016105d4929190611f0e565b604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051610611949392919061201f565b6020604051602081039080840390855afa158015610633573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661066f5760405162461bcd60e51b8152600401610666906120eb565b60405180910390fd5b6001600160a01b038116600090815260076020526040902080546001810190915588146106ae5760405162461bcd60e51b81526004016106669061205b565b864211156106ce5760405162461bcd60e51b81526004016106669061208b565b60006000198a14156106e35750600019610708565b6107058a6040518060600160405280602a8152602001612419602a9139610e52565b90505b610713828c83610e81565b5050505050505050505050565b600080610745836040518060600160405280602281526020016123f760229139610e52565b905061075133826110e9565b50600192915050565b6003602052600090815260409020546001600160a01b031681565b61077f3382611224565b50565b6005602052600090815260409020546001600160401b031681565b6001600160a01b03166000908152600260205260409020546001600160801b031690565b60004382106107e25760405162461bcd60e51b8152600401610666906120db565b6001600160a01b0383166000908152600560205260409020546001600160401b031680610813576000915050610409565b6001600160a01b03841660009081526004602090815260408083206001600160401b03600019860181168552925290912054168310610895576001600160a01b0384166000908152600460209081526040808320600019949094016001600160401b031683529290522054600160401b90046001600160801b03169050610409565b6001600160a01b03841660009081526004602090815260408083208380529091529020546001600160401b03168310156108d3576000915050610409565b600060001982015b816001600160401b0316816001600160401b031611156109a55760028282036001600160401b031604810361090e611664565b506001600160a01b03871660009081526004602090815260408083206001600160401b03858116855290835292819020815180830190925254928316808252600160401b9093046001600160801b0316918101919091529087141561097d576020015194506104099350505050565b80516001600160401b03168711156109975781935061099e565b6001820392505b50506108db565b506001600160a01b03851660009081526004602090815260408083206001600160401b03909416835292905220546001600160801b03600160401b9091041691505092915050565b60405161056f90611f55565b60076020526000908152604090205481565b60405180604001604052806003815260200162444d4760e81b81525081565b600080610a4f8360405180606001604052806026815260200161244360269139610e52565b9050610403338583610f3e565b6001600160a01b0381166000908152600560205260408120546001600160401b031680610a8a576000610557565b6001600160a01b038316600090815260046020908152604080832060001985016001600160401b03168452909152902054600160401b90046001600160801b03169392505050565b60405161056f90611f60565b60405161056f90611f4a565b6000604051610af890611f60565b604051908190038120610b1391899089908990602001611f95565b604051602081830303815290604052805190602001209050600060065482604051602001610b42929190611f0e565b604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051610b7f949392919061201f565b6020604051602081039080840390855afa158015610ba1573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610bd45760405162461bcd60e51b8152600401610666906120fb565b6001600160a01b03811660009081526007602052604090208054600181019091558814610c135760405162461bcd60e51b8152600401610666906120ab565b86421115610c335760405162461bcd60e51b81526004016106669061206b565b610c3d818a611224565b5050505b505050505050565b60046020908152600092835260408084209091529082529020546001600160401b03811690600160401b90046001600160801b031682565b6000604051610c8f90611f55565b604051908190038120610cac918a908a908a908a90602001611fd3565b604051602081830303815290604052805190602001209050600060065482604051602001610cdb929190611f0e565b604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051610d18949392919061201f565b6020604051602081039080840390855afa158015610d3a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610d6d5760405162461bcd60e51b81526004016106669061210b565b6001600160a01b03811660009081526007602052604090208054600181019091558814610dac5760405162461bcd60e51b81526004016106669061207b565b86421115610dcc5760405162461bcd60e51b81526004016106669061209b565b6000610df08a6040518060600160405280602b815260200161239f602b9139610e52565b9050610713828c83610f3e565b6001600160a01b0391821660009081526001602090815260408083209390941682529190915220546001600160801b031690565b6001600160a01b031660009081526007602052604090205490565b60065481565b600081600160801b8410610e795760405162461bcd60e51b8152600401610666919061203a565b509192915050565b6001600160a01b038381166000818152600160209081526040808320948716808452949091529081902080546001600160801b0319166001600160801b038616179055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ef2908590612129565b60405180910390a3505050565b6000836001600160801b0316836001600160801b031611158290610f365760405162461bcd60e51b8152600401610666919061203a565b505050900390565b6001600160a01b038316610f645760405162461bcd60e51b81526004016106669061204b565b6001600160a01b038216610f8a5760405162461bcd60e51b8152600401610666906120cb565b6001600160a01b038316600090815260026020908152604091829020548251606081019093526035808452610fd5936001600160801b03909216928592919061224d90830139610eff565b6001600160a01b03848116600090815260026020908152604080832080546001600160801b0319166001600160801b0396871617905592861682529082902054825160608101909352602f80845261103d94919091169285929091906122b5908301396112ae565b6001600160a01b038381166000818152600260205260409081902080546001600160801b0319166001600160801b0395909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110aa908590612129565b60405180910390a36001600160a01b038084166000908152600360205260408082205485841683529120546110e4929182169116836112ea565b505050565b6001600160a01b03821661110f5760405162461bcd60e51b8152600401610666906120bb565b6001600160a01b03821660009081526002602090815260409182902054825160608101909352602d80845261115a936001600160801b0390921692859291906123ca90830139610eff565b6001600160a01b03831660008181526002602052604080822080546001600160801b0319166001600160801b03959095169490941790935591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111c1908590612129565b60405180910390a36111ee600054826040518060600160405280603281526020016122e460329139610eff565b6001600160801b031660009081556001600160a01b0380841682526003602052604082205461122092911690836112ea565b5050565b6001600160a01b03808316600081815260036020818152604080842080546002845282862054949093528787166001600160a01b031984168117909155905191909516946001600160801b039092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46112a88284836112ea565b50505050565b6000838301826001600160801b0380871690831610156112e15760405162461bcd60e51b8152600401610666919061203a565b50949350505050565b816001600160a01b0316836001600160a01b03161415801561131557506000816001600160801b0316115b156110e4576001600160a01b038316156113d3576001600160a01b0383166000908152600560205260408120546001600160401b0316908161135857600061139a565b6001600160a01b038516600090815260046020908152604080832060001986016001600160401b03168452909152902054600160401b90046001600160801b03165b905060006113c1828560405180606001604052806027815260200161231660279139610eff565b90506113cf86848484611484565b5050505b6001600160a01b038216156110e4576001600160a01b0382166000908152600560205260408120546001600160401b03169081611411576000611453565b6001600160a01b038416600090815260046020908152604080832060001986016001600160401b03168452909152902054600160401b90046001600160801b03165b9050600061147a8285604051806060016040528060268152602001612379602691396112ae565b9050610c41858484845b60006114a8436040518060600160405280603381526020016122826033913961163d565b90506000846001600160401b03161180156114f757506001600160a01b03851660009081526004602090815260408083206001600160401b036000198901811685529252909120548282169116145b15611553576001600160a01b038516600090815260046020908152604080832060001988016001600160401b0316845290915290208054600160401b600160c01b031916600160401b6001600160801b038516021790556115f3565b6040805180820182526001600160401b0380841682526001600160801b0380861660208085019182526001600160a01b038b166000818152600483528781208c871682528352878120965187549451909516600160401b02600160401b600160c01b031995871667ffffffffffffffff19958616179590951694909417909555938252600590935292909220805460018801909316929091169190911790555b846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724848460405161162e929190612137565b60405180910390a25050505050565b600081600160401b8410610e795760405162461bcd60e51b8152600401610666919061203a565b604080518082019091526000808252602082015290565b803561040981612219565b80356104098161222d565b803561040981612236565b80356104098161223f565b6000602082840312156116b957600080fd5b60006116c5848461167b565b949350505050565b600080604083850312156116e057600080fd5b60006116ec858561167b565b92505060206116fd8582860161167b565b9150509250929050565b60008060006060848603121561171c57600080fd5b6000611728868661167b565b93505060206117398682870161167b565b925050604061174a86828701611686565b9150509250925092565b6000806040838503121561176757600080fd5b6000611773858561167b565b92505060206116fd85828601611686565b600080600080600080600060e0888a03121561179f57600080fd5b60006117ab8a8a61167b565b97505060206117bc8a828b01611686565b96505060406117cd8a828b01611686565b95505060606117de8a828b01611686565b94505060806117ef8a828b0161169c565b93505060a06118008a828b01611686565b92505060c06118118a828b01611686565b91505092959891949750929550565b60008060008060008060c0878903121561183957600080fd5b6000611845898961167b565b965050602061185689828a01611686565b955050604061186789828a01611686565b945050606061187889828a0161169c565b935050608061188989828a01611686565b92505060a061189a89828a01611686565b9150509295509295509295565b600080604083850312156118ba57600080fd5b60006118c6858561167b565b92505060206116fd85828601611691565b6000602082840312156118e957600080fd5b60006116c58484611686565b6118fe8161219b565b82525050565b6118fe816121a6565b6118fe816121ab565b6118fe611922826121ab565b6121ab565b600061193282612189565b61193c818561218d565b935061194c8185602086016121e3565b6119558161220f565b9093019392505050565b600061196c603b8361218d565b7f444d473a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e736665722066726f6d20746865207a65726f20616464726573730000000000602082015260400192915050565b60006119cb60208361218d565b7f444d473a3a617070726f766542795369673a20696e76616c6964206e6f6e6365815260200192915050565b6000611a0460258361218d565b7f444d473a3a64656c656761746542795369673a207369676e61747572652065788152641c1a5c995960da1b602082015260400192915050565b6000611a4b60218361218d565b7f444d473a3a7472616e7366657242795369673a20696e76616c6964206e6f6e638152606560f81b602082015260400192915050565b6000611a8e600283612196565b61190160f01b815260020192915050565b6000611aac60248361218d565b7f444d473a3a617070726f766542795369673a207369676e6174757265206578708152631a5c995960e21b602082015260400192915050565b6000611af2604783612196565b7f417070726f76652861646472657373207370656e6465722c75696e743235362081527f726177416d6f756e742c75696e74323536206e6f6e63652c75696e74323536206020820152666578706972792960c81b604082015260470192915050565b6000611b6160258361218d565b7f444d473a3a7472616e7366657242795369673a207369676e61747572652065788152641c1a5c995960da1b602082015260400192915050565b6000611ba860218361218d565b7f444d473a3a64656c656761746542795369673a20696e76616c6964206e6f6e638152606560f81b602082015260400192915050565b6000611beb60338361218d565b7f444d473a3a5f6275726e546f6b656e733a2063616e6e6f74206275726e2066728152726f6d20746865207a65726f206164647265737360681b602082015260400192915050565b6000611c40604383612196565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201526263742960e81b604082015260430192915050565b6000611cab60398361218d565b7f444d473a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e7366657220746f20746865207a65726f206164647265737300000000000000602082015260400192915050565b6000611d0a60268361218d565b7f444d473a3a6765745072696f72566f7465733a206e6f742079657420646574658152651c9b5a5b995960d21b602082015260400192915050565b6000611d5260248361218d565b7f444d473a3a617070726f766542795369673a20696e76616c6964207369676e618152637475726560e01b602082015260400192915050565b6000611d9860258361218d565b7f444d473a3a64656c656761746542795369673a20696e76616c6964207369676e815264617475726560d81b602082015260400192915050565b6000611ddf604a83612196565b7f5472616e73666572286164647265737320726563697069656e742c75696e743281527f353620726177416d6f756e742c75696e74323536206e6f6e63652c75696e74326020820152693536206578706972792960b01b6040820152604a0192915050565b6000611e51603a83612196565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020820152603a0192915050565b6000611eb060258361218d565b7f444d473a3a7472616e7366657242795369673a20696e76616c6964207369676e815264617475726560d81b602082015260400192915050565b6118fe816121ae565b6118fe816121d8565b6118fe816121c6565b6118fe816121d2565b6000611f1982611a81565b9150611f258285611916565b602082019150611f358284611916565b5060200192915050565b600061040982611ae5565b600061040982611c33565b600061040982611dd2565b600061040982611e44565b6020810161040982846118f5565b602081016104098284611904565b60208101610409828461190d565b60808101611fa3828761190d565b611fb060208301866118f5565b611fbd604083018561190d565b611fca606083018461190d565b95945050505050565b60a08101611fe1828861190d565b611fee60208301876118f5565b611ffb604083018661190d565b612008606083018561190d565b612015608083018461190d565b9695505050505050565b6080810161202d828761190d565b611fb06020830186611f05565b602080825281016105578184611927565b602080825281016104098161195f565b60208082528101610409816119be565b60208082528101610409816119f7565b6020808252810161040981611a3e565b6020808252810161040981611a9f565b6020808252810161040981611b54565b6020808252810161040981611b9b565b6020808252810161040981611bde565b6020808252810161040981611c9e565b6020808252810161040981611cfd565b6020808252810161040981611d45565b6020808252810161040981611d8b565b6020808252810161040981611ea3565b602081016104098284611eea565b602081016104098284611ef3565b604081016121458285611ef3565b6105576020830184611ef3565b602081016104098284611efc565b6040810161216e8285611efc565b6105576020830184611eea565b602081016104098284611f05565b5190565b90815260200190565b919050565b6000610409826121ba565b151590565b90565b6001600160801b031690565b6001600160a01b031690565b6001600160401b031690565b60ff1690565b6000610409826121ae565b60005b838110156121fe5781810151838201526020016121e6565b838111156112a85750506000910152565b601f01601f191690565b6122228161219b565b811461077f57600080fd5b612222816121ab565b612222816121c6565b612222816121d2565b469056fe444d473a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365444d473a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732036342062697473444d473a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773444d473a3a5f6275726e546f6b656e733a206275726e20616d6f756e74206578636565647320746f74616c20737570706c79444d473a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773444d473a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365444d473a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f7773444d473a3a7472616e7366657242795369673a20616d6f756e742065786365656473203132382062697473444d473a3a5f6275726e546f6b656e733a206275726e20616d6f756e7420657863656564732062616c616e6365444d473a3a6275726e3a20616d6f756e742065786365656473203132382062697473444d473a3a617070726f766542795369673a20616d6f756e742065786365656473203132382062697473444d473a3a7472616e736665723a20616d6f756e742065786365656473203132382062697473444d473a3a617070726f76653a20616d6f756e742065786365656473203132382062697473444d473a3a616c6c6f77616e6365733a20616d6f756e742065786365656473203132382062697473a365627a7a7231582078c3a566f49180424f193167c58aef986d7500d8b688e4c174ff50ac3034444e6c6578706572696d656e74616cf564736f6c634300050d00400000000000000000000000000f9dd46b0e1f77cec0f66c20b9a1f56cb34a4556

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061018e5760003560e01c80637b8d665e116100de578063c0993eea11610097578063dd558dd111610071578063dd558dd114610351578063dd62ed3e14610364578063ed2a2d6414610377578063f698da251461038a5761018e565b8063c0993eea14610315578063c3cda5201461031d578063d4ea1bcb146103305761018e565b80637b8d665e146102c45780637ecebe00146102cc57806395d89b41146102df578063a9059cbb146102e7578063b4b5ea57146102fa578063bad517881461030d5761018e565b80633dbf7a241161014b5780635c19a95c116101255780635c19a95c1461025e5780636fcfff451461027157806370a0823114610291578063782d6fe1146102a45761018e565b80633dbf7a241461021657806342966c681461022b578063587cde1e1461023e5761018e565b806306fdde0314610193578063095ea7b3146101b157806318160ddd146101d157806323b872dd146101e6578063313ce567146101f95780633cd7ddc81461020e575b600080fd5b61019b610392565b6040516101a8919061203a565b60405180910390f35b6101c46101bf366004611754565b6103bd565b6040516101a89190611f79565b6101d961040f565b6040516101a89190611f87565b6101c46101f4366004611707565b610415565b61020161055e565b6040516101a8919061217b565b6101d9610563565b610229610224366004611784565b61057a565b005b6101c46102393660046118d7565b610720565b61025161024c3660046116a7565b61075a565b6040516101a89190611f6b565b61022961026c3660046116a7565b610775565b61028461027f3660046116a7565b610782565b6040516101a89190612152565b6101d961029f3660046116a7565b61079d565b6102b76102b2366004611754565b6107c1565b6040516101a8919061211b565b6101d96109ed565b6101d96102da3660046116a7565b6109f9565b61019b610a0b565b6101c46102f5366004611754565b610a2a565b6102b76103083660046116a7565b610a5c565b6101d9610ad2565b6101d9610ade565b61022961032b366004611820565b610aea565b61034361033e3660046118a7565b610c49565b6040516101a8929190612160565b61022961035f366004611784565b610c81565b6101d96103723660046116cd565b610dfd565b6101d96103853660046116a7565b610e31565b6101d9610e4c565b6040518060400160405280600f81526020016e444d4d3a20476f7665726e616e636560881b81525081565b6000806000198314156103d357506000196103f8565b6103f58360405180606001604052806025815260200161246960259139610e52565b90505b610403338583610e81565b60019150505b92915050565b60005481565b6001600160a01b03831660009081526001602090815260408083203380855290835281842054825160608101909352602880845291936001600160801b0390911692859261046d928892919061248e90830139610e52565b9050866001600160a01b0316836001600160a01b03161415801561049a57506001600160801b0382811614155b156105445760006104c483836040518060600160405280603c815260200161233d603c9139610eff565b6001600160a01b038981166000818152600160209081526040808320948a16808452949091529081902080546001600160801b0319166001600160801b0386161790555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061053a908590612129565b60405180910390a3505b61054f878783610f3e565b600193505050505b9392505050565b601281565b60405161056f90611f3f565b604051809103902081565b600060405161058890611f3f565b6040519081900381206105a5918a908a908a908a90602001611fd3565b6040516020818303038152906040528051906020012090506000600654826040516020016105d4929190611f0e565b604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051610611949392919061201f565b6020604051602081039080840390855afa158015610633573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661066f5760405162461bcd60e51b8152600401610666906120eb565b60405180910390fd5b6001600160a01b038116600090815260076020526040902080546001810190915588146106ae5760405162461bcd60e51b81526004016106669061205b565b864211156106ce5760405162461bcd60e51b81526004016106669061208b565b60006000198a14156106e35750600019610708565b6107058a6040518060600160405280602a8152602001612419602a9139610e52565b90505b610713828c83610e81565b5050505050505050505050565b600080610745836040518060600160405280602281526020016123f760229139610e52565b905061075133826110e9565b50600192915050565b6003602052600090815260409020546001600160a01b031681565b61077f3382611224565b50565b6005602052600090815260409020546001600160401b031681565b6001600160a01b03166000908152600260205260409020546001600160801b031690565b60004382106107e25760405162461bcd60e51b8152600401610666906120db565b6001600160a01b0383166000908152600560205260409020546001600160401b031680610813576000915050610409565b6001600160a01b03841660009081526004602090815260408083206001600160401b03600019860181168552925290912054168310610895576001600160a01b0384166000908152600460209081526040808320600019949094016001600160401b031683529290522054600160401b90046001600160801b03169050610409565b6001600160a01b03841660009081526004602090815260408083208380529091529020546001600160401b03168310156108d3576000915050610409565b600060001982015b816001600160401b0316816001600160401b031611156109a55760028282036001600160401b031604810361090e611664565b506001600160a01b03871660009081526004602090815260408083206001600160401b03858116855290835292819020815180830190925254928316808252600160401b9093046001600160801b0316918101919091529087141561097d576020015194506104099350505050565b80516001600160401b03168711156109975781935061099e565b6001820392505b50506108db565b506001600160a01b03851660009081526004602090815260408083206001600160401b03909416835292905220546001600160801b03600160401b9091041691505092915050565b60405161056f90611f55565b60076020526000908152604090205481565b60405180604001604052806003815260200162444d4760e81b81525081565b600080610a4f8360405180606001604052806026815260200161244360269139610e52565b9050610403338583610f3e565b6001600160a01b0381166000908152600560205260408120546001600160401b031680610a8a576000610557565b6001600160a01b038316600090815260046020908152604080832060001985016001600160401b03168452909152902054600160401b90046001600160801b03169392505050565b60405161056f90611f60565b60405161056f90611f4a565b6000604051610af890611f60565b604051908190038120610b1391899089908990602001611f95565b604051602081830303815290604052805190602001209050600060065482604051602001610b42929190611f0e565b604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051610b7f949392919061201f565b6020604051602081039080840390855afa158015610ba1573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610bd45760405162461bcd60e51b8152600401610666906120fb565b6001600160a01b03811660009081526007602052604090208054600181019091558814610c135760405162461bcd60e51b8152600401610666906120ab565b86421115610c335760405162461bcd60e51b81526004016106669061206b565b610c3d818a611224565b5050505b505050505050565b60046020908152600092835260408084209091529082529020546001600160401b03811690600160401b90046001600160801b031682565b6000604051610c8f90611f55565b604051908190038120610cac918a908a908a908a90602001611fd3565b604051602081830303815290604052805190602001209050600060065482604051602001610cdb929190611f0e565b604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051610d18949392919061201f565b6020604051602081039080840390855afa158015610d3a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610d6d5760405162461bcd60e51b81526004016106669061210b565b6001600160a01b03811660009081526007602052604090208054600181019091558814610dac5760405162461bcd60e51b81526004016106669061207b565b86421115610dcc5760405162461bcd60e51b81526004016106669061209b565b6000610df08a6040518060600160405280602b815260200161239f602b9139610e52565b9050610713828c83610f3e565b6001600160a01b0391821660009081526001602090815260408083209390941682529190915220546001600160801b031690565b6001600160a01b031660009081526007602052604090205490565b60065481565b600081600160801b8410610e795760405162461bcd60e51b8152600401610666919061203a565b509192915050565b6001600160a01b038381166000818152600160209081526040808320948716808452949091529081902080546001600160801b0319166001600160801b038616179055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ef2908590612129565b60405180910390a3505050565b6000836001600160801b0316836001600160801b031611158290610f365760405162461bcd60e51b8152600401610666919061203a565b505050900390565b6001600160a01b038316610f645760405162461bcd60e51b81526004016106669061204b565b6001600160a01b038216610f8a5760405162461bcd60e51b8152600401610666906120cb565b6001600160a01b038316600090815260026020908152604091829020548251606081019093526035808452610fd5936001600160801b03909216928592919061224d90830139610eff565b6001600160a01b03848116600090815260026020908152604080832080546001600160801b0319166001600160801b0396871617905592861682529082902054825160608101909352602f80845261103d94919091169285929091906122b5908301396112ae565b6001600160a01b038381166000818152600260205260409081902080546001600160801b0319166001600160801b0395909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110aa908590612129565b60405180910390a36001600160a01b038084166000908152600360205260408082205485841683529120546110e4929182169116836112ea565b505050565b6001600160a01b03821661110f5760405162461bcd60e51b8152600401610666906120bb565b6001600160a01b03821660009081526002602090815260409182902054825160608101909352602d80845261115a936001600160801b0390921692859291906123ca90830139610eff565b6001600160a01b03831660008181526002602052604080822080546001600160801b0319166001600160801b03959095169490941790935591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111c1908590612129565b60405180910390a36111ee600054826040518060600160405280603281526020016122e460329139610eff565b6001600160801b031660009081556001600160a01b0380841682526003602052604082205461122092911690836112ea565b5050565b6001600160a01b03808316600081815260036020818152604080842080546002845282862054949093528787166001600160a01b031984168117909155905191909516946001600160801b039092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46112a88284836112ea565b50505050565b6000838301826001600160801b0380871690831610156112e15760405162461bcd60e51b8152600401610666919061203a565b50949350505050565b816001600160a01b0316836001600160a01b03161415801561131557506000816001600160801b0316115b156110e4576001600160a01b038316156113d3576001600160a01b0383166000908152600560205260408120546001600160401b0316908161135857600061139a565b6001600160a01b038516600090815260046020908152604080832060001986016001600160401b03168452909152902054600160401b90046001600160801b03165b905060006113c1828560405180606001604052806027815260200161231660279139610eff565b90506113cf86848484611484565b5050505b6001600160a01b038216156110e4576001600160a01b0382166000908152600560205260408120546001600160401b03169081611411576000611453565b6001600160a01b038416600090815260046020908152604080832060001986016001600160401b03168452909152902054600160401b90046001600160801b03165b9050600061147a8285604051806060016040528060268152602001612379602691396112ae565b9050610c41858484845b60006114a8436040518060600160405280603381526020016122826033913961163d565b90506000846001600160401b03161180156114f757506001600160a01b03851660009081526004602090815260408083206001600160401b036000198901811685529252909120548282169116145b15611553576001600160a01b038516600090815260046020908152604080832060001988016001600160401b0316845290915290208054600160401b600160c01b031916600160401b6001600160801b038516021790556115f3565b6040805180820182526001600160401b0380841682526001600160801b0380861660208085019182526001600160a01b038b166000818152600483528781208c871682528352878120965187549451909516600160401b02600160401b600160c01b031995871667ffffffffffffffff19958616179590951694909417909555938252600590935292909220805460018801909316929091169190911790555b846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724848460405161162e929190612137565b60405180910390a25050505050565b600081600160401b8410610e795760405162461bcd60e51b8152600401610666919061203a565b604080518082019091526000808252602082015290565b803561040981612219565b80356104098161222d565b803561040981612236565b80356104098161223f565b6000602082840312156116b957600080fd5b60006116c5848461167b565b949350505050565b600080604083850312156116e057600080fd5b60006116ec858561167b565b92505060206116fd8582860161167b565b9150509250929050565b60008060006060848603121561171c57600080fd5b6000611728868661167b565b93505060206117398682870161167b565b925050604061174a86828701611686565b9150509250925092565b6000806040838503121561176757600080fd5b6000611773858561167b565b92505060206116fd85828601611686565b600080600080600080600060e0888a03121561179f57600080fd5b60006117ab8a8a61167b565b97505060206117bc8a828b01611686565b96505060406117cd8a828b01611686565b95505060606117de8a828b01611686565b94505060806117ef8a828b0161169c565b93505060a06118008a828b01611686565b92505060c06118118a828b01611686565b91505092959891949750929550565b60008060008060008060c0878903121561183957600080fd5b6000611845898961167b565b965050602061185689828a01611686565b955050604061186789828a01611686565b945050606061187889828a0161169c565b935050608061188989828a01611686565b92505060a061189a89828a01611686565b9150509295509295509295565b600080604083850312156118ba57600080fd5b60006118c6858561167b565b92505060206116fd85828601611691565b6000602082840312156118e957600080fd5b60006116c58484611686565b6118fe8161219b565b82525050565b6118fe816121a6565b6118fe816121ab565b6118fe611922826121ab565b6121ab565b600061193282612189565b61193c818561218d565b935061194c8185602086016121e3565b6119558161220f565b9093019392505050565b600061196c603b8361218d565b7f444d473a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e736665722066726f6d20746865207a65726f20616464726573730000000000602082015260400192915050565b60006119cb60208361218d565b7f444d473a3a617070726f766542795369673a20696e76616c6964206e6f6e6365815260200192915050565b6000611a0460258361218d565b7f444d473a3a64656c656761746542795369673a207369676e61747572652065788152641c1a5c995960da1b602082015260400192915050565b6000611a4b60218361218d565b7f444d473a3a7472616e7366657242795369673a20696e76616c6964206e6f6e638152606560f81b602082015260400192915050565b6000611a8e600283612196565b61190160f01b815260020192915050565b6000611aac60248361218d565b7f444d473a3a617070726f766542795369673a207369676e6174757265206578708152631a5c995960e21b602082015260400192915050565b6000611af2604783612196565b7f417070726f76652861646472657373207370656e6465722c75696e743235362081527f726177416d6f756e742c75696e74323536206e6f6e63652c75696e74323536206020820152666578706972792960c81b604082015260470192915050565b6000611b6160258361218d565b7f444d473a3a7472616e7366657242795369673a207369676e61747572652065788152641c1a5c995960da1b602082015260400192915050565b6000611ba860218361218d565b7f444d473a3a64656c656761746542795369673a20696e76616c6964206e6f6e638152606560f81b602082015260400192915050565b6000611beb60338361218d565b7f444d473a3a5f6275726e546f6b656e733a2063616e6e6f74206275726e2066728152726f6d20746865207a65726f206164647265737360681b602082015260400192915050565b6000611c40604383612196565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201526263742960e81b604082015260430192915050565b6000611cab60398361218d565b7f444d473a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e7366657220746f20746865207a65726f206164647265737300000000000000602082015260400192915050565b6000611d0a60268361218d565b7f444d473a3a6765745072696f72566f7465733a206e6f742079657420646574658152651c9b5a5b995960d21b602082015260400192915050565b6000611d5260248361218d565b7f444d473a3a617070726f766542795369673a20696e76616c6964207369676e618152637475726560e01b602082015260400192915050565b6000611d9860258361218d565b7f444d473a3a64656c656761746542795369673a20696e76616c6964207369676e815264617475726560d81b602082015260400192915050565b6000611ddf604a83612196565b7f5472616e73666572286164647265737320726563697069656e742c75696e743281527f353620726177416d6f756e742c75696e74323536206e6f6e63652c75696e74326020820152693536206578706972792960b01b6040820152604a0192915050565b6000611e51603a83612196565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020820152603a0192915050565b6000611eb060258361218d565b7f444d473a3a7472616e7366657242795369673a20696e76616c6964207369676e815264617475726560d81b602082015260400192915050565b6118fe816121ae565b6118fe816121d8565b6118fe816121c6565b6118fe816121d2565b6000611f1982611a81565b9150611f258285611916565b602082019150611f358284611916565b5060200192915050565b600061040982611ae5565b600061040982611c33565b600061040982611dd2565b600061040982611e44565b6020810161040982846118f5565b602081016104098284611904565b60208101610409828461190d565b60808101611fa3828761190d565b611fb060208301866118f5565b611fbd604083018561190d565b611fca606083018461190d565b95945050505050565b60a08101611fe1828861190d565b611fee60208301876118f5565b611ffb604083018661190d565b612008606083018561190d565b612015608083018461190d565b9695505050505050565b6080810161202d828761190d565b611fb06020830186611f05565b602080825281016105578184611927565b602080825281016104098161195f565b60208082528101610409816119be565b60208082528101610409816119f7565b6020808252810161040981611a3e565b6020808252810161040981611a9f565b6020808252810161040981611b54565b6020808252810161040981611b9b565b6020808252810161040981611bde565b6020808252810161040981611c9e565b6020808252810161040981611cfd565b6020808252810161040981611d45565b6020808252810161040981611d8b565b6020808252810161040981611ea3565b602081016104098284611eea565b602081016104098284611ef3565b604081016121458285611ef3565b6105576020830184611ef3565b602081016104098284611efc565b6040810161216e8285611efc565b6105576020830184611eea565b602081016104098284611f05565b5190565b90815260200190565b919050565b6000610409826121ba565b151590565b90565b6001600160801b031690565b6001600160a01b031690565b6001600160401b031690565b60ff1690565b6000610409826121ae565b60005b838110156121fe5781810151838201526020016121e6565b838111156112a85750506000910152565b601f01601f191690565b6122228161219b565b811461077f57600080fd5b612222816121ab565b612222816121c6565b612222816121d2565b469056fe444d473a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365444d473a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732036342062697473444d473a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773444d473a3a5f6275726e546f6b656e733a206275726e20616d6f756e74206578636565647320746f74616c20737570706c79444d473a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773444d473a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365444d473a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f7773444d473a3a7472616e7366657242795369673a20616d6f756e742065786365656473203132382062697473444d473a3a5f6275726e546f6b656e733a206275726e20616d6f756e7420657863656564732062616c616e6365444d473a3a6275726e3a20616d6f756e742065786365656473203132382062697473444d473a3a617070726f766542795369673a20616d6f756e742065786365656473203132382062697473444d473a3a7472616e736665723a20616d6f756e742065786365656473203132382062697473444d473a3a617070726f76653a20616d6f756e742065786365656473203132382062697473444d473a3a616c6c6f77616e6365733a20616d6f756e742065786365656473203132382062697473a365627a7a7231582078c3a566f49180424f193167c58aef986d7500d8b688e4c174ff50ac3034444e6c6578706572696d656e74616cf564736f6c634300050d0040

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000000f9dd46b0e1f77cec0f66c20b9a1f56cb34a4556

-----Decoded View---------------
Arg [0] : account (address): 0x0F9Dd46B0E1F77ceC0f66C20B9a1F56Cb34A4556

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000f9dd46b0e1f77cec0f66c20b9a1f56cb34a4556


Deployed Bytecode Sourcemap

4694:16224:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4694:16224:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4731:47;;;:::i;:::-;;;;;;;;;;;;;;;;8592:384;;;;;;;;;:::i;:::-;;;;;;;;4877:23;;;:::i;:::-;;;;;;;;10548:705;;;;;;;;;:::i;4833:35::-;;;:::i;:::-;;;;;;;;6451:128;;;:::i;14526:910::-;;;;;;;;;:::i;:::-;;10016:222;;;;;;;;;:::i;5215:44::-;;;;;;;;;:::i;:::-;;;;;;;;11401:102;;;;;;;;;:::i;5641:48::-;;;;;;;;;:::i;:::-;;;;;;;;9179:108;;;;;;;;;:::i;16291:1231::-;;;;;;;;;:::i;:::-;;;;;;;;6228:132;;;:::i;6660:38::-;;;;;;;;;:::i;4787:37::-;;;:::i;9551:252::-;;;;;;;;;:::i;15637:223::-;;;;;;;;;:::i;6018:118::-;;;:::i;5801:123::-;;;:::i;12045:659::-;;;;;;;;;:::i;5504:68::-;;;;;;;;;:::i;:::-;;;;;;;;;13210:805;;;;;;;;;:::i;7978:136::-;;;;;;;;;:::i;11511:100::-;;;;;;;;;:::i;5698:30::-;;;:::i;4731:47::-;;;;;;;;;;;;;;-1:-1:-1;;;4731:47:0;;;;:::o;8592:384::-;8660:4;8677:14;-1:-1:-1;;8706:9:0;:22;8702:189;;;-1:-1:-1;;;8702:189:0;;;8808:71;8828:9;8808:71;;;;;;;;;;;;;;;;;:19;:71::i;:::-;8799:80;;8702:189;8903:43;8918:10;8930:7;8939:6;8903:14;:43::i;:::-;8964:4;8957:11;;;8592:384;;;;;:::o;4877:23::-;;;;:::o;10548:705::-;-1:-1:-1;;;;;10713:15:0;;10630:4;10713:15;;;:10;:15;;;;;;;;10665:10;10713:24;;;;;;;;;;10765:74;;;;;;;;;;;;10665:10;;-1:-1:-1;;;;;10713:24:0;;;;10630:4;;10765:74;;10785:9;;10765:74;;;;;;;:19;:74::i;:::-;10748:91;;10867:3;-1:-1:-1;;;;;10856:14:0;:7;-1:-1:-1;;;;;10856:14:0;;;:50;;;;-1:-1:-1;;;;;;10874:32:0;;;;;10856:50;10852:326;;;10923:20;10946:108;10965:16;10983:6;10946:108;;;;;;;;;;;;;;;;;:18;:108::i;:::-;-1:-1:-1;;;;;11069:15:0;;;;;;;:10;:15;;;;;;;;:24;;;;;;;;;;;;;;:39;;-1:-1:-1;;;;;;11069:39:0;-1:-1:-1;;;;;11069:39:0;;;;;11130:36;11069:39;;-1:-1:-1;11069:24:0;;11130:36;;;;11069:39;;11130:36;;;;;;;;;;10852:326;;11190:33;11206:3;11211;11216:6;11190:15;:33::i;:::-;11241:4;11234:11;;;;;10548:705;;;;;;:::o;4833:35::-;4866:2;4833:35;:::o;6451:128::-;6495:84;;;;;;;;;;;;;;6451:128;:::o;14526:910::-;14655:18;6495:84;;;;;;;;;;;;;;;14686:64;;14716:7;;14725:9;;14736:5;;14743:6;;14686:64;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;14686:64:0;;;14676:75;;;;;;14655:96;;14762:14;14818:15;;14835:10;14789:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;14789:57:0;;;14779:68;;;;;;14762:85;;14858:17;14878:26;14888:6;14896:1;14899;14902;14878:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;14878:26:0;;-1:-1:-1;;14878:26:0;;;-1:-1:-1;;;;;;;14923:23:0;;14915:72;;;;-1:-1:-1;;;14915:72:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15015:17:0;;;;;;:6;:17;;;;;:19;;;;;;;;15006:28;;14998:73;;;;-1:-1:-1;;;14998:73:0;;;;;;;;;15097:6;15090:3;:13;;15082:62;;;;-1:-1:-1;;;15082:62:0;;;;;;;;;15157:14;-1:-1:-1;;15186:9:0;:22;15182:194;;;-1:-1:-1;;;15182:194:0;;;15288:76;15308:9;15288:76;;;;;;;;;;;;;;;;;:19;:76::i;:::-;15279:85;;15182:194;15386:42;15401:9;15412:7;15421:6;15386:14;:42::i;:::-;14526:910;;;;;;;;;;;:::o;10016:222::-;10064:4;10081:14;10098:68;10118:9;10098:68;;;;;;;;;;;;;;;;;:19;:68::i;:::-;10081:85;;10177:31;10189:10;10201:6;10177:11;:31::i;:::-;-1:-1:-1;10226:4:0;;10016:222;-1:-1:-1;;10016:222:0:o;5215:44::-;;;;;;;;;;;;-1:-1:-1;;;;;5215:44:0;;:::o;11401:102::-;11463:32;11473:10;11485:9;11463;:32::i;:::-;11401:102;:::o;5641:48::-;;;;;;;;;;;;-1:-1:-1;;;;;5641:48:0;;:::o;9179:108::-;-1:-1:-1;;;;;9262:17:0;9238:4;9262:17;;;:8;:17;;;;;;-1:-1:-1;;;;;9262:17:0;;9179:108::o;16291:1231::-;16370:7;16412:12;16398:11;:26;16390:77;;;;-1:-1:-1;;;16390:77:0;;;;;;;;;-1:-1:-1;;;;;16502:23:0;;16480:19;16502:23;;;:14;:23;;;;;;-1:-1:-1;;;;;16502:23:0;16540:17;16536:58;;16581:1;16574:8;;;;;16536:58;-1:-1:-1;;;;;16654:20:0;;;;;;:11;:20;;;;;;;;-1:-1:-1;;;;;;;16675:16:0;;16654:38;;;;;;;;;:48;;:63;-1:-1:-1;16650:147:0;;-1:-1:-1;;;;;16741:20:0;;;;;;:11;:20;;;;;;;;-1:-1:-1;;16762:16:0;;;;-1:-1:-1;;;;;16741:38:0;;;;;;;:44;-1:-1:-1;;;16741:44:0;;-1:-1:-1;;;;;16741:44:0;;-1:-1:-1;16734:51:0;;16650:147;-1:-1:-1;;;;;16858:20:0;;;;;;:11;:20;;;;;;;;:23;;;;;;;;:33;-1:-1:-1;;;;;16858:33:0;:47;-1:-1:-1;16854:88:0;;;16929:1;16922:8;;;;;16854:88;16954:12;-1:-1:-1;;16996:16:0;;17023:441;17038:5;-1:-1:-1;;;;;17030:13:0;:5;-1:-1:-1;;;;;17030:13:0;;17023:441;;;17102:1;17085:13;;;-1:-1:-1;;;;;17084:19:0;;17076:27;;17158:20;;:::i;:::-;-1:-1:-1;;;;;;17181:20:0;;;;;;:11;:20;;;;;;;;-1:-1:-1;;;;;17181:28:0;;;;;;;;;;;;17158:51;;;;;;;;;;;;;;;-1:-1:-1;;;17158:51:0;;;-1:-1:-1;;;;;17158:51:0;;;;;;;;;17228:27;;17224:229;;;17283:8;;;;-1:-1:-1;17276:15:0;;-1:-1:-1;;;;17276:15:0;17224:229;17317:12;;-1:-1:-1;;;;;17317:26:0;;-1:-1:-1;17313:140:0;;;17372:6;17364:14;;17313:140;;;17436:1;17427:6;:10;17419:18;;17313:140;17023:441;;;;;-1:-1:-1;;;;;;17481:20:0;;;;;;:11;:20;;;;;;;;-1:-1:-1;;;;;17481:27:0;;;;;;;;;:33;-1:-1:-1;;;;;;;;17481:33:0;;;;;-1:-1:-1;;16291:1231:0;;;;:::o;6228:132::-;6273:87;;;;;;6660:38;;;;;;;;;;;;;:::o;4787:37::-;;;;;;;;;;;;;;-1:-1:-1;;;4787:37:0;;;;:::o;9551:252::-;9616:4;9633:14;9650:72;9670:9;9650:72;;;;;;;;;;;;;;;;;:19;:72::i;:::-;9633:89;;9733:40;9749:10;9761:3;9766:6;9733:15;:40::i;15637:223::-;-1:-1:-1;;;;;15744:23:0;;15702:7;15744:23;;;:14;:23;;;;;;-1:-1:-1;;;;;15744:23:0;15785:16;:67;;15851:1;15785:67;;;-1:-1:-1;;;;;15804:20:0;;;;;;:11;:20;;;;;;;;-1:-1:-1;;15825:16:0;;-1:-1:-1;;;;;15804:38:0;;;;;;;;:44;-1:-1:-1;;;15804:44:0;;-1:-1:-1;;;;;15804:44:0;15778:74;15637:223;-1:-1:-1;;;15637:223:0:o;6018:118::-;6065:71;;;;;;5801:123;5844:80;;;;;;12045:659;12161:18;6065:71;;;;;;;;;;;;;;;12192:58;;12225:9;;12236:5;;12243:6;;12192:58;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12192:58:0;;;12182:69;;;;;;12161:90;;12262:14;12318:15;;12335:10;12289:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12289:57:0;;;12279:68;;;;;;12262:85;;12358:17;12378:26;12388:6;12396:1;12399;12402;12378:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;12378:26:0;;-1:-1:-1;;12378:26:0;;;-1:-1:-1;;;;;;;12423:23:0;;12415:73;;;;-1:-1:-1;;;12415:73:0;;;;;;;;;-1:-1:-1;;;;;12516:17:0;;;;;;:6;:17;;;;;:19;;;;;;;;12507:28;;12499:74;;;;-1:-1:-1;;;12499:74:0;;;;;;;;;12599:6;12592:3;:13;;12584:63;;;;-1:-1:-1;;;12584:63:0;;;;;;;;;12665:31;12675:9;12686;12665;:31::i;:::-;12658:38;;;12045:659;;;;;;;:::o;5504:68::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5504:68:0;;;-1:-1:-1;;;5504:68:0;;-1:-1:-1;;;;;5504:68:0;;:::o;13210:805::-;13342:18;6273:87;;;;;;;;;;;;;;;13373:67;;13404:9;;13415;;13426:5;;13433:6;;13373:67;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;13373:67:0;;;13363:78;;;;;;13342:99;;13452:14;13508:15;;13525:10;13479:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;13479:57:0;;;13469:68;;;;;;13452:85;;13548:17;13568:26;13578:6;13586:1;13589;13592;13568:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;13568:26:0;;-1:-1:-1;;13568:26:0;;;-1:-1:-1;;;;;;;13613:23:0;;13605:73;;;;-1:-1:-1;;;13605:73:0;;;;;;;;;-1:-1:-1;;;;;13706:17:0;;;;;;:6;:17;;;;;:19;;;;;;;;13697:28;;13689:74;;;;-1:-1:-1;;;13689:74:0;;;;;;;;;13789:6;13782:3;:13;;13774:63;;;;-1:-1:-1;;;13774:63:0;;;;;;;;;13850:14;13867:77;13887:9;13867:77;;;;;;;;;;;;;;;;;:19;:77::i;:::-;13850:94;;13962:45;13978:9;13989;14000:6;13962:15;:45::i;7978:136::-;-1:-1:-1;;;;;8078:19:0;;;8054:4;8078:19;;;:10;:19;;;;;;;;:28;;;;;;;;;;;;-1:-1:-1;;;;;8078:28:0;;7978:136::o;11511:100::-;-1:-1:-1;;;;;11589:14:0;11565:4;11589:14;;;:6;:14;;;;;;;11511:100::o;5698:30::-;;;;:::o;3160:167::-;3236:7;3278:12;-1:-1:-1;;;3264:12:0;;3256:35;;;;-1:-1:-1;;;3256:35:0;;;;;;;;;;-1:-1:-1;3317:1:0;;3160:167;-1:-1:-1;;3160:167:0:o;18559:185::-;-1:-1:-1;;;;;18651:17:0;;;;;;;:10;:17;;;;;;;;:26;;;;;;;;;;;;;;:35;;-1:-1:-1;;;;;;18651:35:0;-1:-1:-1;;;;;18651:35:0;;;;;18704:32;;;;;18651:35;;18704:32;;;;;;;;;;18559:185;;;:::o;3536:169::-;3625:7;3658:1;-1:-1:-1;;;;;3653:6:0;:1;-1:-1:-1;;;;;3653:6:0;;;3661:12;3645:29;;;;;-1:-1:-1;;;3645:29:0;;;;;;;;;;-1:-1:-1;;;3692:5:0;;;3536:169::o;17914:637::-;-1:-1:-1;;;;;18009:17:0;;18001:89;;;;-1:-1:-1;;;18001:89:0;;;;;;;;;-1:-1:-1;;;;;18109:17:0;;18101:87;;;;-1:-1:-1;;;18101:87:0;;;;;;;;;-1:-1:-1;;;;;18236:13:0;;;;;;:8;:13;;;;;;;;;;18217:98;;;;;;;;;;;;;;-1:-1:-1;;;;;18236:13:0;;;;18251:6;;18217:98;;;;;;;:18;:98::i;:::-;-1:-1:-1;;;;;18201:13:0;;;;;;;:8;:13;;;;;;;;:114;;-1:-1:-1;;;;;;18201:114:0;-1:-1:-1;;;;;18201:114:0;;;;;;18361:13;;;;;;;;;;18342:92;;;;;;;;;;;;;;18361:13;;;;;18376:6;;18342:92;;;;;;;;:18;:92::i;:::-;-1:-1:-1;;;;;18326:13:0;;;;;;;:8;:13;;;;;;;:108;;-1:-1:-1;;;;;;18326:108:0;-1:-1:-1;;;;;18326:108:0;;;;;;;;;;;18450:26;;;;;;;;;;18469:6;;18450:26;;;;;;;;;;-1:-1:-1;;;;;18504:14:0;;;;;;;:9;:14;;;;;;;18520;;;;;;;;18489:54;;18504:14;;;;18520;18536:6;18489:14;:54::i;:::-;17914:637;;;:::o;18752:519::-;-1:-1:-1;;;;;18830:17:0;;18822:81;;;;-1:-1:-1;;;18822:81:0;;;;;;;;;-1:-1:-1;;;;;18951:13:0;;;;;;:8;:13;;;;;;;;;;18932:90;;;;;;;;;;;;;;-1:-1:-1;;;;;18951:13:0;;;;18966:6;;18932:90;;;;;;;:18;:90::i;:::-;-1:-1:-1;;;;;18916:13:0;;;;;;:8;:13;;;;;;:106;;-1:-1:-1;;;;;;18916:106:0;-1:-1:-1;;;;;18916:106:0;;;;;;;;;;;19038:33;;;;;;19064:6;;19038:33;;;;;;;;;;19098:102;19125:11;;19139:6;19098:102;;;;;;;;;;;;;;;;;:18;:102::i;:::-;-1:-1:-1;;;;;19084:116:0;:11;:116;;;-1:-1:-1;;;;;19228:14:0;;;;;:9;:14;;;;;;19213:50;;19228:14;;;19256:6;19213:14;:50::i;:::-;18752:519;;:::o;17530:376::-;-1:-1:-1;;;;;17633:20:0;;;17607:23;17633:20;;;:9;:20;;;;;;;;;;17691:8;:19;;;;;;17721:20;;;;:32;;;-1:-1:-1;;;;;;17721:32:0;;;;;;;17771:54;;17633:20;;;;;-1:-1:-1;;;;;17691:19:0;;;;17721:32;;17633:20;;;17771:54;;17607:23;17771:54;17838:60;17853:15;17870:9;17881:16;17838:14;:60::i;:::-;17530:376;;;;:::o;3335:193::-;3424:7;3456:5;;;3488:12;-1:-1:-1;;;;;3480:6:0;;;;;;;;3472:29;;;;-1:-1:-1;;;3472:29:0;;;;;;;;;;-1:-1:-1;3519:1:0;3335:193;-1:-1:-1;;;;3335:193:0:o;19279:968::-;19385:6;-1:-1:-1;;;;;19375:16:0;:6;-1:-1:-1;;;;;19375:16:0;;;:30;;;;;19404:1;19395:6;-1:-1:-1;;;;;19395:10:0;;19375:30;19371:869;;;-1:-1:-1;;;;;19426:20:0;;;19422:396;;-1:-1:-1;;;;;19486:22:0;;19467:16;19486:22;;;:14;:22;;;;;;-1:-1:-1;;;;;19486:22:0;;19547:13;:60;;19606:1;19547:60;;;-1:-1:-1;;;;;19563:19:0;;;;;;:11;:19;;;;;;;;-1:-1:-1;;19583:13:0;;-1:-1:-1;;;;;19563:34:0;;;;;;;;:40;-1:-1:-1;;;19563:40:0;;-1:-1:-1;;;;;19563:40:0;19547:60;19527:80;;19626:17;19646:80;19665:9;19676:6;19646:80;;;;;;;;;;;;;;;;;:18;:80::i;:::-;19626:100;;19745:57;19762:6;19770:9;19781;19792;19745:16;:57::i;:::-;19422:396;;;;-1:-1:-1;;;;;19838:20:0;;;19834:395;;-1:-1:-1;;;;;19898:22:0;;19879:16;19898:22;;;:14;:22;;;;;;-1:-1:-1;;;;;19898:22:0;;19959:13;:60;;20018:1;19959:60;;;-1:-1:-1;;;;;19975:19:0;;;;;;:11;:19;;;;;;;;-1:-1:-1;;19995:13:0;;-1:-1:-1;;;;;19975:34:0;;;;;;;;:40;-1:-1:-1;;;19975:40:0;;-1:-1:-1;;;;;19975:40:0;19959:60;19939:80;;20038:17;20058:79;20077:9;20088:6;20058:79;;;;;;;;;;;;;;;;;:18;:79::i;:::-;20038:99;;20156:57;20173:6;20181:9;20192;20203;20255:658;20377:18;20398:87;20417:12;20398:87;;;;;;;;;;;;;;;;;:18;:87::i;:::-;20377:108;;20517:1;20502:12;-1:-1:-1;;;;;20502:16:0;;:85;;;;-1:-1:-1;;;;;;20522:22:0;;;;;;:11;:22;;;;;;;;-1:-1:-1;;;;;;;20545:16:0;;20522:40;;;;;;;;;:50;:65;;;:50;;:65;20502:85;20498:339;;;-1:-1:-1;;;;;20604:22:0;;;;;;:11;:22;;;;;;;;-1:-1:-1;;20627:16:0;;-1:-1:-1;;;;;20604:40:0;;;;;;;;:57;;-1:-1:-1;;;;;;;;20604:57:0;-1:-1:-1;;;;;;;;20604:57:0;;;;;;20498:339;;;20733:33;;;;;;;;-1:-1:-1;;;;;20733:33:0;;;;;-1:-1:-1;;;;;20733:33:0;;;;;;;;;;-1:-1:-1;;;;;20694:22:0;;-1:-1:-1;20694:22:0;;;:11;:22;;;;;:36;;;;;;;;;;:72;;;;;;;;;-1:-1:-1;;;20694:72:0;-1:-1:-1;;;;;;;;20694:72:0;;;-1:-1:-1;;20694:72:0;;;;;;;;;;;;;;;20781:25;;;:14;:25;;;;;;;:44;;20694:72;20809:16;;20781:44;;;;;;;;;;;;;20498:339;20875:9;-1:-1:-1;;;;;20854:51:0;;20886:8;20896;20854:51;;;;;;;;;;;;;;;;20255:658;;;;;:::o;2989:163::-;3064:6;3104:12;-1:-1:-1;;;3091:11:0;;3083:34;;;;-1:-1:-1;;;3083:34:0;;;;;;;;;4694:16224;;;;;;;;;;-1:-1:-1;4694:16224:0;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:130;209:20;;234:33;209:20;234:33;;416:128;482:20;;507:32;482:20;507:32;;551:126;616:20;;641:31;616:20;641:31;;684:241;;788:2;776:9;767:7;763:23;759:32;756:2;;;804:1;801;794:12;756:2;839:1;856:53;901:7;881:9;856:53;;;846:63;750:175;-1:-1;;;;750:175;932:366;;;1053:2;1041:9;1032:7;1028:23;1024:32;1021:2;;;1069:1;1066;1059:12;1021:2;1104:1;1121:53;1166:7;1146:9;1121:53;;;1111:63;;1083:97;1211:2;1229:53;1274:7;1265:6;1254:9;1250:22;1229:53;;;1219:63;;1190:98;1015:283;;;;;;1305:491;;;;1443:2;1431:9;1422:7;1418:23;1414:32;1411:2;;;1459:1;1456;1449:12;1411:2;1494:1;1511:53;1556:7;1536:9;1511:53;;;1501:63;;1473:97;1601:2;1619:53;1664:7;1655:6;1644:9;1640:22;1619:53;;;1609:63;;1580:98;1709:2;1727:53;1772:7;1763:6;1752:9;1748:22;1727:53;;;1717:63;;1688:98;1405:391;;;;;;1803:366;;;1924:2;1912:9;1903:7;1899:23;1895:32;1892:2;;;1940:1;1937;1930:12;1892:2;1975:1;1992:53;2037:7;2017:9;1992:53;;;1982:63;;1954:97;2082:2;2100:53;2145:7;2136:6;2125:9;2121:22;2100:53;;2176:991;;;;;;;;2380:3;2368:9;2359:7;2355:23;2351:33;2348:2;;;2397:1;2394;2387:12;2348:2;2432:1;2449:53;2494:7;2474:9;2449:53;;;2439:63;;2411:97;2539:2;2557:53;2602:7;2593:6;2582:9;2578:22;2557:53;;;2547:63;;2518:98;2647:2;2665:53;2710:7;2701:6;2690:9;2686:22;2665:53;;;2655:63;;2626:98;2755:2;2773:53;2818:7;2809:6;2798:9;2794:22;2773:53;;;2763:63;;2734:98;2863:3;2882:51;2925:7;2916:6;2905:9;2901:22;2882:51;;;2872:61;;2842:97;2970:3;2989:53;3034:7;3025:6;3014:9;3010:22;2989:53;;;2979:63;;2949:99;3079:3;3098:53;3143:7;3134:6;3123:9;3119:22;3098:53;;;3088:63;;3058:99;2342:825;;;;;;;;;;;3174:865;;;;;;;3361:3;3349:9;3340:7;3336:23;3332:33;3329:2;;;3378:1;3375;3368:12;3329:2;3413:1;3430:53;3475:7;3455:9;3430:53;;;3420:63;;3392:97;3520:2;3538:53;3583:7;3574:6;3563:9;3559:22;3538:53;;;3528:63;;3499:98;3628:2;3646:53;3691:7;3682:6;3671:9;3667:22;3646:53;;;3636:63;;3607:98;3736:2;3754:51;3797:7;3788:6;3777:9;3773:22;3754:51;;;3744:61;;3715:96;3842:3;3861:53;3906:7;3897:6;3886:9;3882:22;3861:53;;;3851:63;;3821:99;3951:3;3970:53;4015:7;4006:6;3995:9;3991:22;3970:53;;;3960:63;;3930:99;3323:716;;;;;;;;;4046:364;;;4166:2;4154:9;4145:7;4141:23;4137:32;4134:2;;;4182:1;4179;4172:12;4134:2;4217:1;4234:53;4279:7;4259:9;4234:53;;;4224:63;;4196:97;4324:2;4342:52;4386:7;4377:6;4366:9;4362:22;4342:52;;4417:241;;4521:2;4509:9;4500:7;4496:23;4492:32;4489:2;;;4537:1;4534;4527:12;4489:2;4572:1;4589:53;4634:7;4614:9;4589:53;;4665:113;4748:24;4766:5;4748:24;;;4743:3;4736:37;4730:48;;;4785:104;4862:21;4877:5;4862:21;;4896:113;4979:24;4997:5;4979:24;;5016:152;5117:45;5137:24;5155:5;5137:24;;;5117:45;;5175:347;;5287:39;5320:5;5287:39;;;5338:71;5402:6;5397:3;5338:71;;;5331:78;;5414:52;5459:6;5454:3;5447:4;5440:5;5436:16;5414:52;;;5487:29;5509:6;5487:29;;;5478:39;;;;5267:255;-1:-1;;;5267:255;5876:465;;6036:67;6100:2;6095:3;6036:67;;;6136:66;6116:87;;6237:66;6232:2;6223:12;;6216:88;6332:2;6323:12;;6022:319;-1:-1;;6022:319;6350:364;;6510:67;6574:2;6569:3;6510:67;;;6610:66;6590:87;;6705:2;6696:12;;6496:218;-1:-1;;6496:218;6723:465;;6883:67;6947:2;6942:3;6883:67;;;6983:66;6963:87;;-1:-1;;;7079:2;7070:12;;7063:88;7179:2;7170:12;;6869:319;-1:-1;;6869:319;7197:465;;7357:67;7421:2;7416:3;7357:67;;;7457:66;7437:87;;-1:-1;;;7553:2;7544:12;;7537:88;7653:2;7644:12;;7343:319;-1:-1;;7343:319;7671:398;;7849:84;7931:1;7926:3;7849:84;;;-1:-1;;;7946:87;;8061:1;8052:11;;7835:234;-1:-1;;7835:234;8078:465;;8238:67;8302:2;8297:3;8238:67;;;8338:66;8318:87;;-1:-1;;;8434:2;8425:12;;8418:88;8534:2;8525:12;;8224:319;-1:-1;;8224:319;8552:602;;8730:85;8812:2;8807:3;8730:85;;;8848:66;8828:87;;8949:66;8944:2;8935:12;;8928:88;-1:-1;;;9045:2;9036:12;;9029:88;9145:2;9136:12;;8716:438;-1:-1;;8716:438;9163:465;;9323:67;9387:2;9382:3;9323:67;;;9423:66;9403:87;;-1:-1;;;9519:2;9510:12;;9503:88;9619:2;9610:12;;9309:319;-1:-1;;9309:319;9637:465;;9797:67;9861:2;9856:3;9797:67;;;9897:66;9877:87;;-1:-1;;;9993:2;9984:12;;9977:88;10093:2;10084:12;;9783:319;-1:-1;;9783:319;10111:465;;10271:67;10335:2;10330:3;10271:67;;;10371:66;10351:87;;-1:-1;;;10467:2;10458:12;;10451:88;10567:2;10558:12;;10257:319;-1:-1;;10257:319;10585:602;;10763:85;10845:2;10840:3;10763:85;;;10881:66;10861:87;;10982:66;10977:2;10968:12;;10961:88;-1:-1;;;11078:2;11069:12;;11062:88;11178:2;11169:12;;10749:438;-1:-1;;10749:438;11196:465;;11356:67;11420:2;11415:3;11356:67;;;11456:66;11436:87;;11557:66;11552:2;11543:12;;11536:88;11652:2;11643:12;;11342:319;-1:-1;;11342:319;11670:465;;11830:67;11894:2;11889:3;11830:67;;;11930:66;11910:87;;-1:-1;;;12026:2;12017:12;;12010:88;12126:2;12117:12;;11816:319;-1:-1;;11816:319;12144:465;;12304:67;12368:2;12363:3;12304:67;;;12404:66;12384:87;;-1:-1;;;12500:2;12491:12;;12484:88;12600:2;12591:12;;12290:319;-1:-1;;12290:319;12618:465;;12778:67;12842:2;12837:3;12778:67;;;12878:66;12858:87;;-1:-1;;;12974:2;12965:12;;12958:88;13074:2;13065:12;;12764:319;-1:-1;;12764:319;13092:602;;13270:85;13352:2;13347:3;13270:85;;;13388:66;13368:87;;13489:66;13484:2;13475:12;;13468:88;-1:-1;;;13585:2;13576:12;;13569:88;13685:2;13676:12;;13256:438;-1:-1;;13256:438;13703:501;;13881:85;13963:2;13958:3;13881:85;;;13999:66;13979:87;;14100:66;14095:2;14086:12;;14079:88;14195:2;14186:12;;13867:337;-1:-1;;13867:337;14213:465;;14373:67;14437:2;14432:3;14373:67;;;14473:66;14453:87;;-1:-1;;;14569:2;14560:12;;14553:88;14669:2;14660:12;;14359:319;-1:-1;;14359:319;14686:113;14769:24;14787:5;14769:24;;14806:126;14889:37;14920:5;14889:37;;15059:110;15140:23;15157:5;15140:23;;15176:107;15255:22;15271:5;15255:22;;15290:650;;15545:148;15689:3;15545:148;;;15538:155;;15704:75;15775:3;15766:6;15704:75;;;15801:2;15796:3;15792:12;15785:19;;15815:75;15886:3;15877:6;15815:75;;;-1:-1;15912:2;15903:12;;15526:414;-1:-1;;15526:414;15947:372;;16146:148;16290:3;16146:148;;16326:372;;16525:148;16669:3;16525:148;;16705:372;;16904:148;17048:3;16904:148;;17084:372;;17283:148;17427:3;17283:148;;17463:213;17581:2;17566:18;;17595:71;17570:9;17639:6;17595:71;;17683:201;17795:2;17780:18;;17809:65;17784:9;17847:6;17809:65;;17891:213;18009:2;17994:18;;18023:71;17998:9;18067:6;18023:71;;18111:547;18313:3;18298:19;;18328:71;18302:9;18372:6;18328:71;;;18410:72;18478:2;18467:9;18463:18;18454:6;18410:72;;;18493;18561:2;18550:9;18546:18;18537:6;18493:72;;;18576;18644:2;18633:9;18629:18;18620:6;18576:72;;;18284:374;;;;;;;;18665:659;18895:3;18880:19;;18910:71;18884:9;18954:6;18910:71;;;18992:72;19060:2;19049:9;19045:18;19036:6;18992:72;;;19075;19143:2;19132:9;19128:18;19119:6;19075:72;;;19158;19226:2;19215:9;19211:18;19202:6;19158:72;;;19241:73;19309:3;19298:9;19294:19;19285:6;19241:73;;;18866:458;;;;;;;;;19331:539;19529:3;19514:19;;19544:71;19518:9;19588:6;19544:71;;;19626:68;19690:2;19679:9;19675:18;19666:6;19626:68;;19877:293;20011:2;20025:47;;;19996:18;;20086:74;19996:18;20146:6;20086:74;;20485:407;20676:2;20690:47;;;20661:18;;20751:131;20661:18;20751:131;;20899:407;21090:2;21104:47;;;21075:18;;21165:131;21075:18;21165:131;;21313:407;21504:2;21518:47;;;21489:18;;21579:131;21489:18;21579:131;;21727:407;21918:2;21932:47;;;21903:18;;21993:131;21903:18;21993:131;;22141:407;22332:2;22346:47;;;22317:18;;22407:131;22317:18;22407:131;;22555:407;22746:2;22760:47;;;22731:18;;22821:131;22731:18;22821:131;;22969:407;23160:2;23174:47;;;23145:18;;23235:131;23145:18;23235:131;;23383:407;23574:2;23588:47;;;23559:18;;23649:131;23559:18;23649:131;;23797:407;23988:2;24002:47;;;23973:18;;24063:131;23973:18;24063:131;;24211:407;24402:2;24416:47;;;24387:18;;24477:131;24387:18;24477:131;;24625:407;24816:2;24830:47;;;24801:18;;24891:131;24801:18;24891:131;;25039:407;25230:2;25244:47;;;25215:18;;25305:131;25215:18;25305:131;;25453:407;25644:2;25658:47;;;25629:18;;25719:131;25629:18;25719:131;;25867:213;25985:2;25970:18;;25999:71;25974:9;26043:6;25999:71;;26087:213;26205:2;26190:18;;26219:71;26194:9;26263:6;26219:71;;26307:324;26453:2;26438:18;;26467:71;26442:9;26511:6;26467:71;;;26549:72;26617:2;26606:9;26602:18;26593:6;26549:72;;26858:209;26974:2;26959:18;;26988:69;26963:9;27030:6;26988:69;;27074:320;27218:2;27203:18;;27232:69;27207:9;27274:6;27232:69;;;27312:72;27380:2;27369:9;27365:18;27356:6;27312:72;;27401:205;27515:2;27500:18;;27529:67;27504:9;27569:6;27529:67;;27613:118;27697:12;;27668:63;27868:163;27971:19;;;28020:4;28011:14;;27964:67;28040:145;28176:3;28154:31;-1:-1;28154:31;28193:91;;28255:24;28273:5;28255:24;;28291:85;28357:13;28350:21;;28333:43;28383:72;28445:5;28428:27;28462:113;-1:-1;;;;;28524:46;;28507:68;28582:121;-1:-1;;;;;28644:54;;28627:76;28789:96;-1:-1;;;;;28850:30;;28833:52;28892:81;28963:4;28952:16;;28935:38;28980:108;;29059:24;29077:5;29059:24;;29096:268;29161:1;29168:101;29182:6;29179:1;29176:13;29168:101;;;29249:11;;;29243:18;29230:11;;;29223:39;29204:2;29197:10;29168:101;;;29284:6;29281:1;29278:13;29275:2;;;-1:-1;;29349:1;29331:16;;29324:27;29145:219;29453:97;29541:2;29521:14;-1:-1;;29517:28;;29501:49;29558:117;29627:24;29645:5;29627:24;;;29620:5;29617:35;29607:2;;29666:1;29663;29656:12;29682:117;29751:24;29769:5;29751:24;;29930:115;29998:23;30015:5;29998:23;;30052:113;30119:22;30135:5;30119:22;;30093:72;3917:9:0;3807:153;:::o

Swarm Source

bzzr://78c3a566f49180424f193167c58aef986d7500d8b688e4c174ff50ac3034444e
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.