ETH Price: $2,631.74 (+0.11%)
Gas: 2 Gwei

Token

DISD (DISD)
 

Overview

Max Total Supply

50,547,190,968,649.19 DISD

Holders

76

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,500,000,000 DISD

Value
$0.00
0x6306a2d99fdeebf725e7d60d73e0eb4a8ff39584
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:
DisDAO

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 2 of 9: DisDAO.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

import "./ERC20.sol";
import "./Math.sol";
import "./EIP712.sol";
import "./ECDSA.sol";

contract DisDAO is ERC20, EIP712 {
    uint256 public constant MAX_SUPPLY = uint248(1e14 ether);
    uint256 public constant MAX_AMOUNT = uint248(10400000000 ether);

    // 30 days
    uint256 public constant LOCK_TIME = 2592000;
    uint256 public constant END_AIRDROP = 1646092800;

    // for DAO
    uint256 public constant AMOUNT_DAO = MAX_SUPPLY / 100 * 25;
    address public constant ADDR_DAO = 0xE450fe0f9DeAad5B1cB8fC691d95Ce1f723e0ced;

    // for team, lock 2.5 year, unlock 1/30 per month
    uint256 public constant AMOUNT_STAKING = MAX_SUPPLY / 100 * 10;
    address public constant ADDR_STAKING = 0x1fF3A2Bf533ABd1F863B5aE5f601554068A5818F;
    uint256 public constant AMOUNT_UNLOCKED_MONTH = AMOUNT_STAKING / 30;

    // for liquidity providers
    uint256 public constant AMOUNT_LP = MAX_SUPPLY / 100 * 14;
    address public constant ADDR_LP = 0x5bC4e9F6fEeE3D381803AD70849F5928262d3C66;

    // for init liquidity providers
    uint256 public constant AMOUNT_ILP = MAX_SUPPLY / 100 * 1;
    address public constant ADDR_ILP = 0xb1A77965B8DAe65E21001E528043A21607265be1;

    // for airdrop
    uint256 public constant AMOUNT_AIRDROP = MAX_SUPPLY - (AMOUNT_DAO + AMOUNT_STAKING + AMOUNT_LP + AMOUNT_ILP);

    uint256 public START_TIME = 0;
    string constant public APPROVE_MSG = "approve(address account, uint256 amount)";
    address public immutable signer;

    constructor(string memory _name, string memory _symbol, address _signer) ERC20(_name, _symbol) EIP712("DisDAO", "1.0") {
        _mint(ADDR_DAO, AMOUNT_DAO);
        _mint(ADDR_STAKING, AMOUNT_STAKING);
        _mint(ADDR_LP, AMOUNT_LP);
        _mint(ADDR_ILP, AMOUNT_ILP);
        _totalSupply = AMOUNT_DAO + AMOUNT_STAKING + AMOUNT_LP + AMOUNT_ILP;
        signer = _signer;
        START_TIME = block.timestamp;
    }


    function claim(uint256 amount, uint8 v, bytes32 r, bytes32 s) external {
        require(block.timestamp < END_AIRDROP, "AirDrop Expired");
        uint256 total = _totalSupply + amount;
        require(total <= MAX_SUPPLY, "Exceed maximum supply");
        require(amount <= MAX_AMOUNT, "Exceed maximum amount");
        require(minted(msg.sender) == 0, "Already Claimed");
        bytes32 digest = keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32",
                                   keccak256(abi.encode(APPROVE_MSG, msg.sender, amount))));
        require(ecrecover(digest, v, r, s) == signer, "Invalid signer");
        _totalSupply = total;
        _mint(msg.sender, amount);

    }

    function _checkSenderLock(uint256 amount) internal override view {
        if(msg.sender == ADDR_STAKING){
            uint256 passed = Math.div(block.timestamp - START_TIME, LOCK_TIME);
            if(passed <= 60){
                uint256 locked_amount = AMOUNT_UNLOCKED_MONTH * (30 - passed);
                uint256 least_amount = locked_amount + amount;
                require(balanceOf(ADDR_STAKING) >= least_amount, "Transfer Locked");
            }
        }
        if(msg.sender == ADDR_DAO || msg.sender == ADDR_LP){
                require(block.timestamp > END_AIRDROP, "Transfer Locked");
        }
    }
}

File 1 of 9: Context.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

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


File 3 of 9: ECDSA.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/cryptography/ECDSA.sol)

pragma solidity ^0.8.0;

import "./Strings.sol";

/**
 * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.
 *
 * These functions can be used to verify that a message was signed by the holder
 * of the private keys of a given address.
 */
library ECDSA {
    enum RecoverError {
        NoError,
        InvalidSignature,
        InvalidSignatureLength,
        InvalidSignatureS,
        InvalidSignatureV
    }

    function _throwError(RecoverError error) private pure {
        if (error == RecoverError.NoError) {
            return; // no error: do nothing
        } else if (error == RecoverError.InvalidSignature) {
            revert("ECDSA: invalid signature");
        } else if (error == RecoverError.InvalidSignatureLength) {
            revert("ECDSA: invalid signature length");
        } else if (error == RecoverError.InvalidSignatureS) {
            revert("ECDSA: invalid signature 's' value");
        } else if (error == RecoverError.InvalidSignatureV) {
            revert("ECDSA: invalid signature 'v' value");
        }
    }

    /**
     * @dev Returns the address that signed a hashed message (`hash`) with
     * `signature` or error string. This address can then be used for verification purposes.
     *
     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:
     * this function rejects them by requiring the `s` value to be in the lower
     * half order, and the `v` value to be either 27 or 28.
     *
     * IMPORTANT: `hash` _must_ be the result of a hash operation for the
     * verification to be secure: it is possible to craft signatures that
     * recover to arbitrary addresses for non-hashed data. A safe way to ensure
     * this is by receiving a hash of the original message (which may otherwise
     * be too long), and then calling {toEthSignedMessageHash} on it.
     *
     * Documentation for signature generation:
     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]
     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]
     *
     * _Available since v4.3._
     */
    function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {
        // Check the signature length
        // - case 65: r,s,v signature (standard)
        // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._
        if (signature.length == 65) {
            bytes32 r;
            bytes32 s;
            uint8 v;
            // ecrecover takes the signature parameters, and the only way to get them
            // currently is to use assembly.
            assembly {
                r := mload(add(signature, 0x20))
                s := mload(add(signature, 0x40))
                v := byte(0, mload(add(signature, 0x60)))
            }
            return tryRecover(hash, v, r, s);
        } else if (signature.length == 64) {
            bytes32 r;
            bytes32 vs;
            // ecrecover takes the signature parameters, and the only way to get them
            // currently is to use assembly.
            assembly {
                r := mload(add(signature, 0x20))
                vs := mload(add(signature, 0x40))
            }
            return tryRecover(hash, r, vs);
        } else {
            return (address(0), RecoverError.InvalidSignatureLength);
        }
    }

    /**
     * @dev Returns the address that signed a hashed message (`hash`) with
     * `signature`. This address can then be used for verification purposes.
     *
     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:
     * this function rejects them by requiring the `s` value to be in the lower
     * half order, and the `v` value to be either 27 or 28.
     *
     * IMPORTANT: `hash` _must_ be the result of a hash operation for the
     * verification to be secure: it is possible to craft signatures that
     * recover to arbitrary addresses for non-hashed data. A safe way to ensure
     * this is by receiving a hash of the original message (which may otherwise
     * be too long), and then calling {toEthSignedMessageHash} on it.
     */
    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {
        (address recovered, RecoverError error) = tryRecover(hash, signature);
        _throwError(error);
        return recovered;
    }

    /**
     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.
     *
     * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]
     *
     * _Available since v4.3._
     */
    function tryRecover(
        bytes32 hash,
        bytes32 r,
        bytes32 vs
    ) internal pure returns (address, RecoverError) {
        bytes32 s;
        uint8 v;
        assembly {
            s := and(vs, 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)
            v := add(shr(255, vs), 27)
        }
        return tryRecover(hash, v, r, s);
    }

    /**
     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.
     *
     * _Available since v4.2._
     */
    function recover(
        bytes32 hash,
        bytes32 r,
        bytes32 vs
    ) internal pure returns (address) {
        (address recovered, RecoverError error) = tryRecover(hash, r, vs);
        _throwError(error);
        return recovered;
    }

    /**
     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,
     * `r` and `s` signature fields separately.
     *
     * _Available since v4.3._
     */
    function tryRecover(
        bytes32 hash,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) internal pure returns (address, RecoverError) {
        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature
        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines
        // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most
        // signatures from current libraries generate a unique signature with an s-value in the lower half order.
        //
        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value
        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or
        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept
        // these malleable signatures as well.
        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {
            return (address(0), RecoverError.InvalidSignatureS);
        }
        if (v != 27 && v != 28) {
            return (address(0), RecoverError.InvalidSignatureV);
        }

        // If the signature is valid (and not malleable), return the signer address
        address signer = ecrecover(hash, v, r, s);
        if (signer == address(0)) {
            return (address(0), RecoverError.InvalidSignature);
        }

        return (signer, RecoverError.NoError);
    }

    /**
     * @dev Overload of {ECDSA-recover} that receives the `v`,
     * `r` and `s` signature fields separately.
     */
    function recover(
        bytes32 hash,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) internal pure returns (address) {
        (address recovered, RecoverError error) = tryRecover(hash, v, r, s);
        _throwError(error);
        return recovered;
    }

    /**
     * @dev Returns an Ethereum Signed Message, created from a `hash`. This
     * produces hash corresponding to the one signed with the
     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]
     * JSON-RPC method as part of EIP-191.
     *
     * See {recover}.
     */
    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {
        // 32 is the length in bytes of hash,
        // enforced by the type signature above
        return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash));
    }

    /**
     * @dev Returns an Ethereum Signed Message, created from `s`. This
     * produces hash corresponding to the one signed with the
     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]
     * JSON-RPC method as part of EIP-191.
     *
     * See {recover}.
     */
    function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {
        return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n", Strings.toString(s.length), s));
    }

    /**
     * @dev Returns an Ethereum Signed Typed Data, created from a
     * `domainSeparator` and a `structHash`. This produces hash corresponding
     * to the one signed with the
     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]
     * JSON-RPC method as part of EIP-712.
     *
     * See {recover}.
     */
    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {
        return keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
    }
}



File 4 of 9: EIP712.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/cryptography/draft-EIP712.sol)

pragma solidity ^0.8.0;

import "./ECDSA.sol";

/**
 * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.
 *
 * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,
 * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding
 * they need in their contracts using a combination of `abi.encode` and `keccak256`.
 *
 * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding
 * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA
 * ({_hashTypedDataV4}).
 *
 * The implementation of the domain separator was designed to be as efficient as possible while still properly updating
 * the chain id to protect against replay attacks on an eventual fork of the chain.
 *
 * NOTE: This contract implements the version of the encoding known as "v4", as implemented by the JSON RPC method
 * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].
 *
 * _Available since v3.4._
 */
abstract contract EIP712 {
    /* solhint-disable var-name-mixedcase */
    // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to
    // invalidate the cached domain separator if the chain id changes.
    bytes32 private immutable _CACHED_DOMAIN_SEPARATOR;
    uint256 private immutable _CACHED_CHAIN_ID;
    address private immutable _CACHED_THIS;

    bytes32 private immutable _HASHED_NAME;
    bytes32 private immutable _HASHED_VERSION;
    bytes32 private immutable _TYPE_HASH;

    /* solhint-enable var-name-mixedcase */

    /**
     * @dev Initializes the domain separator and parameter caches.
     *
     * The meaning of `name` and `version` is specified in
     * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:
     *
     * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.
     * - `version`: the current major version of the signing domain.
     *
     * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart
     * contract upgrade].
     */
    constructor(string memory name, string memory version) {
        bytes32 hashedName = keccak256(bytes(name));
        bytes32 hashedVersion = keccak256(bytes(version));
        bytes32 typeHash = keccak256(
            "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
        );
        _HASHED_NAME = hashedName;
        _HASHED_VERSION = hashedVersion;
        _CACHED_CHAIN_ID = block.chainid;
        _CACHED_DOMAIN_SEPARATOR = _buildDomainSeparator(typeHash, hashedName, hashedVersion);
        _CACHED_THIS = address(this);
        _TYPE_HASH = typeHash;
    }

    /**
     * @dev Returns the domain separator for the current chain.
     */
    function _domainSeparatorV4() internal view returns (bytes32) {
        if (address(this) == _CACHED_THIS && block.chainid == _CACHED_CHAIN_ID) {
            return _CACHED_DOMAIN_SEPARATOR;
        } else {
            return _buildDomainSeparator(_TYPE_HASH, _HASHED_NAME, _HASHED_VERSION);
        }
    }

    function _buildDomainSeparator(
        bytes32 typeHash,
        bytes32 nameHash,
        bytes32 versionHash
    ) private view returns (bytes32) {
        return keccak256(abi.encode(typeHash, nameHash, versionHash, block.chainid, address(this)));
    }

    /**
     * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this
     * function returns the hash of the fully encoded EIP712 message for this domain.
     *
     * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:
     *
     * ```solidity
     * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(
     *     keccak256("Mail(address to,string contents)"),
     *     mailTo,
     *     keccak256(bytes(mailContents))
     * )));
     * address signer = ECDSA.recover(digest, signature);
     * ```
     */
    function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {
        return ECDSA.toTypedDataHash(_domainSeparatorV4(), structHash);
    }
}



File 5 of 9: ERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;

import "./IERC20.sol";
import "./IERC20Metadata.sol";
import "./Context.sol";

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

    mapping(address => MintBalance) private _balances;

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

    uint256 internal _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

    function minted(address account) public view returns (uint256) {
        return _balances[account].minted;
    }

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        // require(account != address(0), "ERC20: mint to the zero address");
        // _beforeTokenTransfer(address(0), account, amount);
        // _totalSupply += amount;
        uint256 b = _balances[account].balance + amount;
        _balances[account].balance = uint248(b);
        _balances[account].minted = 1;
        emit Transfer(address(0), account, amount);
        // _afterTokenTransfer(address(0), account, amount);
    }

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

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

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

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

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

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

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

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

    function _checkSenderLock(
        uint256 amount
    ) internal virtual {}

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


}



File 6 of 9: IERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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


File 7 of 9: IERC20Metadata.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "./IERC20.sol";

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

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

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


File 8 of 9: Math.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/math/Math.sol)

pragma solidity ^0.8.0;

/**
 * @dev Standard math utilities missing in the Solidity language.
 */
library Math {
    /**
     * @dev Returns the largest of two numbers.
     */
    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a >= b ? a : b;
    }

    /**
     * @dev Returns the smallest of two numbers.
     */
    function min(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }

    /**
     * @dev Returns the average of two numbers. The result is rounded towards
     * zero.
     */
    function average(uint256 a, uint256 b) internal pure returns (uint256) {
        // (a + b) / 2 can overflow.
        return (a & b) + (a ^ b) / 2;
    }

    /**
     * @dev Returns the ceiling of the division of two numbers.
     *
     * This is same with standard division with `/`.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // (a + b - 1) / b can overflow on addition, so we distribute.
        return a / b;
    }

    /**
     * @dev Returns the ceiling of the division of two numbers.
     *
     * This differs from standard division with `/` in that it rounds up instead
     * of rounding down.
     */
    function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {
        // (a + b - 1) / b can overflow on addition, so we distribute.
        return a / b + (a % b == 0 ? 0 : 1);
    }


    /**
     * @dev Returns the absolute unsigned value of a signed value.
     */
    function abs(int256 n) internal pure returns (uint256) {
        unchecked {
            // must be unchecked in order to support `n = type(int256).min`
            return uint256(n >= 0 ? n : -n);
        }
    }
}


File 9 of 9: Strings.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)

pragma solidity ^0.8.0;

/**
 * @dev String operations.
 */
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}



Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"address","name":"_signer","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ADDR_DAO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ADDR_ILP","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ADDR_LP","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ADDR_STAKING","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AMOUNT_AIRDROP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AMOUNT_DAO","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AMOUNT_ILP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AMOUNT_LP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AMOUNT_STAKING","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AMOUNT_UNLOCKED_MONTH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"APPROVE_MSG","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"END_AIRDROP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LOCK_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"START_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"minted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"signer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

61016060405260006005553480156200001757600080fd5b50604051620037733803806200377383398181016040528101906200003d91906200086c565b6040518060400160405280600681526020017f44697344414f00000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f312e30000000000000000000000000000000000000000000000000000000000081525084848160039080519060200190620000c392919062000733565b508060049080519060200190620000dc92919062000733565b50505060008280519060200120905060008280519060200120905060007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f90508260e081815250508161010081815250504660a0818152505062000148818484620004fa60201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b8152505080610120818152505050505050506200020573e450fe0f9deaad5b1cb8fc691d95ce1f723e0ced601960646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16620001ed919062000a5d565b620001f9919062000a95565b6200053660201b60201c565b62000276731ff3a2bf533abd1f863b5ae5f601554068a5818f600a60646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166200025e919062000a5d565b6200026a919062000a95565b6200053660201b60201c565b620002e7735bc4e9f6feee3d381803ad70849f5928262d3c66600e60646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16620002cf919062000a5d565b620002db919062000a95565b6200053660201b60201c565b6200035873b1a77965b8dae65e21001e528043a21607265be1600160646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1662000340919062000a5d565b6200034c919062000a95565b6200053660201b60201c565b600160646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1662000398919062000a5d565b620003a4919062000a95565b600e60646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16620003e4919062000a5d565b620003f0919062000a95565b600a60646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1662000430919062000a5d565b6200043c919062000a95565b601960646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166200047c919062000a5d565b62000488919062000a95565b62000494919062000a00565b620004a0919062000a00565b620004ac919062000a00565b6002819055508073ffffffffffffffffffffffffffffffffffffffff166101408173ffffffffffffffffffffffffffffffffffffffff1660601b815250504260058190555050505062000cc7565b600083838346306040516020016200051795949392919062000927565b6040516020818303038152906040528051906020012090509392505050565b6000816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a90047effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16620005d3919062000a00565b9050806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a8154817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555060016000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff021916908360ff1602179055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405162000726919062000984565b60405180910390a3505050565b828054620007419062000b74565b90600052602060002090601f016020900481019282620007655760008555620007b1565b82601f106200078057805160ff1916838001178555620007b1565b82800160010185558215620007b1579182015b82811115620007b057825182559160200191906001019062000793565b5b509050620007c09190620007c4565b5090565b5b80821115620007df576000816000905550600101620007c5565b5090565b6000620007fa620007f484620009ca565b620009a1565b9050828152602081018484840111156200081357600080fd5b6200082084828562000b3e565b509392505050565b600081519050620008398162000cad565b92915050565b600082601f8301126200085157600080fd5b815162000863848260208601620007e3565b91505092915050565b6000806000606084860312156200088257600080fd5b600084015167ffffffffffffffff8111156200089d57600080fd5b620008ab868287016200083f565b935050602084015167ffffffffffffffff811115620008c957600080fd5b620008d7868287016200083f565b9250506040620008ea8682870162000828565b9150509250925092565b620008ff8162000af6565b82525050565b620009108162000b0a565b82525050565b620009218162000b34565b82525050565b600060a0820190506200093e600083018862000905565b6200094d602083018762000905565b6200095c604083018662000905565b6200096b606083018562000916565b6200097a6080830184620008f4565b9695505050505050565b60006020820190506200099b600083018462000916565b92915050565b6000620009ad620009c0565b9050620009bb828262000baa565b919050565b6000604051905090565b600067ffffffffffffffff821115620009e857620009e762000c6d565b5b620009f38262000c9c565b9050602081019050919050565b600062000a0d8262000b34565b915062000a1a8362000b34565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000a525762000a5162000be0565b5b828201905092915050565b600062000a6a8262000b34565b915062000a778362000b34565b92508262000a8a5762000a8962000c0f565b5b828204905092915050565b600062000aa28262000b34565b915062000aaf8362000b34565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000aeb5762000aea62000be0565b5b828202905092915050565b600062000b038262000b14565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562000b5e57808201518184015260208101905062000b41565b8381111562000b6e576000848401525b50505050565b6000600282049050600182168062000b8d57607f821691505b6020821081141562000ba45762000ba362000c3e565b5b50919050565b62000bb58262000c9c565b810181811067ffffffffffffffff8211171562000bd75762000bd662000c6d565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b62000cb88162000af6565b811462000cc457600080fd5b50565b60805160a05160c05160601c60e05161010051610120516101405160601c612a5662000d1d6000396000818161089501526109ef0152600050506000505060005050600050506000505060005050612a566000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c8063720248de116101045780639aafa7a4116100a2578063d40dc87011610071578063d40dc87014610567578063da394aec14610585578063dd62ed3e146105a3578063ddaa26ad146105d3576101da565b80639aafa7a4146104cb578063a457c2d7146104e9578063a9059cbb14610519578063b43bbd1114610549576101da565b806382a38400116100de57806382a384001461045357806386fdbdc11461047157806387d45de71461048f57806395d89b41146104ad576101da565b8063720248de146103f957806375df1d7c1461041757806380ef016014610435576101da565b8063313ce5671161017c578063413d9c3a1161014b578063413d9c3a1461036f57806346de26731461038d57806357b3a501146103ab57806370a08231146103c9576101da565b8063313ce567146102e557806332cb6b0c1461030357806339509351146103215780633f1eaf0f14610351576101da565b806318160ddd116101b857806318160ddd146102495780631e7269c514610267578063238ac9331461029757806323b872dd146102b5576101da565b806306fdde03146101df578063095ea7b3146101fd5780631278e00a1461022d575b600080fd5b6101e76105f1565b6040516101f491906120f6565b60405180910390f35b61021760048036038101906102129190611d31565b610683565b6040516102249190612096565b60405180910390f35b61024760048036038101906102429190611d6d565b6106a1565b005b610251610988565b60405161025e91906122f6565b60405180910390f35b610281600480360381019061027c9190611c7d565b610992565b60405161028e91906122f6565b60405180910390f35b61029f6109ed565b6040516102ac919061207b565b60405180910390f35b6102cf60048036038101906102ca9190611ce2565b610a11565b6040516102dc9190612096565b60405180910390f35b6102ed610b09565b6040516102fa9190612311565b60405180910390f35b61030b610b12565b60405161031891906122f6565b60405180910390f35b61033b60048036038101906103369190611d31565b610b45565b6040516103489190612096565b60405180910390f35b610359610bf1565b60405161036691906122f6565b60405180910390f35b610377610c3c565b60405161038491906122f6565b60405180910390f35b610395610c43565b6040516103a2919061207b565b60405180910390f35b6103b3610c5b565b6040516103c091906122f6565b60405180910390f35b6103e360048036038101906103de9190611c7d565b610c63565b6040516103f091906122f6565b60405180910390f35b610401610cfa565b60405161040e91906122f6565b60405180910390f35b61041f610d45565b60405161042c919061207b565b60405180910390f35b61043d610d5d565b60405161044a91906122f6565b60405180910390f35b61045b610ed8565b60405161046891906120f6565b60405180910390f35b610479610ef4565b60405161048691906122f6565b60405180910390f35b610497610f3f565b6040516104a4919061207b565b60405180910390f35b6104b5610f57565b6040516104c291906120f6565b60405180910390f35b6104d3610fe9565b6040516104e091906122f6565b60405180910390f35b61050360048036038101906104fe9190611d31565b611040565b6040516105109190612096565b60405180910390f35b610533600480360381019061052e9190611d31565b61112b565b6040516105409190612096565b60405180910390f35b610551611149565b60405161055e91906122f6565b60405180910390f35b61056f611194565b60405161057c91906122f6565b60405180910390f35b61058d6111c5565b60405161059a919061207b565b60405180910390f35b6105bd60048036038101906105b89190611ca6565b6111dd565b6040516105ca91906122f6565b60405180910390f35b6105db611264565b6040516105e891906122f6565b60405180910390f35b6060600380546106009061257a565b80601f016020809104026020016040519081016040528092919081815260200182805461062c9061257a565b80156106795780601f1061064e57610100808354040283529160200191610679565b820191906000526020600020905b81548152906001019060200180831161065c57829003601f168201915b5050505050905090565b600061069761069061126a565b8484611272565b6001905092915050565b63621d620042106106e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106de90612256565b60405180910390fd5b6000846002546106f791906123a8565b90506d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681111561076b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610762906121d6565b60405180910390fd5b6b219aada9b14535aca00000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff168511156107db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d290612156565b60405180910390fd5b60006107e633610992565b14610826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081d906122b6565b60405180910390fd5b60006040518060600160405280602881526020016129f960289139338760405160200161085593929190612118565b6040516020818303038152906040528051906020012060405160200161087b9190612055565b6040516020818303038152906040528051906020012090507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16600182878787604051600081526020016040526040516108ed94939291906120b1565b6020604051602081039080840390855afa15801561090f573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff161461096f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096690612216565b60405180910390fd5b81600281905550610980338761143d565b505050505050565b6000600254905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1660ff169050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610a1e848484611636565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a6961126a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae090612236565b60405180910390fd5b610afd85610af561126a565b858403611272565b60019150509392505050565b60006012905090565b6d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681565b6000610be7610b5261126a565b848460016000610b6061126a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610be291906123a8565b611272565b6001905092915050565b600160646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610c2f91906123fe565b610c39919061242f565b81565b62278d0081565b735bc4e9f6feee3d381803ad70849f5928262d3c6681565b63621d620081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a90047effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff169050919050565b601960646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610d3891906123fe565b610d42919061242f565b81565b731ff3a2bf533abd1f863b5ae5f601554068a5818f81565b600160646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610d9b91906123fe565b610da5919061242f565b600e60646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610de391906123fe565b610ded919061242f565b600a60646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610e2b91906123fe565b610e35919061242f565b601960646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610e7391906123fe565b610e7d919061242f565b610e8791906123a8565b610e9191906123a8565b610e9b91906123a8565b6d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610ed59190612489565b81565b6040518060600160405280602881526020016129f96028913981565b600e60646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610f3291906123fe565b610f3c919061242f565b81565b73b1a77965b8dae65e21001e528043a21607265be181565b606060048054610f669061257a565b80601f0160208091040260200160405190810160405280929190818152602001828054610f929061257a565b8015610fdf5780601f10610fb457610100808354040283529160200191610fdf565b820191906000526020600020905b815481529060010190602001808311610fc257829003601f168201915b5050505050905090565b601e600a60646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661102991906123fe565b611033919061242f565b61103d91906123fe565b81565b6000806001600061104f61126a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561110c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611103906122d6565b60405180910390fd5b61112061111761126a565b85858403611272565b600191505092915050565b600061113f61113861126a565b8484611636565b6001905092915050565b600a60646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661118791906123fe565b611191919061242f565b81565b6b219aada9b14535aca00000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681565b73e450fe0f9deaad5b1cb8fc691d95ce1f723e0ced81565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60055481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d990612296565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611352576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134990612196565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161143091906122f6565b60405180910390a3505050565b6000816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a90047effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166114d891906123a8565b9050806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a8154817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555060016000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff021916908360ff1602179055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161162991906122f6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169d90612276565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170d90612176565b60405180910390fd5b61171f816119dc565b61172a838383611c09565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a90047effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff169050818110156117ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f6906121b6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a8154817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff160217905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160018282829054906101000a90047effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166119129190612353565b92506101000a8154817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119c391906122f6565b60405180910390a36119d6848484611c0e565b50505050565b731ff3a2bf533abd1f863b5ae5f601554068a5818f73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415611b2d576000611a4060055442611a379190612489565b62278d00611c13565b9050603c8111611b2b57600081601e611a599190612489565b601e600a60646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611a9991906123fe565b611aa3919061242f565b611aad91906123fe565b611ab7919061242f565b905060008382611ac791906123a8565b905080611ae7731ff3a2bf533abd1f863b5ae5f601554068a5818f610c63565b1015611b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1f906121f6565b60405180910390fd5b50505b505b73e450fe0f9deaad5b1cb8fc691d95ce1f723e0ced73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611bba5750735bc4e9f6feee3d381803ad70849f5928262d3c6673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15611c065763621d62004211611c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfc906121f6565b60405180910390fd5b5b50565b505050565b505050565b60008183611c2191906123fe565b905092915050565b600081359050611c388161299c565b92915050565b600081359050611c4d816129b3565b92915050565b600081359050611c62816129ca565b92915050565b600081359050611c77816129e1565b92915050565b600060208284031215611c8f57600080fd5b6000611c9d84828501611c29565b91505092915050565b60008060408385031215611cb957600080fd5b6000611cc785828601611c29565b9250506020611cd885828601611c29565b9150509250929050565b600080600060608486031215611cf757600080fd5b6000611d0586828701611c29565b9350506020611d1686828701611c29565b9250506040611d2786828701611c53565b9150509250925092565b60008060408385031215611d4457600080fd5b6000611d5285828601611c29565b9250506020611d6385828601611c53565b9150509250929050565b60008060008060808587031215611d8357600080fd5b6000611d9187828801611c53565b9450506020611da287828801611c68565b9350506040611db387828801611c3e565b9250506060611dc487828801611c3e565b91505092959194509250565b611dd9816124bd565b82525050565b611de8816124cf565b82525050565b611df7816124db565b82525050565b611e0e611e09826124db565b6125ac565b82525050565b6000611e1f8261232c565b611e298185612337565b9350611e39818560208601612547565b611e4281612643565b840191505092915050565b6000611e5a601583612337565b9150611e6582612654565b602082019050919050565b6000611e7d602383612337565b9150611e888261267d565b604082019050919050565b6000611ea0601c83612348565b9150611eab826126cc565b601c82019050919050565b6000611ec3602283612337565b9150611ece826126f5565b604082019050919050565b6000611ee6602683612337565b9150611ef182612744565b604082019050919050565b6000611f09601583612337565b9150611f1482612793565b602082019050919050565b6000611f2c600f83612337565b9150611f37826127bc565b602082019050919050565b6000611f4f600e83612337565b9150611f5a826127e5565b602082019050919050565b6000611f72602883612337565b9150611f7d8261280e565b604082019050919050565b6000611f95600f83612337565b9150611fa08261285d565b602082019050919050565b6000611fb8602583612337565b9150611fc382612886565b604082019050919050565b6000611fdb602483612337565b9150611fe6826128d5565b604082019050919050565b6000611ffe600f83612337565b915061200982612924565b602082019050919050565b6000612021602583612337565b915061202c8261294d565b604082019050919050565b61204081612530565b82525050565b61204f8161253a565b82525050565b600061206082611e93565b915061206c8284611dfd565b60208201915081905092915050565b60006020820190506120906000830184611dd0565b92915050565b60006020820190506120ab6000830184611ddf565b92915050565b60006080820190506120c66000830187611dee565b6120d36020830186612046565b6120e06040830185611dee565b6120ed6060830184611dee565b95945050505050565b600060208201905081810360008301526121108184611e14565b905092915050565b600060608201905081810360008301526121328186611e14565b90506121416020830185611dd0565b61214e6040830184612037565b949350505050565b6000602082019050818103600083015261216f81611e4d565b9050919050565b6000602082019050818103600083015261218f81611e70565b9050919050565b600060208201905081810360008301526121af81611eb6565b9050919050565b600060208201905081810360008301526121cf81611ed9565b9050919050565b600060208201905081810360008301526121ef81611efc565b9050919050565b6000602082019050818103600083015261220f81611f1f565b9050919050565b6000602082019050818103600083015261222f81611f42565b9050919050565b6000602082019050818103600083015261224f81611f65565b9050919050565b6000602082019050818103600083015261226f81611f88565b9050919050565b6000602082019050818103600083015261228f81611fab565b9050919050565b600060208201905081810360008301526122af81611fce565b9050919050565b600060208201905081810360008301526122cf81611ff1565b9050919050565b600060208201905081810360008301526122ef81612014565b9050919050565b600060208201905061230b6000830184612037565b92915050565b60006020820190506123266000830184612046565b92915050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600061235e82612505565b915061236983612505565b9250827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561239d5761239c6125b6565b5b828201905092915050565b60006123b382612530565b91506123be83612530565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156123f3576123f26125b6565b5b828201905092915050565b600061240982612530565b915061241483612530565b925082612424576124236125e5565b5b828204905092915050565b600061243a82612530565b915061244583612530565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561247e5761247d6125b6565b5b828202905092915050565b600061249482612530565b915061249f83612530565b9250828210156124b2576124b16125b6565b5b828203905092915050565b60006124c8826124e5565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561256557808201518184015260208101905061254a565b83811115612574576000848401525b50505050565b6000600282049050600182168061259257607f821691505b602082108114156125a6576125a5612614565b5b50919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f457863656564206d6178696d756d20616d6f756e740000000000000000000000600082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f457863656564206d6178696d756d20737570706c790000000000000000000000600082015250565b7f5472616e73666572204c6f636b65640000000000000000000000000000000000600082015250565b7f496e76616c6964207369676e6572000000000000000000000000000000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f41697244726f7020457870697265640000000000000000000000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f416c726561647920436c61696d65640000000000000000000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6129a5816124bd565b81146129b057600080fd5b50565b6129bc816124db565b81146129c757600080fd5b50565b6129d381612530565b81146129de57600080fd5b50565b6129ea8161253a565b81146129f557600080fd5b5056fe617070726f76652861646472657373206163636f756e742c2075696e7432353620616d6f756e7429a26469706673582212201d6eed177afadf09d818d7b10f142984872cea1cf4a05f7b2e6881cc7aa1296f64736f6c63430008040033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000009f10853fcf6b33a7e490f8a0995fecdbd9ccab430000000000000000000000000000000000000000000000000000000000000004444953440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044449534400000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101da5760003560e01c8063720248de116101045780639aafa7a4116100a2578063d40dc87011610071578063d40dc87014610567578063da394aec14610585578063dd62ed3e146105a3578063ddaa26ad146105d3576101da565b80639aafa7a4146104cb578063a457c2d7146104e9578063a9059cbb14610519578063b43bbd1114610549576101da565b806382a38400116100de57806382a384001461045357806386fdbdc11461047157806387d45de71461048f57806395d89b41146104ad576101da565b8063720248de146103f957806375df1d7c1461041757806380ef016014610435576101da565b8063313ce5671161017c578063413d9c3a1161014b578063413d9c3a1461036f57806346de26731461038d57806357b3a501146103ab57806370a08231146103c9576101da565b8063313ce567146102e557806332cb6b0c1461030357806339509351146103215780633f1eaf0f14610351576101da565b806318160ddd116101b857806318160ddd146102495780631e7269c514610267578063238ac9331461029757806323b872dd146102b5576101da565b806306fdde03146101df578063095ea7b3146101fd5780631278e00a1461022d575b600080fd5b6101e76105f1565b6040516101f491906120f6565b60405180910390f35b61021760048036038101906102129190611d31565b610683565b6040516102249190612096565b60405180910390f35b61024760048036038101906102429190611d6d565b6106a1565b005b610251610988565b60405161025e91906122f6565b60405180910390f35b610281600480360381019061027c9190611c7d565b610992565b60405161028e91906122f6565b60405180910390f35b61029f6109ed565b6040516102ac919061207b565b60405180910390f35b6102cf60048036038101906102ca9190611ce2565b610a11565b6040516102dc9190612096565b60405180910390f35b6102ed610b09565b6040516102fa9190612311565b60405180910390f35b61030b610b12565b60405161031891906122f6565b60405180910390f35b61033b60048036038101906103369190611d31565b610b45565b6040516103489190612096565b60405180910390f35b610359610bf1565b60405161036691906122f6565b60405180910390f35b610377610c3c565b60405161038491906122f6565b60405180910390f35b610395610c43565b6040516103a2919061207b565b60405180910390f35b6103b3610c5b565b6040516103c091906122f6565b60405180910390f35b6103e360048036038101906103de9190611c7d565b610c63565b6040516103f091906122f6565b60405180910390f35b610401610cfa565b60405161040e91906122f6565b60405180910390f35b61041f610d45565b60405161042c919061207b565b60405180910390f35b61043d610d5d565b60405161044a91906122f6565b60405180910390f35b61045b610ed8565b60405161046891906120f6565b60405180910390f35b610479610ef4565b60405161048691906122f6565b60405180910390f35b610497610f3f565b6040516104a4919061207b565b60405180910390f35b6104b5610f57565b6040516104c291906120f6565b60405180910390f35b6104d3610fe9565b6040516104e091906122f6565b60405180910390f35b61050360048036038101906104fe9190611d31565b611040565b6040516105109190612096565b60405180910390f35b610533600480360381019061052e9190611d31565b61112b565b6040516105409190612096565b60405180910390f35b610551611149565b60405161055e91906122f6565b60405180910390f35b61056f611194565b60405161057c91906122f6565b60405180910390f35b61058d6111c5565b60405161059a919061207b565b60405180910390f35b6105bd60048036038101906105b89190611ca6565b6111dd565b6040516105ca91906122f6565b60405180910390f35b6105db611264565b6040516105e891906122f6565b60405180910390f35b6060600380546106009061257a565b80601f016020809104026020016040519081016040528092919081815260200182805461062c9061257a565b80156106795780601f1061064e57610100808354040283529160200191610679565b820191906000526020600020905b81548152906001019060200180831161065c57829003601f168201915b5050505050905090565b600061069761069061126a565b8484611272565b6001905092915050565b63621d620042106106e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106de90612256565b60405180910390fd5b6000846002546106f791906123a8565b90506d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681111561076b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610762906121d6565b60405180910390fd5b6b219aada9b14535aca00000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff168511156107db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d290612156565b60405180910390fd5b60006107e633610992565b14610826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081d906122b6565b60405180910390fd5b60006040518060600160405280602881526020016129f960289139338760405160200161085593929190612118565b6040516020818303038152906040528051906020012060405160200161087b9190612055565b6040516020818303038152906040528051906020012090507f0000000000000000000000009f10853fcf6b33a7e490f8a0995fecdbd9ccab4373ffffffffffffffffffffffffffffffffffffffff16600182878787604051600081526020016040526040516108ed94939291906120b1565b6020604051602081039080840390855afa15801561090f573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff161461096f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096690612216565b60405180910390fd5b81600281905550610980338761143d565b505050505050565b6000600254905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1660ff169050919050565b7f0000000000000000000000009f10853fcf6b33a7e490f8a0995fecdbd9ccab4381565b6000610a1e848484611636565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a6961126a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae090612236565b60405180910390fd5b610afd85610af561126a565b858403611272565b60019150509392505050565b60006012905090565b6d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681565b6000610be7610b5261126a565b848460016000610b6061126a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610be291906123a8565b611272565b6001905092915050565b600160646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610c2f91906123fe565b610c39919061242f565b81565b62278d0081565b735bc4e9f6feee3d381803ad70849f5928262d3c6681565b63621d620081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a90047effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff169050919050565b601960646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610d3891906123fe565b610d42919061242f565b81565b731ff3a2bf533abd1f863b5ae5f601554068a5818f81565b600160646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610d9b91906123fe565b610da5919061242f565b600e60646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610de391906123fe565b610ded919061242f565b600a60646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610e2b91906123fe565b610e35919061242f565b601960646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610e7391906123fe565b610e7d919061242f565b610e8791906123a8565b610e9191906123a8565b610e9b91906123a8565b6d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610ed59190612489565b81565b6040518060600160405280602881526020016129f96028913981565b600e60646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610f3291906123fe565b610f3c919061242f565b81565b73b1a77965b8dae65e21001e528043a21607265be181565b606060048054610f669061257a565b80601f0160208091040260200160405190810160405280929190818152602001828054610f929061257a565b8015610fdf5780601f10610fb457610100808354040283529160200191610fdf565b820191906000526020600020905b815481529060010190602001808311610fc257829003601f168201915b5050505050905090565b601e600a60646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661102991906123fe565b611033919061242f565b61103d91906123fe565b81565b6000806001600061104f61126a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561110c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611103906122d6565b60405180910390fd5b61112061111761126a565b85858403611272565b600191505092915050565b600061113f61113861126a565b8484611636565b6001905092915050565b600a60646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661118791906123fe565b611191919061242f565b81565b6b219aada9b14535aca00000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681565b73e450fe0f9deaad5b1cb8fc691d95ce1f723e0ced81565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60055481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d990612296565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611352576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134990612196565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161143091906122f6565b60405180910390a3505050565b6000816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a90047effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166114d891906123a8565b9050806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a8154817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555060016000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff021916908360ff1602179055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161162991906122f6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169d90612276565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170d90612176565b60405180910390fd5b61171f816119dc565b61172a838383611c09565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a90047effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff169050818110156117ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f6906121b6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a8154817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff160217905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160018282829054906101000a90047effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166119129190612353565b92506101000a8154817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119c391906122f6565b60405180910390a36119d6848484611c0e565b50505050565b731ff3a2bf533abd1f863b5ae5f601554068a5818f73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415611b2d576000611a4060055442611a379190612489565b62278d00611c13565b9050603c8111611b2b57600081601e611a599190612489565b601e600a60646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611a9991906123fe565b611aa3919061242f565b611aad91906123fe565b611ab7919061242f565b905060008382611ac791906123a8565b905080611ae7731ff3a2bf533abd1f863b5ae5f601554068a5818f610c63565b1015611b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1f906121f6565b60405180910390fd5b50505b505b73e450fe0f9deaad5b1cb8fc691d95ce1f723e0ced73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611bba5750735bc4e9f6feee3d381803ad70849f5928262d3c6673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15611c065763621d62004211611c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfc906121f6565b60405180910390fd5b5b50565b505050565b505050565b60008183611c2191906123fe565b905092915050565b600081359050611c388161299c565b92915050565b600081359050611c4d816129b3565b92915050565b600081359050611c62816129ca565b92915050565b600081359050611c77816129e1565b92915050565b600060208284031215611c8f57600080fd5b6000611c9d84828501611c29565b91505092915050565b60008060408385031215611cb957600080fd5b6000611cc785828601611c29565b9250506020611cd885828601611c29565b9150509250929050565b600080600060608486031215611cf757600080fd5b6000611d0586828701611c29565b9350506020611d1686828701611c29565b9250506040611d2786828701611c53565b9150509250925092565b60008060408385031215611d4457600080fd5b6000611d5285828601611c29565b9250506020611d6385828601611c53565b9150509250929050565b60008060008060808587031215611d8357600080fd5b6000611d9187828801611c53565b9450506020611da287828801611c68565b9350506040611db387828801611c3e565b9250506060611dc487828801611c3e565b91505092959194509250565b611dd9816124bd565b82525050565b611de8816124cf565b82525050565b611df7816124db565b82525050565b611e0e611e09826124db565b6125ac565b82525050565b6000611e1f8261232c565b611e298185612337565b9350611e39818560208601612547565b611e4281612643565b840191505092915050565b6000611e5a601583612337565b9150611e6582612654565b602082019050919050565b6000611e7d602383612337565b9150611e888261267d565b604082019050919050565b6000611ea0601c83612348565b9150611eab826126cc565b601c82019050919050565b6000611ec3602283612337565b9150611ece826126f5565b604082019050919050565b6000611ee6602683612337565b9150611ef182612744565b604082019050919050565b6000611f09601583612337565b9150611f1482612793565b602082019050919050565b6000611f2c600f83612337565b9150611f37826127bc565b602082019050919050565b6000611f4f600e83612337565b9150611f5a826127e5565b602082019050919050565b6000611f72602883612337565b9150611f7d8261280e565b604082019050919050565b6000611f95600f83612337565b9150611fa08261285d565b602082019050919050565b6000611fb8602583612337565b9150611fc382612886565b604082019050919050565b6000611fdb602483612337565b9150611fe6826128d5565b604082019050919050565b6000611ffe600f83612337565b915061200982612924565b602082019050919050565b6000612021602583612337565b915061202c8261294d565b604082019050919050565b61204081612530565b82525050565b61204f8161253a565b82525050565b600061206082611e93565b915061206c8284611dfd565b60208201915081905092915050565b60006020820190506120906000830184611dd0565b92915050565b60006020820190506120ab6000830184611ddf565b92915050565b60006080820190506120c66000830187611dee565b6120d36020830186612046565b6120e06040830185611dee565b6120ed6060830184611dee565b95945050505050565b600060208201905081810360008301526121108184611e14565b905092915050565b600060608201905081810360008301526121328186611e14565b90506121416020830185611dd0565b61214e6040830184612037565b949350505050565b6000602082019050818103600083015261216f81611e4d565b9050919050565b6000602082019050818103600083015261218f81611e70565b9050919050565b600060208201905081810360008301526121af81611eb6565b9050919050565b600060208201905081810360008301526121cf81611ed9565b9050919050565b600060208201905081810360008301526121ef81611efc565b9050919050565b6000602082019050818103600083015261220f81611f1f565b9050919050565b6000602082019050818103600083015261222f81611f42565b9050919050565b6000602082019050818103600083015261224f81611f65565b9050919050565b6000602082019050818103600083015261226f81611f88565b9050919050565b6000602082019050818103600083015261228f81611fab565b9050919050565b600060208201905081810360008301526122af81611fce565b9050919050565b600060208201905081810360008301526122cf81611ff1565b9050919050565b600060208201905081810360008301526122ef81612014565b9050919050565b600060208201905061230b6000830184612037565b92915050565b60006020820190506123266000830184612046565b92915050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600061235e82612505565b915061236983612505565b9250827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561239d5761239c6125b6565b5b828201905092915050565b60006123b382612530565b91506123be83612530565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156123f3576123f26125b6565b5b828201905092915050565b600061240982612530565b915061241483612530565b925082612424576124236125e5565b5b828204905092915050565b600061243a82612530565b915061244583612530565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561247e5761247d6125b6565b5b828202905092915050565b600061249482612530565b915061249f83612530565b9250828210156124b2576124b16125b6565b5b828203905092915050565b60006124c8826124e5565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561256557808201518184015260208101905061254a565b83811115612574576000848401525b50505050565b6000600282049050600182168061259257607f821691505b602082108114156125a6576125a5612614565b5b50919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f457863656564206d6178696d756d20616d6f756e740000000000000000000000600082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f457863656564206d6178696d756d20737570706c790000000000000000000000600082015250565b7f5472616e73666572204c6f636b65640000000000000000000000000000000000600082015250565b7f496e76616c6964207369676e6572000000000000000000000000000000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f41697244726f7020457870697265640000000000000000000000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f416c726561647920436c61696d65640000000000000000000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6129a5816124bd565b81146129b057600080fd5b50565b6129bc816124db565b81146129c757600080fd5b50565b6129d381612530565b81146129de57600080fd5b50565b6129ea8161253a565b81146129f557600080fd5b5056fe617070726f76652861646472657373206163636f756e742c2075696e7432353620616d6f756e7429a26469706673582212201d6eed177afadf09d818d7b10f142984872cea1cf4a05f7b2e6881cc7aa1296f64736f6c63430008040033

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

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000009f10853fcf6b33a7e490f8a0995fecdbd9ccab430000000000000000000000000000000000000000000000000000000000000004444953440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044449534400000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): DISD
Arg [1] : _symbol (string): DISD
Arg [2] : _signer (address): 0x9F10853fcf6b33A7E490f8A0995feCDbD9CcAB43

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 0000000000000000000000009f10853fcf6b33a7e490f8a0995fecdbd9ccab43
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [4] : 4449534400000000000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [6] : 4449534400000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

146:3143:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2204:98:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4427:166;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1962:700:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3292:106:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3595:112;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1496:31:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5060:478:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3141:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;185:56:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5933:212:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1095:57:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;332:43;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;976:76;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;381:48;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3456:133:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;451:58:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;721:81;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1261:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1411:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;913:57;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1158:77;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2415:102:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;808:67:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6632:405:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3910:172;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;653:62:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;247:63;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;515:77;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4140:149:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1376:29:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2204:98:4;2258:13;2290:5;2283:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2204:98;:::o;4427:166::-;4510:4;4526:39;4535:12;:10;:12::i;:::-;4549:7;4558:6;4526:8;:39::i;:::-;4582:4;4575:11;;4427:166;;;;:::o;1962:700:1:-;419:10;2051:15;:29;2043:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;2110:13;2141:6;2126:12;;:21;;;;:::i;:::-;2110:37;;230:10;2174;;2165:5;:19;;2157:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;292:17;2238:10;;2228:6;:20;;2220:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;2314:1;2292:18;2299:10;2292:6;:18::i;:::-;:23;2284:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;2345:14;2481:11;;;;;;;;;;;;;;;;;2494:10;2506:6;2470:43;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2460:54;;;;;;2372:143;;;;;;;;:::i;:::-;;;;;;;;;;;;;2362:154;;;;;;2345:171;;2564:6;2534:36;;:26;2544:6;2552:1;2555;2558;2534:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;2526:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;2614:5;2599:12;:20;;;;2629:25;2635:10;2647:6;2629:5;:25::i;:::-;1962:700;;;;;;:::o;3292:106:4:-;3353:7;3379:12;;3372:19;;3292:106;:::o;3595:112::-;3649:7;3675:9;:18;3685:7;3675:18;;;;;;;;;;;;;;;:25;;;;;;;;;;;;3668:32;;;;3595:112;;;:::o;1496:31:1:-;;;:::o;5060:478:4:-;5196:4;5212:36;5222:6;5230:9;5241:6;5212:9;:36::i;:::-;5259:24;5286:11;:19;5298:6;5286:19;;;;;;;;;;;;;;;:33;5306:12;:10;:12::i;:::-;5286:33;;;;;;;;;;;;;;;;5259:60;;5357:6;5337:16;:26;;5329:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5442:57;5451:6;5459:12;:10;:12::i;:::-;5492:6;5473:16;:25;5442:8;:57::i;:::-;5527:4;5520:11;;;5060:478;;;;;:::o;3141:91::-;3199:5;3223:2;3216:9;;3141:91;:::o;185:56:1:-;230:10;185:56;;;:::o;5933:212:4:-;6021:4;6037:80;6046:12;:10;:12::i;:::-;6060:7;6106:10;6069:11;:25;6081:12;:10;:12::i;:::-;6069:25;;;;;;;;;;;;;;;:34;6095:7;6069:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6037:8;:80::i;:::-;6134:4;6127:11;;5933:212;;;;:::o;1095:57:1:-;1151:1;1145:3;230:10;1132;;:16;;;;:::i;:::-;:20;;;;:::i;:::-;1095:57;:::o;332:43::-;368:7;332:43;:::o;976:76::-;1010:42;976:76;:::o;381:48::-;419:10;381:48;:::o;3456:133:4:-;3530:7;3556:9;:18;3566:7;3556:18;;;;;;;;;;;;;;;:26;;;;;;;;;;;;3549:33;;;;3456:133;;;:::o;451:58:1:-;507:2;501:3;230:10;488;;:16;;;;:::i;:::-;:21;;;;:::i;:::-;451:58;:::o;721:81::-;760:42;721:81;:::o;1261:108::-;1151:1;1145:3;230:10;1132;;:16;;;;:::i;:::-;:20;;;;:::i;:::-;968:2;962:3;230:10;949;;:16;;;;:::i;:::-;:21;;;;:::i;:::-;713:2;707:3;230:10;694;;:16;;;;:::i;:::-;:21;;;;:::i;:::-;507:2;501:3;230:10;488;;:16;;;;:::i;:::-;:21;;;;:::i;:::-;1316:27;;;;:::i;:::-;:39;;;;:::i;:::-;:52;;;;:::i;:::-;230:10;1302;;:67;;;;:::i;:::-;1261:108;:::o;1411:79::-;;;;;;;;;;;;;;;;;;;:::o;913:57::-;968:2;962:3;230:10;949;;:16;;;;:::i;:::-;:21;;;;:::i;:::-;913:57;:::o;1158:77::-;1193:42;1158:77;:::o;2415:102:4:-;2471:13;2503:7;2496:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2415:102;:::o;808:67:1:-;873:2;713;707:3;230:10;694;;:16;;;;:::i;:::-;:21;;;;:::i;:::-;856:19;;;;:::i;:::-;808:67;:::o;6632:405:4:-;6725:4;6741:24;6768:11;:25;6780:12;:10;:12::i;:::-;6768:25;;;;;;;;;;;;;;;:34;6794:7;6768:34;;;;;;;;;;;;;;;;6741:61;;6840:15;6820:16;:35;;6812:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6931:67;6940:12;:10;:12::i;:::-;6954:7;6982:15;6963:16;:34;6931:8;:67::i;:::-;7026:4;7019:11;;;6632:405;;;;:::o;3910:172::-;3996:4;4012:42;4022:12;:10;:12::i;:::-;4036:9;4047:6;4012:9;:42::i;:::-;4071:4;4064:11;;3910:172;;;;:::o;653:62:1:-;713:2;707:3;230:10;694;;:16;;;;:::i;:::-;:21;;;;:::i;:::-;653:62;:::o;247:63::-;292:17;247:63;;;:::o;515:77::-;550:42;515:77;:::o;4140:149:4:-;4229:7;4255:11;:18;4267:5;4255:18;;;;;;;;;;;;;;;:27;4274:7;4255:27;;;;;;;;;;;;;;;;4248:34;;4140:149;;;;:::o;1376:29:1:-;;;;:::o;587:96:0:-;640:7;666:10;659:17;;587:96;:::o;10424:370:4:-;10572:1;10555:19;;:5;:19;;;;10547:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10652:1;10633:21;;:7;:21;;;;10625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10734:6;10704:11;:18;10716:5;10704:18;;;;;;;;;;;;;;;:27;10723:7;10704:27;;;;;;;;;;;;;;;:36;;;;10771:7;10755:32;;10764:5;10755:32;;;10780:6;10755:32;;;;;;:::i;:::-;;;;;;;;10424:370;;;:::o;8575:505::-;8825:9;8866:6;8837:9;:18;8847:7;8837:18;;;;;;;;;;;;;;;:26;;;;;;;;;;;;:35;;;;;;:::i;:::-;8825:47;;8919:1;8882:9;:18;8892:7;8882:18;;;;;;;;;;;;;;;:26;;;:39;;;;;;;;;;;;;;;;;;8959:1;8931:9;:18;8941:7;8931:18;;;;;;;;;;;;;;;:25;;;:29;;;;;;;;;;;;;;;;;;8996:7;8975:37;;8992:1;8975:37;;;9005:6;8975:37;;;;;;:::i;:::-;;;;;;;;8575:505;;;:::o;7511:788::-;7664:1;7646:20;;:6;:20;;;;7638:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7747:1;7726:23;;:9;:23;;;;7718:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7799:24;7816:6;7799:16;:24::i;:::-;7833:47;7854:6;7862:9;7873:6;7833:20;:47::i;:::-;7891:21;7915:9;:17;7925:6;7915:17;;;;;;;;;;;;;;;:25;;;;;;;;;;;;7891:49;;;;7975:6;7958:13;:23;;7950:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8110:6;8094:13;:22;8058:9;:17;8068:6;8058:17;;;;;;;;;;;;;;;:25;;;:59;;;;;;;;;;;;;;;;;;8177:6;8137:9;:20;8147:9;8137:20;;;;;;;;;;;;;;;:28;;;:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8217:9;8200:35;;8209:6;8200:35;;;8228:6;8200:35;;;;;;:::i;:::-;;;;;;;;8246:46;8266:6;8274:9;8285:6;8246:19;:46::i;:::-;7511:788;;;;:::o;2668:619:1:-;760:42;2746:26;;:10;:26;;;2743:392;;;2787:14;2804:49;2831:10;;2813:15;:28;;;;:::i;:::-;368:7;2804:8;:49::i;:::-;2787:66;;2880:2;2870:6;:12;2867:258;;2901:21;2955:6;2950:2;:11;;;;:::i;:::-;873:2;713;707:3;230:10;694;;:16;;;;:::i;:::-;:21;;;;:::i;:::-;856:19;;;;:::i;:::-;2925:37;;;;:::i;:::-;2901:61;;2980:20;3019:6;3003:13;:22;;;;:::i;:::-;2980:45;;3078:12;3051:23;760:42;3051:9;:23::i;:::-;:39;;3043:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2867:258;;;2743:392;;550:42;3147:22;;:10;:22;;;:47;;;;1010:42;3173:21;;:10;:21;;;3147:47;3144:137;;;419:10;3221:15;:29;3213:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;3144:137;2668:619;:::o;11378:126:4:-;;;;:::o;12173:120::-;;;;:::o;962:167:7:-;1020:7;1121:1;1117;:5;;;;:::i;:::-;1110:12;;962:167;;;;:::o;7:139:9:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:139::-;343:5;381:6;368:20;359:29;;397:33;424:5;397:33;:::i;:::-;349:87;;;;:::o;442:135::-;486:5;524:6;511:20;502:29;;540:31;565:5;540:31;:::i;:::-;492:85;;;;:::o;583:262::-;642:6;691:2;679:9;670:7;666:23;662:32;659:2;;;707:1;704;697:12;659:2;750:1;775:53;820:7;811:6;800:9;796:22;775:53;:::i;:::-;765:63;;721:117;649:196;;;;:::o;851:407::-;919:6;927;976:2;964:9;955:7;951:23;947:32;944:2;;;992:1;989;982:12;944:2;1035:1;1060:53;1105:7;1096:6;1085:9;1081:22;1060:53;:::i;:::-;1050:63;;1006:117;1162:2;1188:53;1233:7;1224:6;1213:9;1209:22;1188:53;:::i;:::-;1178:63;;1133:118;934:324;;;;;:::o;1264:552::-;1341:6;1349;1357;1406:2;1394:9;1385:7;1381:23;1377:32;1374:2;;;1422:1;1419;1412:12;1374:2;1465:1;1490:53;1535:7;1526:6;1515:9;1511:22;1490:53;:::i;:::-;1480:63;;1436:117;1592:2;1618:53;1663:7;1654:6;1643:9;1639:22;1618:53;:::i;:::-;1608:63;;1563:118;1720:2;1746:53;1791:7;1782:6;1771:9;1767:22;1746:53;:::i;:::-;1736:63;;1691:118;1364:452;;;;;:::o;1822:407::-;1890:6;1898;1947:2;1935:9;1926:7;1922:23;1918:32;1915:2;;;1963:1;1960;1953:12;1915:2;2006:1;2031:53;2076:7;2067:6;2056:9;2052:22;2031:53;:::i;:::-;2021:63;;1977:117;2133:2;2159:53;2204:7;2195:6;2184:9;2180:22;2159:53;:::i;:::-;2149:63;;2104:118;1905:324;;;;;:::o;2235:694::-;2319:6;2327;2335;2343;2392:3;2380:9;2371:7;2367:23;2363:33;2360:2;;;2409:1;2406;2399:12;2360:2;2452:1;2477:53;2522:7;2513:6;2502:9;2498:22;2477:53;:::i;:::-;2467:63;;2423:117;2579:2;2605:51;2648:7;2639:6;2628:9;2624:22;2605:51;:::i;:::-;2595:61;;2550:116;2705:2;2731:53;2776:7;2767:6;2756:9;2752:22;2731:53;:::i;:::-;2721:63;;2676:118;2833:2;2859:53;2904:7;2895:6;2884:9;2880:22;2859:53;:::i;:::-;2849:63;;2804:118;2350:579;;;;;;;:::o;2935:118::-;3022:24;3040:5;3022:24;:::i;:::-;3017:3;3010:37;3000:53;;:::o;3059:109::-;3140:21;3155:5;3140:21;:::i;:::-;3135:3;3128:34;3118:50;;:::o;3174:118::-;3261:24;3279:5;3261:24;:::i;:::-;3256:3;3249:37;3239:53;;:::o;3298:157::-;3403:45;3423:24;3441:5;3423:24;:::i;:::-;3403:45;:::i;:::-;3398:3;3391:58;3381:74;;:::o;3461:364::-;3549:3;3577:39;3610:5;3577:39;:::i;:::-;3632:71;3696:6;3691:3;3632:71;:::i;:::-;3625:78;;3712:52;3757:6;3752:3;3745:4;3738:5;3734:16;3712:52;:::i;:::-;3789:29;3811:6;3789:29;:::i;:::-;3784:3;3780:39;3773:46;;3553:272;;;;;:::o;3831:366::-;3973:3;3994:67;4058:2;4053:3;3994:67;:::i;:::-;3987:74;;4070:93;4159:3;4070:93;:::i;:::-;4188:2;4183:3;4179:12;4172:19;;3977:220;;;:::o;4203:366::-;4345:3;4366:67;4430:2;4425:3;4366:67;:::i;:::-;4359:74;;4442:93;4531:3;4442:93;:::i;:::-;4560:2;4555:3;4551:12;4544:19;;4349:220;;;:::o;4575:402::-;4735:3;4756:85;4838:2;4833:3;4756:85;:::i;:::-;4749:92;;4850:93;4939:3;4850:93;:::i;:::-;4968:2;4963:3;4959:12;4952:19;;4739:238;;;:::o;4983:366::-;5125:3;5146:67;5210:2;5205:3;5146:67;:::i;:::-;5139:74;;5222:93;5311:3;5222:93;:::i;:::-;5340:2;5335:3;5331:12;5324:19;;5129:220;;;:::o;5355:366::-;5497:3;5518:67;5582:2;5577:3;5518:67;:::i;:::-;5511:74;;5594:93;5683:3;5594:93;:::i;:::-;5712:2;5707:3;5703:12;5696:19;;5501:220;;;:::o;5727:366::-;5869:3;5890:67;5954:2;5949:3;5890:67;:::i;:::-;5883:74;;5966:93;6055:3;5966:93;:::i;:::-;6084:2;6079:3;6075:12;6068:19;;5873:220;;;:::o;6099:366::-;6241:3;6262:67;6326:2;6321:3;6262:67;:::i;:::-;6255:74;;6338:93;6427:3;6338:93;:::i;:::-;6456:2;6451:3;6447:12;6440:19;;6245:220;;;:::o;6471:366::-;6613:3;6634:67;6698:2;6693:3;6634:67;:::i;:::-;6627:74;;6710:93;6799:3;6710:93;:::i;:::-;6828:2;6823:3;6819:12;6812:19;;6617:220;;;:::o;6843:366::-;6985:3;7006:67;7070:2;7065:3;7006:67;:::i;:::-;6999:74;;7082:93;7171:3;7082:93;:::i;:::-;7200:2;7195:3;7191:12;7184:19;;6989:220;;;:::o;7215:366::-;7357:3;7378:67;7442:2;7437:3;7378:67;:::i;:::-;7371:74;;7454:93;7543:3;7454:93;:::i;:::-;7572:2;7567:3;7563:12;7556:19;;7361:220;;;:::o;7587:366::-;7729:3;7750:67;7814:2;7809:3;7750:67;:::i;:::-;7743:74;;7826:93;7915:3;7826:93;:::i;:::-;7944:2;7939:3;7935:12;7928:19;;7733:220;;;:::o;7959:366::-;8101:3;8122:67;8186:2;8181:3;8122:67;:::i;:::-;8115:74;;8198:93;8287:3;8198:93;:::i;:::-;8316:2;8311:3;8307:12;8300:19;;8105:220;;;:::o;8331:366::-;8473:3;8494:67;8558:2;8553:3;8494:67;:::i;:::-;8487:74;;8570:93;8659:3;8570:93;:::i;:::-;8688:2;8683:3;8679:12;8672:19;;8477:220;;;:::o;8703:366::-;8845:3;8866:67;8930:2;8925:3;8866:67;:::i;:::-;8859:74;;8942:93;9031:3;8942:93;:::i;:::-;9060:2;9055:3;9051:12;9044:19;;8849:220;;;:::o;9075:118::-;9162:24;9180:5;9162:24;:::i;:::-;9157:3;9150:37;9140:53;;:::o;9199:112::-;9282:22;9298:5;9282:22;:::i;:::-;9277:3;9270:35;9260:51;;:::o;9317:522::-;9530:3;9552:148;9696:3;9552:148;:::i;:::-;9545:155;;9710:75;9781:3;9772:6;9710:75;:::i;:::-;9810:2;9805:3;9801:12;9794:19;;9830:3;9823:10;;9534:305;;;;:::o;9845:222::-;9938:4;9976:2;9965:9;9961:18;9953:26;;9989:71;10057:1;10046:9;10042:17;10033:6;9989:71;:::i;:::-;9943:124;;;;:::o;10073:210::-;10160:4;10198:2;10187:9;10183:18;10175:26;;10211:65;10273:1;10262:9;10258:17;10249:6;10211:65;:::i;:::-;10165:118;;;;:::o;10289:545::-;10462:4;10500:3;10489:9;10485:19;10477:27;;10514:71;10582:1;10571:9;10567:17;10558:6;10514:71;:::i;:::-;10595:68;10659:2;10648:9;10644:18;10635:6;10595:68;:::i;:::-;10673:72;10741:2;10730:9;10726:18;10717:6;10673:72;:::i;:::-;10755;10823:2;10812:9;10808:18;10799:6;10755:72;:::i;:::-;10467:367;;;;;;;:::o;10840:313::-;10953:4;10991:2;10980:9;10976:18;10968:26;;11040:9;11034:4;11030:20;11026:1;11015:9;11011:17;11004:47;11068:78;11141:4;11132:6;11068:78;:::i;:::-;11060:86;;10958:195;;;;:::o;11159:533::-;11328:4;11366:2;11355:9;11351:18;11343:26;;11415:9;11409:4;11405:20;11401:1;11390:9;11386:17;11379:47;11443:78;11516:4;11507:6;11443:78;:::i;:::-;11435:86;;11531:72;11599:2;11588:9;11584:18;11575:6;11531:72;:::i;:::-;11613;11681:2;11670:9;11666:18;11657:6;11613:72;:::i;:::-;11333:359;;;;;;:::o;11698:419::-;11864:4;11902:2;11891:9;11887:18;11879:26;;11951:9;11945:4;11941:20;11937:1;11926:9;11922:17;11915:47;11979:131;12105:4;11979:131;:::i;:::-;11971:139;;11869:248;;;:::o;12123:419::-;12289:4;12327:2;12316:9;12312:18;12304:26;;12376:9;12370:4;12366:20;12362:1;12351:9;12347:17;12340:47;12404:131;12530:4;12404:131;:::i;:::-;12396:139;;12294:248;;;:::o;12548:419::-;12714:4;12752:2;12741:9;12737:18;12729:26;;12801:9;12795:4;12791:20;12787:1;12776:9;12772:17;12765:47;12829:131;12955:4;12829:131;:::i;:::-;12821:139;;12719:248;;;:::o;12973:419::-;13139:4;13177:2;13166:9;13162:18;13154:26;;13226:9;13220:4;13216:20;13212:1;13201:9;13197:17;13190:47;13254:131;13380:4;13254:131;:::i;:::-;13246:139;;13144:248;;;:::o;13398:419::-;13564:4;13602:2;13591:9;13587:18;13579:26;;13651:9;13645:4;13641:20;13637:1;13626:9;13622:17;13615:47;13679:131;13805:4;13679:131;:::i;:::-;13671:139;;13569:248;;;:::o;13823:419::-;13989:4;14027:2;14016:9;14012:18;14004:26;;14076:9;14070:4;14066:20;14062:1;14051:9;14047:17;14040:47;14104:131;14230:4;14104:131;:::i;:::-;14096:139;;13994:248;;;:::o;14248:419::-;14414:4;14452:2;14441:9;14437:18;14429:26;;14501:9;14495:4;14491:20;14487:1;14476:9;14472:17;14465:47;14529:131;14655:4;14529:131;:::i;:::-;14521:139;;14419:248;;;:::o;14673:419::-;14839:4;14877:2;14866:9;14862:18;14854:26;;14926:9;14920:4;14916:20;14912:1;14901:9;14897:17;14890:47;14954:131;15080:4;14954:131;:::i;:::-;14946:139;;14844:248;;;:::o;15098:419::-;15264:4;15302:2;15291:9;15287:18;15279:26;;15351:9;15345:4;15341:20;15337:1;15326:9;15322:17;15315:47;15379:131;15505:4;15379:131;:::i;:::-;15371:139;;15269:248;;;:::o;15523:419::-;15689:4;15727:2;15716:9;15712:18;15704:26;;15776:9;15770:4;15766:20;15762:1;15751:9;15747:17;15740:47;15804:131;15930:4;15804:131;:::i;:::-;15796:139;;15694:248;;;:::o;15948:419::-;16114:4;16152:2;16141:9;16137:18;16129:26;;16201:9;16195:4;16191:20;16187:1;16176:9;16172:17;16165:47;16229:131;16355:4;16229:131;:::i;:::-;16221:139;;16119:248;;;:::o;16373:419::-;16539:4;16577:2;16566:9;16562:18;16554:26;;16626:9;16620:4;16616:20;16612:1;16601:9;16597:17;16590:47;16654:131;16780:4;16654:131;:::i;:::-;16646:139;;16544:248;;;:::o;16798:419::-;16964:4;17002:2;16991:9;16987:18;16979:26;;17051:9;17045:4;17041:20;17037:1;17026:9;17022:17;17015:47;17079:131;17205:4;17079:131;:::i;:::-;17071:139;;16969:248;;;:::o;17223:222::-;17316:4;17354:2;17343:9;17339:18;17331:26;;17367:71;17435:1;17424:9;17420:17;17411:6;17367:71;:::i;:::-;17321:124;;;;:::o;17451:214::-;17540:4;17578:2;17567:9;17563:18;17555:26;;17591:67;17655:1;17644:9;17640:17;17631:6;17591:67;:::i;:::-;17545:120;;;;:::o;17671:99::-;17723:6;17757:5;17751:12;17741:22;;17730:40;;;:::o;17776:169::-;17860:11;17894:6;17889:3;17882:19;17934:4;17929:3;17925:14;17910:29;;17872:73;;;;:::o;17951:148::-;18053:11;18090:3;18075:18;;18065:34;;;;:::o;18105:303::-;18145:3;18164:20;18182:1;18164:20;:::i;:::-;18159:25;;18198:20;18216:1;18198:20;:::i;:::-;18193:25;;18350:1;18284:64;18280:72;18277:1;18274:79;18271:2;;;18356:18;;:::i;:::-;18271:2;18400:1;18397;18393:9;18386:16;;18149:259;;;;:::o;18414:305::-;18454:3;18473:20;18491:1;18473:20;:::i;:::-;18468:25;;18507:20;18525:1;18507:20;:::i;:::-;18502:25;;18661:1;18593:66;18589:74;18586:1;18583:81;18580:2;;;18667:18;;:::i;:::-;18580:2;18711:1;18708;18704:9;18697:16;;18458:261;;;;:::o;18725:185::-;18765:1;18782:20;18800:1;18782:20;:::i;:::-;18777:25;;18816:20;18834:1;18816:20;:::i;:::-;18811:25;;18855:1;18845:2;;18860:18;;:::i;:::-;18845:2;18902:1;18899;18895:9;18890:14;;18767:143;;;;:::o;18916:348::-;18956:7;18979:20;18997:1;18979:20;:::i;:::-;18974:25;;19013:20;19031:1;19013:20;:::i;:::-;19008:25;;19201:1;19133:66;19129:74;19126:1;19123:81;19118:1;19111:9;19104:17;19100:105;19097:2;;;19208:18;;:::i;:::-;19097:2;19256:1;19253;19249:9;19238:20;;18964:300;;;;:::o;19270:191::-;19310:4;19330:20;19348:1;19330:20;:::i;:::-;19325:25;;19364:20;19382:1;19364:20;:::i;:::-;19359:25;;19403:1;19400;19397:8;19394:2;;;19408:18;;:::i;:::-;19394:2;19453:1;19450;19446:9;19438:17;;19315:146;;;;:::o;19467:96::-;19504:7;19533:24;19551:5;19533:24;:::i;:::-;19522:35;;19512:51;;;:::o;19569:90::-;19603:7;19646:5;19639:13;19632:21;19621:32;;19611:48;;;:::o;19665:77::-;19702:7;19731:5;19720:16;;19710:32;;;:::o;19748:126::-;19785:7;19825:42;19818:5;19814:54;19803:65;;19793:81;;;:::o;19880:148::-;19917:7;19957:64;19950:5;19946:76;19935:87;;19925:103;;;:::o;20034:77::-;20071:7;20100:5;20089:16;;20079:32;;;:::o;20117:86::-;20152:7;20192:4;20185:5;20181:16;20170:27;;20160:43;;;:::o;20209:307::-;20277:1;20287:113;20301:6;20298:1;20295:13;20287:113;;;20386:1;20381:3;20377:11;20371:18;20367:1;20362:3;20358:11;20351:39;20323:2;20320:1;20316:10;20311:15;;20287:113;;;20418:6;20415:1;20412:13;20409:2;;;20498:1;20489:6;20484:3;20480:16;20473:27;20409:2;20258:258;;;;:::o;20522:320::-;20566:6;20603:1;20597:4;20593:12;20583:22;;20650:1;20644:4;20640:12;20671:18;20661:2;;20727:4;20719:6;20715:17;20705:27;;20661:2;20789;20781:6;20778:14;20758:18;20755:38;20752:2;;;20808:18;;:::i;:::-;20752:2;20573:269;;;;:::o;20848:79::-;20887:7;20916:5;20905:16;;20895:32;;;:::o;20933:180::-;20981:77;20978:1;20971:88;21078:4;21075:1;21068:15;21102:4;21099:1;21092:15;21119:180;21167:77;21164:1;21157:88;21264:4;21261:1;21254:15;21288:4;21285:1;21278:15;21305:180;21353:77;21350:1;21343:88;21450:4;21447:1;21440:15;21474:4;21471:1;21464:15;21491:102;21532:6;21583:2;21579:7;21574:2;21567:5;21563:14;21559:28;21549:38;;21539:54;;;:::o;21599:171::-;21739:23;21735:1;21727:6;21723:14;21716:47;21705:65;:::o;21776:222::-;21916:34;21912:1;21904:6;21900:14;21893:58;21985:5;21980:2;21972:6;21968:15;21961:30;21882:116;:::o;22004:214::-;22144:66;22140:1;22132:6;22128:14;22121:90;22110:108;:::o;22224:221::-;22364:34;22360:1;22352:6;22348:14;22341:58;22433:4;22428:2;22420:6;22416:15;22409:29;22330:115;:::o;22451:225::-;22591:34;22587:1;22579:6;22575:14;22568:58;22660:8;22655:2;22647:6;22643:15;22636:33;22557:119;:::o;22682:171::-;22822:23;22818:1;22810:6;22806:14;22799:47;22788:65;:::o;22859:165::-;22999:17;22995:1;22987:6;22983:14;22976:41;22965:59;:::o;23030:164::-;23170:16;23166:1;23158:6;23154:14;23147:40;23136:58;:::o;23200:227::-;23340:34;23336:1;23328:6;23324:14;23317:58;23409:10;23404:2;23396:6;23392:15;23385:35;23306:121;:::o;23433:165::-;23573:17;23569:1;23561:6;23557:14;23550:41;23539:59;:::o;23604:224::-;23744:34;23740:1;23732:6;23728:14;23721:58;23813:7;23808:2;23800:6;23796:15;23789:32;23710:118;:::o;23834:223::-;23974:34;23970:1;23962:6;23958:14;23951:58;24043:6;24038:2;24030:6;24026:15;24019:31;23940:117;:::o;24063:165::-;24203:17;24199:1;24191:6;24187:14;24180:41;24169:59;:::o;24234:224::-;24374:34;24370:1;24362:6;24358:14;24351:58;24443:7;24438:2;24430:6;24426:15;24419:32;24340:118;:::o;24464:122::-;24537:24;24555:5;24537:24;:::i;:::-;24530:5;24527:35;24517:2;;24576:1;24573;24566:12;24517:2;24507:79;:::o;24592:122::-;24665:24;24683:5;24665:24;:::i;:::-;24658:5;24655:35;24645:2;;24704:1;24701;24694:12;24645:2;24635:79;:::o;24720:122::-;24793:24;24811:5;24793:24;:::i;:::-;24786:5;24783:35;24773:2;;24832:1;24829;24822:12;24773:2;24763:79;:::o;24848:118::-;24919:22;24935:5;24919:22;:::i;:::-;24912:5;24909:33;24899:2;;24956:1;24953;24946:12;24899:2;24889:77;:::o

Swarm Source

ipfs://1d6eed177afadf09d818d7b10f142984872cea1cf4a05f7b2e6881cc7aa1296f
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.