ETH Price: $3,338.33 (-1.77%)

Token

Wrapped YFI (wYFI)
 

Overview

Max Total Supply

2,551.980143920687495 wYFI

Holders

42

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
11.240086741914192689 wYFI

Value
$0.00
0x047244c157b7629c6b2a37738553667ce80fb82d
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:
WrappedYFI

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-01-05
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != 0x0 && codehash != accountHash);
    }
}

library SafeERC20 {
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function safeApprove(IERC20 token, address spender, uint value) internal {
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }
    function callOptionalReturn(IERC20 token, bytes memory data) private {
        require(address(token).isContract(), "SafeERC20: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

contract WrappedYFI {
    using SafeERC20 for IERC20;

    /// @notice EIP-20 token name for this token
    string public constant name = "Wrapped YFI";

    /// @notice EIP-20 token symbol for this token
    string public constant symbol = "wYFI";

    /// @notice EIP-20 token decimals for this token
    uint8 public constant decimals = 18;

    /// @notice Total number of tokens in circulation
    uint public totalSupply = 0;
    
    IERC20 public constant YFI = IERC20(0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e);
    
    address public governance;
    address public pendingGovernance;
    mapping(address => bool) public burners;

    mapping(address => mapping (address => uint)) internal allowances;
    mapping(address => uint) internal balances;

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

    /// @notice The EIP-712 typehash for the permit struct used by the contract
    bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint value,uint nonce,uint deadline)");

    /// @notice A record of states for signing / validating signatures
    mapping (address => uint) public nonces;
    
    function mint(address account, uint amount) public {
        require(burners[msg.sender], "!burner");
        _mint(account, amount);
    }
    
    function burn(address account, uint amount) public {
        require(burners[msg.sender], "!burner");
        _burn(account, amount);
    }
    
    function setGovernance(address _governance) public {
        require(msg.sender == governance, "!governance");
        pendingGovernance = _governance;
    }
    
    function acceptGovernance() public {
        require(msg.sender == pendingGovernance, "!pendingGovernance");
        governance = pendingGovernance;
    }
    
    function addBurner(address _burner) public {
        require(msg.sender == governance, "!governance");
        burners[_burner] = true;
    }
    
    function removeBurner(address _burner) public {
        require(msg.sender == governance, "!governance");
        burners[_burner] = false;
    }

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

    /// @notice The standard EIP-20 transfer event
    event Transfer(address indexed from, address indexed to, uint amount);

    /// @notice The standard EIP-20 approval event
    event Approval(address indexed owner, address indexed spender, uint amount);
    
    constructor () {
        DOMAINSEPARATOR = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), _getChainId(), address(this)));
        governance = msg.sender;
    }
    
    function _mint(address dst, uint amount) internal {
        // mint the amount
        totalSupply += amount;
        // transfer the amount to the recipient
        balances[dst] += amount;
        emit Transfer(address(0), dst, amount);
    }
    
    function _burn(address dst, uint amount) internal {
        // burn the amount
        totalSupply -= amount;
        // transfer the amount from the recipient
        balances[dst] -= amount;
        emit Transfer(dst, address(0), amount);
    }
    
    function depositAll() external {
        _deposit(YFI.balanceOf(msg.sender));
    }
    
    function deposit(uint amount) external {
        _deposit(amount);
    }
    
    function _deposit(uint amount) internal {
        YFI.safeTransferFrom(msg.sender, address(this), amount);
        _mint(msg.sender, amount * 1e3);
    }

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

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

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

    /**
     * @notice Triggers an approval from owner to spends
     * @param owner The address to approve from
     * @param spender The address to be approved
     * @param amount The number of tokens that are approved (2^256-1 means infinite)
     * @param deadline The time at which to expire the signature
     * @param v The recovery byte of the signature
     * @param r Half of the ECDSA signature pair
     * @param s Half of the ECDSA signature pair
     */
    function permit(address owner, address spender, uint amount, uint deadline, uint8 v, bytes32 r, bytes32 s) external {
        bytes32 structHash = keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, amount, nonces[owner]++, deadline));
        bytes32 digest = keccak256(abi.encodePacked("\x19\x01", DOMAINSEPARATOR, structHash));
        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "permit: signature");
        require(signatory == owner, "permit: unauthorized");
        require(block.timestamp <= deadline, "permit: expired");

        allowances[owner][spender] = amount;

        emit Approval(owner, spender, amount);
    }

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

    /**
     * @notice Transfer `amount` tokens from `msg.sender` to `dst`
     * @param dst The address of the destination account
     * @param amount The number of tokens to transfer
     * @return Whether or not the transfer succeeded
     */
    function transfer(address dst, uint amount) external returns (bool) {
        _transferTokens(msg.sender, dst, amount);
        return true;
    }

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

        if (spender != src && spenderAllowance != type(uint).max) {
            uint newAllowance = spenderAllowance - amount;
            allowances[src][spender] = newAllowance;

            emit Approval(src, spender, newAllowance);
        }

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

    function _transferTokens(address src, address dst, uint amount) internal {
        balances[src] -= amount;
        balances[dst] += amount;
        
        emit Transfer(src, dst, amount);
    }

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAINSEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"YFI","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_burner","type":"address"}],"name":"addBurner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","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":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"burners","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depositAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingGovernance","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_burner","type":"address"}],"name":"removeBurner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_governance","type":"address"}],"name":"setGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60a06040526000805534801561001457600080fd5b5060408051808201909152600b81526a577261707065642059464960a81b6020909101527f797cfab58fcb15f590eb8e4252d5c228ff88f94f907e119e80c4393a946e8f357f53a737b8af797886e0475377ed8434732dcbb9181b37fdccb7d7ac399f8594ff6100826100c8565b3060405160200161009694939291906100cc565b60408051601f198184030181529190528051602090910120608052600180546001600160a01b031916331790556100f0565b4690565b938452602084019290925260408301526001600160a01b0316606082015260800190565b6080516112ed61011260003960008181610445015261079b01526112ed6000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806370a08231116100de578063b6b55f2511610097578063dd62ed3e11610071578063dd62ed3e14610313578063de5f626814610326578063f39c38a01461032e578063f44637ba146103365761018e565b8063b6b55f25146102e5578063d505accf146102f8578063d82d41ac1461030b5761018e565b806370a082311461027e5780637ecebe001461029157806395d89b41146102a45780639dc29fac146102ac578063a9059cbb146102bf578063ab033ea9146102d25761018e565b806320606b701161014b57806330adf81f1161012557806330adf81f14610239578063313ce5671461024157806340c10f19146102565780635aa6e675146102695761018e565b806320606b7014610216578063238efcbc1461021e57806323b872dd146102265761018e565b8063028468581461019357806303d41e0e146101a857806306fdde03146101d1578063095ea7b3146101e65780631778e29c146101f957806318160ddd1461020e575b600080fd5b6101a66101a1366004610dd4565b610349565b005b6101bb6101b6366004610dd4565b61039d565b6040516101c89190610fbb565b60405180910390f35b6101d96103b2565b6040516101c89190611021565b6101bb6101f4366004610ed3565b6103d9565b610201610443565b6040516101c89190610fc6565b610201610467565b61020161046d565b6101a6610491565b6101bb610234366004610e27565b6104df565b6102016105ab565b6102496105cf565b6040516101c891906111fe565b6101a6610264366004610ed3565b6105d4565b610271610611565b6040516101c89190610f83565b61020161028c366004610dd4565b610620565b61020161029f366004610dd4565b61063f565b6101d9610651565b6101a66102ba366004610ed3565b610671565b6101bb6102cd366004610ed3565b6106aa565b6101a66102e0366004610dd4565b6106c0565b6101a66102f3366004610f1c565b61070c565b6101a6610306366004610e62565b610718565b61027161091e565b610201610321366004610df5565b610936565b6101a6610961565b6102716109f3565b6101a6610344366004610dd4565b610a02565b6001546001600160a01b0316331461037c5760405162461bcd60e51b815260040161037390611054565b60405180910390fd5b6001600160a01b03166000908152600360205260409020805460ff19169055565b60036020526000908152604090205460ff1681565b6040518060400160405280600b81526020016a577261707065642059464960a81b81525081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610432908690610fc6565b60405180910390a350600192915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60005481565b7f797cfab58fcb15f590eb8e4252d5c228ff88f94f907e119e80c4393a946e8f3581565b6002546001600160a01b031633146104bb5760405162461bcd60e51b8152600401610373906110d7565b600254600180546001600160a01b0319166001600160a01b03909216919091179055565b6001600160a01b03831660008181526004602090815260408083203380855292528220549192909190821480159061051957506000198114155b1561059457600061052a8583611243565b6001600160a01b03808916600081815260046020908152604080832094891680845294909152908190208490555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061058a908590610fc6565b60405180910390a3505b61059f868686610a50565b50600195945050505050565b7f5fae9ec55a1e547936e0e74d606b44cd5f912f9adcd0bba561fea62d570259e981565b601281565b3360009081526003602052604090205460ff166106035760405162461bcd60e51b8152600401610373906111a6565b61060d8282610afc565b5050565b6001546001600160a01b031681565b6001600160a01b0381166000908152600560205260409020545b919050565b60066020526000908152604090205481565b604051806040016040528060048152602001637759464960e01b81525081565b3360009081526003602052604090205460ff166106a05760405162461bcd60e51b8152600401610373906111a6565b61060d8282610b89565b60006106b7338484610a50565b50600192915050565b6001546001600160a01b031633146106ea5760405162461bcd60e51b815260040161037390611054565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b61071581610c0a565b50565b6001600160a01b038716600090815260066020526040812080547f5fae9ec55a1e547936e0e74d606b44cd5f912f9adcd0bba561fea62d570259e9918a918a918a91908661076583611286565b919050558960405160200161077f96959493929190610fcf565b60405160208183030381529060405280519060200120905060007f0000000000000000000000000000000000000000000000000000000000000000826040516020016107cc929190610f68565b6040516020818303038152906040528051906020012090506000600182878787604051600081526020016040526040516108099493929190611003565b6020604051602081039080840390855afa15801561082b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661085e5760405162461bcd60e51b815260040161037390611131565b896001600160a01b0316816001600160a01b03161461088f5760405162461bcd60e51b815260040161037390611103565b864211156108af5760405162461bcd60e51b8152600401610373906110ae565b6001600160a01b03808b166000818152600460209081526040808320948e1680845294909152908190208b9055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061090a908c90610fc6565b60405180910390a350505050505050505050565b730bc529c00c6401aef6d220be8c6ea1667f6ad93e81565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6040516370a0823160e01b81526109f190730bc529c00c6401aef6d220be8c6ea1667f6ad93e906370a082319061099c903390600401610f83565b60206040518083038186803b1580156109b457600080fd5b505afa1580156109c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ec9190610f34565b610c0a565b565b6002546001600160a01b031681565b6001546001600160a01b03163314610a2c5760405162461bcd60e51b815260040161037390611054565b6001600160a01b03166000908152600360205260409020805460ff19166001179055565b6001600160a01b03831660009081526005602052604081208054839290610a78908490611243565b90915550506001600160a01b03821660009081526005602052604081208054839290610aa590849061120c565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610aef9190610fc6565b60405180910390a3505050565b80600080828254610b0d919061120c565b90915550506001600160a01b03821660009081526005602052604081208054839290610b3a90849061120c565b90915550506040516001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b7d908590610fc6565b60405180910390a35050565b80600080828254610b9a9190611243565b90915550506001600160a01b03821660009081526005602052604081208054839290610bc7908490611243565b90915550506040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b7d908590610fc6565b610c2a730bc529c00c6401aef6d220be8c6ea1667f6ad93e333084610c3f565b61071533610c3a836103e8611224565b610afc565b610c97846323b872dd60e01b858585604051602401610c6093929190610f97565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610c9d565b50505050565b610caf826001600160a01b0316610d81565b610ccb5760405162461bcd60e51b8152600401610373906111c7565b600080836001600160a01b031683604051610ce69190610f4c565b6000604051808303816000865af19150503d8060008114610d23576040519150601f19603f3d011682016040523d82523d6000602084013e610d28565b606091505b509150915081610d4a5760405162461bcd60e51b815260040161037390611079565b805115610c975780806020019051810190610d659190610efc565b610c975760405162461bcd60e51b81526004016103739061115c565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708115801590610db55750808214155b949350505050565b80356001600160a01b038116811461063a57600080fd5b600060208284031215610de5578081fd5b610dee82610dbd565b9392505050565b60008060408385031215610e07578081fd5b610e1083610dbd565b9150610e1e60208401610dbd565b90509250929050565b600080600060608486031215610e3b578081fd5b610e4484610dbd565b9250610e5260208501610dbd565b9150604084013590509250925092565b600080600080600080600060e0888a031215610e7c578283fd5b610e8588610dbd565b9650610e9360208901610dbd565b95506040880135945060608801359350608088013560ff81168114610eb6578384fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610ee5578182fd5b610eee83610dbd565b946020939093013593505050565b600060208284031215610f0d578081fd5b81518015158114610dee578182fd5b600060208284031215610f2d578081fd5b5035919050565b600060208284031215610f45578081fd5b5051919050565b60008251610f5e81846020870161125a565b9190910192915050565b61190160f01b81526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b901515815260200190565b90815260200190565b9586526001600160a01b0394851660208701529290931660408501526060840152608083019190915260a082015260c00190565b93845260ff9290921660208401526040830152606082015260800190565b600060208252825180602084015261104081604085016020870161125a565b601f01601f19169190910160400192915050565b6020808252600b908201526a21676f7665726e616e636560a81b604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b6020808252600f908201526e1c195c9b5a5d0e88195e1c1a5c9959608a1b604082015260600190565b6020808252601290820152712170656e64696e67476f7665726e616e636560701b604082015260600190565b6020808252601490820152731c195c9b5a5d0e881d5b985d5d1a1bdc9a5e995960621b604082015260600190565b6020808252601190820152707065726d69743a207369676e617475726560781b604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526007908201526610b13ab93732b960c91b604082015260600190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b60ff91909116815260200190565b6000821982111561121f5761121f6112a1565b500190565b600081600019048311821515161561123e5761123e6112a1565b500290565b600082821015611255576112556112a1565b500390565b60005b8381101561127557818101518382015260200161125d565b83811115610c975750506000910152565b600060001982141561129a5761129a6112a1565b5060010190565b634e487b7160e01b600052601160045260246000fdfea26469706673582212207c847a66516d273288a0a6849f69743af950f8e29d2f84dcf75f79b6a715eb3864736f6c63430008000033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061018e5760003560e01c806370a08231116100de578063b6b55f2511610097578063dd62ed3e11610071578063dd62ed3e14610313578063de5f626814610326578063f39c38a01461032e578063f44637ba146103365761018e565b8063b6b55f25146102e5578063d505accf146102f8578063d82d41ac1461030b5761018e565b806370a082311461027e5780637ecebe001461029157806395d89b41146102a45780639dc29fac146102ac578063a9059cbb146102bf578063ab033ea9146102d25761018e565b806320606b701161014b57806330adf81f1161012557806330adf81f14610239578063313ce5671461024157806340c10f19146102565780635aa6e675146102695761018e565b806320606b7014610216578063238efcbc1461021e57806323b872dd146102265761018e565b8063028468581461019357806303d41e0e146101a857806306fdde03146101d1578063095ea7b3146101e65780631778e29c146101f957806318160ddd1461020e575b600080fd5b6101a66101a1366004610dd4565b610349565b005b6101bb6101b6366004610dd4565b61039d565b6040516101c89190610fbb565b60405180910390f35b6101d96103b2565b6040516101c89190611021565b6101bb6101f4366004610ed3565b6103d9565b610201610443565b6040516101c89190610fc6565b610201610467565b61020161046d565b6101a6610491565b6101bb610234366004610e27565b6104df565b6102016105ab565b6102496105cf565b6040516101c891906111fe565b6101a6610264366004610ed3565b6105d4565b610271610611565b6040516101c89190610f83565b61020161028c366004610dd4565b610620565b61020161029f366004610dd4565b61063f565b6101d9610651565b6101a66102ba366004610ed3565b610671565b6101bb6102cd366004610ed3565b6106aa565b6101a66102e0366004610dd4565b6106c0565b6101a66102f3366004610f1c565b61070c565b6101a6610306366004610e62565b610718565b61027161091e565b610201610321366004610df5565b610936565b6101a6610961565b6102716109f3565b6101a6610344366004610dd4565b610a02565b6001546001600160a01b0316331461037c5760405162461bcd60e51b815260040161037390611054565b60405180910390fd5b6001600160a01b03166000908152600360205260409020805460ff19169055565b60036020526000908152604090205460ff1681565b6040518060400160405280600b81526020016a577261707065642059464960a81b81525081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610432908690610fc6565b60405180910390a350600192915050565b7f402ea8e0c0709618717df35c9b3fdde654338cbe0e1d04a6c689327bc894f59e81565b60005481565b7f797cfab58fcb15f590eb8e4252d5c228ff88f94f907e119e80c4393a946e8f3581565b6002546001600160a01b031633146104bb5760405162461bcd60e51b8152600401610373906110d7565b600254600180546001600160a01b0319166001600160a01b03909216919091179055565b6001600160a01b03831660008181526004602090815260408083203380855292528220549192909190821480159061051957506000198114155b1561059457600061052a8583611243565b6001600160a01b03808916600081815260046020908152604080832094891680845294909152908190208490555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061058a908590610fc6565b60405180910390a3505b61059f868686610a50565b50600195945050505050565b7f5fae9ec55a1e547936e0e74d606b44cd5f912f9adcd0bba561fea62d570259e981565b601281565b3360009081526003602052604090205460ff166106035760405162461bcd60e51b8152600401610373906111a6565b61060d8282610afc565b5050565b6001546001600160a01b031681565b6001600160a01b0381166000908152600560205260409020545b919050565b60066020526000908152604090205481565b604051806040016040528060048152602001637759464960e01b81525081565b3360009081526003602052604090205460ff166106a05760405162461bcd60e51b8152600401610373906111a6565b61060d8282610b89565b60006106b7338484610a50565b50600192915050565b6001546001600160a01b031633146106ea5760405162461bcd60e51b815260040161037390611054565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b61071581610c0a565b50565b6001600160a01b038716600090815260066020526040812080547f5fae9ec55a1e547936e0e74d606b44cd5f912f9adcd0bba561fea62d570259e9918a918a918a91908661076583611286565b919050558960405160200161077f96959493929190610fcf565b60405160208183030381529060405280519060200120905060007f402ea8e0c0709618717df35c9b3fdde654338cbe0e1d04a6c689327bc894f59e826040516020016107cc929190610f68565b6040516020818303038152906040528051906020012090506000600182878787604051600081526020016040526040516108099493929190611003565b6020604051602081039080840390855afa15801561082b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661085e5760405162461bcd60e51b815260040161037390611131565b896001600160a01b0316816001600160a01b03161461088f5760405162461bcd60e51b815260040161037390611103565b864211156108af5760405162461bcd60e51b8152600401610373906110ae565b6001600160a01b03808b166000818152600460209081526040808320948e1680845294909152908190208b9055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061090a908c90610fc6565b60405180910390a350505050505050505050565b730bc529c00c6401aef6d220be8c6ea1667f6ad93e81565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6040516370a0823160e01b81526109f190730bc529c00c6401aef6d220be8c6ea1667f6ad93e906370a082319061099c903390600401610f83565b60206040518083038186803b1580156109b457600080fd5b505afa1580156109c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ec9190610f34565b610c0a565b565b6002546001600160a01b031681565b6001546001600160a01b03163314610a2c5760405162461bcd60e51b815260040161037390611054565b6001600160a01b03166000908152600360205260409020805460ff19166001179055565b6001600160a01b03831660009081526005602052604081208054839290610a78908490611243565b90915550506001600160a01b03821660009081526005602052604081208054839290610aa590849061120c565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610aef9190610fc6565b60405180910390a3505050565b80600080828254610b0d919061120c565b90915550506001600160a01b03821660009081526005602052604081208054839290610b3a90849061120c565b90915550506040516001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b7d908590610fc6565b60405180910390a35050565b80600080828254610b9a9190611243565b90915550506001600160a01b03821660009081526005602052604081208054839290610bc7908490611243565b90915550506040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b7d908590610fc6565b610c2a730bc529c00c6401aef6d220be8c6ea1667f6ad93e333084610c3f565b61071533610c3a836103e8611224565b610afc565b610c97846323b872dd60e01b858585604051602401610c6093929190610f97565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610c9d565b50505050565b610caf826001600160a01b0316610d81565b610ccb5760405162461bcd60e51b8152600401610373906111c7565b600080836001600160a01b031683604051610ce69190610f4c565b6000604051808303816000865af19150503d8060008114610d23576040519150601f19603f3d011682016040523d82523d6000602084013e610d28565b606091505b509150915081610d4a5760405162461bcd60e51b815260040161037390611079565b805115610c975780806020019051810190610d659190610efc565b610c975760405162461bcd60e51b81526004016103739061115c565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708115801590610db55750808214155b949350505050565b80356001600160a01b038116811461063a57600080fd5b600060208284031215610de5578081fd5b610dee82610dbd565b9392505050565b60008060408385031215610e07578081fd5b610e1083610dbd565b9150610e1e60208401610dbd565b90509250929050565b600080600060608486031215610e3b578081fd5b610e4484610dbd565b9250610e5260208501610dbd565b9150604084013590509250925092565b600080600080600080600060e0888a031215610e7c578283fd5b610e8588610dbd565b9650610e9360208901610dbd565b95506040880135945060608801359350608088013560ff81168114610eb6578384fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610ee5578182fd5b610eee83610dbd565b946020939093013593505050565b600060208284031215610f0d578081fd5b81518015158114610dee578182fd5b600060208284031215610f2d578081fd5b5035919050565b600060208284031215610f45578081fd5b5051919050565b60008251610f5e81846020870161125a565b9190910192915050565b61190160f01b81526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b901515815260200190565b90815260200190565b9586526001600160a01b0394851660208701529290931660408501526060840152608083019190915260a082015260c00190565b93845260ff9290921660208401526040830152606082015260800190565b600060208252825180602084015261104081604085016020870161125a565b601f01601f19169190910160400192915050565b6020808252600b908201526a21676f7665726e616e636560a81b604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b6020808252600f908201526e1c195c9b5a5d0e88195e1c1a5c9959608a1b604082015260600190565b6020808252601290820152712170656e64696e67476f7665726e616e636560701b604082015260600190565b6020808252601490820152731c195c9b5a5d0e881d5b985d5d1a1bdc9a5e995960621b604082015260600190565b6020808252601190820152707065726d69743a207369676e617475726560781b604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526007908201526610b13ab93732b960c91b604082015260600190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b60ff91909116815260200190565b6000821982111561121f5761121f6112a1565b500190565b600081600019048311821515161561123e5761123e6112a1565b500290565b600082821015611255576112556112a1565b500390565b60005b8381101561127557818101518382015260200161125d565b83811115610c975750506000910152565b600060001982141561129a5761129a6112a1565b5060010190565b634e487b7160e01b600052601160045260246000fdfea26469706673582212207c847a66516d273288a0a6849f69743af950f8e29d2f84dcf75f79b6a715eb3864736f6c63430008000033

Deployed Bytecode Sourcemap

2603:8035:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4779:148;;;;;;:::i;:::-;;:::i;:::-;;3222:39;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2715:43;;;:::i;:::-;;;;;;;:::i;7344:207::-;;;;;;:::i;:::-;;:::i;3583:40::-;;;:::i;:::-;;;;;;;:::i;3019:27::-;;;:::i;3457:119::-;;;:::i;4454:157::-;;;:::i;9754:513::-;;;;;;:::i;:::-;;:::i;3713:128::-;;;:::i;2920:35::-;;;:::i;:::-;;;;;;;:::i;3974:142::-;;;;;;:::i;:::-;;:::i;3151:25::-;;;:::i;:::-;;;;;;;:::i;8929:108::-;;;;;;:::i;:::-;;:::i;3922:39::-;;;;;;:::i;:::-;;:::i;2819:38::-;;;:::i;4128:142::-;;;;;;:::i;:::-;;:::i;9298:149::-;;;;;;:::i;:::-;;:::i;4282:160::-;;;;;;:::i;:::-;;:::i;6187:74::-;;;;;;:::i;:::-;;:::i;8038:688::-;;;;;;:::i;:::-;;:::i;3059:79::-;;;:::i;6733:136::-;;;;;;:::i;:::-;;:::i;6090:85::-;;;:::i;3183:32::-;;;:::i;4623:144::-;;;;;;:::i;:::-;;:::i;4779:148::-;4858:10;;-1:-1:-1;;;;;4858:10:0;4844;:24;4836:48;;;;-1:-1:-1;;;4836:48:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;4895:16:0;4914:5;4895:16;;;:7;:16;;;;;:24;;-1:-1:-1;;4895:24:0;;;4779:148::o;3222:39::-;;;;;;;;;;;;;;;:::o;2715:43::-;;;;;;;;;;;;;;-1:-1:-1;;;2715:43:0;;;;:::o;7344:207::-;7437:10;7409:4;7426:22;;;:10;:22;;;;;;;;-1:-1:-1;;;;;7426:31:0;;;;;;;;;;:40;;;7484:37;7409:4;;7426:31;;7484:37;;;;7460:6;;7484:37;:::i;:::-;;;;;;;;-1:-1:-1;7539:4:0;7344:207;;;;:::o;3583:40::-;;;:::o;3019:27::-;;;;:::o;3457:119::-;3499:77;3457:119;:::o;4454:157::-;4522:17;;-1:-1:-1;;;;;4522:17:0;4508:10;:31;4500:62;;;;-1:-1:-1;;;4500:62:0;;;;;;;:::i;:::-;4586:17;;;4573:30;;-1:-1:-1;;;;;;4573:30:0;-1:-1:-1;;;;;4586:17:0;;;4573:30;;;;;;4454:157::o;9754:513::-;-1:-1:-1;;;;;9913:15:0;;9833:4;9913:15;;;:10;:15;;;;;;;;9868:10;9913:24;;;;;;;;9833:4;;9868:10;;9913:24;9954:14;;;;;:52;;;-1:-1:-1;;9972:16:0;:34;;9954:52;9950:242;;;10023:17;10043:25;10062:6;10043:16;:25;:::i;:::-;-1:-1:-1;;;;;10083:15:0;;;;;;;:10;:15;;;;;;;;:24;;;;;;;;;;;;;;:39;;;10144:36;10023:45;;-1:-1:-1;10083:24:0;;10144:36;;;;10023:45;;10144:36;:::i;:::-;;;;;;;;9950:242;;10204:33;10220:3;10225;10230:6;10204:15;:33::i;:::-;-1:-1:-1;10255:4:0;;9754:513;-1:-1:-1;;;;;9754:513:0:o;3713:128::-;3755:86;3713:128;:::o;2920:35::-;2953:2;2920:35;:::o;3974:142::-;4052:10;4044:19;;;;:7;:19;;;;;;;;4036:39;;;;-1:-1:-1;;;4036:39:0;;;;;;;:::i;:::-;4086:22;4092:7;4101:6;4086:5;:22::i;:::-;3974:142;;:::o;3151:25::-;;;-1:-1:-1;;;;;3151:25:0;;:::o;8929:108::-;-1:-1:-1;;;;;9012:17:0;;8988:4;9012:17;;;:8;:17;;;;;;8929:108;;;;:::o;3922:39::-;;;;;;;;;;;;;:::o;2819:38::-;;;;;;;;;;;;;;-1:-1:-1;;;2819:38:0;;;;:::o;4128:142::-;4206:10;4198:19;;;;:7;:19;;;;;;;;4190:39;;;;-1:-1:-1;;;4190:39:0;;;;;;;:::i;:::-;4240:22;4246:7;4255:6;4240:5;:22::i;9298:149::-;9360:4;9377:40;9393:10;9405:3;9410:6;9377:15;:40::i;:::-;-1:-1:-1;9435:4:0;9298:149;;;;:::o;4282:160::-;4366:10;;-1:-1:-1;;;;;4366:10:0;4352;:24;4344:48;;;;-1:-1:-1;;;4344:48:0;;;;;;;:::i;:::-;4403:17;:31;;-1:-1:-1;;;;;;4403:31:0;-1:-1:-1;;;;;4403:31:0;;;;;;;;;;4282:160::o;6187:74::-;6237:16;6246:6;6237:8;:16::i;:::-;6187:74;:::o;8038:688::-;-1:-1:-1;;;;;8248:13:0;;8165:18;8248:13;;;:6;:13;;;;;:15;;3755:86;;8224:5;;8231:7;;8240:6;;8248:15;8165:18;8248:15;;;:::i;:::-;;;;;8265:8;8196:78;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;8186:89;;;;;;8165:110;;8286:14;8342:15;8359:10;8313:57;;;;;;;;;:::i;:::-;;;;;;;;;;;;;8303:68;;;;;;8286:85;;8382:17;8402:26;8412:6;8420:1;8423;8426;8402:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8402:26:0;;-1:-1:-1;;8402:26:0;;;-1:-1:-1;;;;;;;8447:23:0;;8439:53;;;;-1:-1:-1;;;8439:53:0;;;;;;;:::i;:::-;8524:5;-1:-1:-1;;;;;8511:18:0;:9;-1:-1:-1;;;;;8511:18:0;;8503:51;;;;-1:-1:-1;;;8503:51:0;;;;;;;:::i;:::-;8592:8;8573:15;:27;;8565:55;;;;-1:-1:-1;;;8565:55:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8633:17:0;;;;;;;:10;:17;;;;;;;;:26;;;;;;;;;;;;;;:35;;;8686:32;;;;;8662:6;;8686:32;:::i;:::-;;;;;;;;8038:688;;;;;;;;;;:::o;3059:79::-;3095:42;3059:79;:::o;6733:136::-;-1:-1:-1;;;;;6833:19:0;;;6809:4;6833:19;;;:10;:19;;;;;;;;:28;;;;;;;;;;;;;6733:136::o;6090:85::-;6141:25;;-1:-1:-1;;;6141:25:0;;6132:35;;3095:42;;6141:13;;:25;;6155:10;;6141:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6132:8;:35::i;:::-;6090:85::o;3183:32::-;;;-1:-1:-1;;;;;3183:32:0;;:::o;4623:144::-;4699:10;;-1:-1:-1;;;;;4699:10:0;4685;:24;4677:48;;;;-1:-1:-1;;;4677:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4736:16:0;;;;;:7;:16;;;;;:23;;-1:-1:-1;;4736:23:0;4755:4;4736:23;;;4623:144::o;10275:201::-;-1:-1:-1;;;;;10359:13:0;;;;;;:8;:13;;;;;:23;;10376:6;;10359:13;:23;;10376:6;;10359:23;:::i;:::-;;;;-1:-1:-1;;;;;;;10393:13:0;;;;;;:8;:13;;;;;:23;;10410:6;;10393:13;:23;;10410:6;;10393:23;:::i;:::-;;;;;;;;10456:3;-1:-1:-1;;;;;10442:26:0;10451:3;-1:-1:-1;;;;;10442:26:0;;10461:6;10442:26;;;;;;:::i;:::-;;;;;;;;10275:201;;;:::o;5564:250::-;5668:6;5653:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;5734:13:0;;;;;;:8;:13;;;;;:23;;5751:6;;5734:13;:23;;5751:6;;5734:23;:::i;:::-;;;;-1:-1:-1;;5773:33:0;;-1:-1:-1;;;;;5773:33:0;;;5790:1;;5773:33;;;;5799:6;;5773:33;:::i;:::-;;;;;;;;5564:250;;:::o;5826:252::-;5930:6;5915:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;5998:13:0;;;;;;:8;:13;;;;;:23;;6015:6;;5998:13;:23;;6015:6;;5998:23;:::i;:::-;;;;-1:-1:-1;;6037:33:0;;6059:1;;-1:-1:-1;;;;;6037:33:0;;;;;;;6063:6;;6037:33;:::i;6273:156::-;6324:55;3095:42;6345:10;6365:4;6372:6;6324:20;:55::i;:::-;6390:31;6396:10;6408:12;:6;6417:3;6408:12;:::i;:::-;6390:5;:31::i;1439:201::-;1537:95;1556:5;1586:27;;;1615:4;1621:2;1625:5;1563:68;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1563:68:0;;;;;;;;;;;;;;-1:-1:-1;;;;;1563:68:0;-1:-1:-1;;;;;;1563:68:0;;;;;;;;;;1537:18;:95::i;:::-;1439:201;;;;:::o;1998:598::-;2086:27;2094:5;-1:-1:-1;;;;;2086:25:0;;:27::i;:::-;2078:71;;;;-1:-1:-1;;;2078:71:0;;;;;;;:::i;:::-;2223:12;2237:23;2272:5;-1:-1:-1;;;;;2264:19:0;2284:4;2264:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2222:67;;;;2308:7;2300:52;;;;-1:-1:-1;;;2300:52:0;;;;;;;:::i;:::-;2369:17;;:21;2365:224;;2511:10;2500:30;;;;;;;;;;;;:::i;:::-;2492:85;;;;-1:-1:-1;;;2492:85:0;;;;;;;:::i;818:374::-;878:4;1101:20;;944:66;1141:15;;;;;:42;;;1172:11;1160:8;:23;;1141:42;1133:51;818:374;-1:-1:-1;;;;818:374:0:o;14:175:1:-;84:20;;-1:-1:-1;;;;;133:31:1;;123:42;;113:2;;179:1;176;169:12;194:198;;306:2;294:9;285:7;281:23;277:32;274:2;;;327:6;319;312:22;274:2;355:31;376:9;355:31;:::i;:::-;345:41;264:128;-1:-1:-1;;;264:128:1:o;397:274::-;;;526:2;514:9;505:7;501:23;497:32;494:2;;;547:6;539;532:22;494:2;575:31;596:9;575:31;:::i;:::-;565:41;;625:40;661:2;650:9;646:18;625:40;:::i;:::-;615:50;;484:187;;;;;:::o;676:342::-;;;;822:2;810:9;801:7;797:23;793:32;790:2;;;843:6;835;828:22;790:2;871:31;892:9;871:31;:::i;:::-;861:41;;921:40;957:2;946:9;942:18;921:40;:::i;:::-;911:50;;1008:2;997:9;993:18;980:32;970:42;;780:238;;;;;:::o;1023:717::-;;;;;;;;1235:3;1223:9;1214:7;1210:23;1206:33;1203:2;;;1257:6;1249;1242:22;1203:2;1285:31;1306:9;1285:31;:::i;:::-;1275:41;;1335:40;1371:2;1360:9;1356:18;1335:40;:::i;:::-;1325:50;;1422:2;1411:9;1407:18;1394:32;1384:42;;1473:2;1462:9;1458:18;1445:32;1435:42;;1527:3;1516:9;1512:19;1499:33;1572:4;1565:5;1561:16;1554:5;1551:27;1541:2;;1597:6;1589;1582:22;1541:2;1193:547;;;;-1:-1:-1;1193:547:1;;;;1625:5;1677:3;1662:19;;1649:33;;-1:-1:-1;1729:3:1;1714:19;;;1701:33;;1193:547;-1:-1:-1;;1193:547:1:o;1745:266::-;;;1874:2;1862:9;1853:7;1849:23;1845:32;1842:2;;;1895:6;1887;1880:22;1842:2;1923:31;1944:9;1923:31;:::i;:::-;1913:41;2001:2;1986:18;;;;1973:32;;-1:-1:-1;;;1832:179:1:o;2016:297::-;;2136:2;2124:9;2115:7;2111:23;2107:32;2104:2;;;2157:6;2149;2142:22;2104:2;2194:9;2188:16;2247:5;2240:13;2233:21;2226:5;2223:32;2213:2;;2274:6;2266;2259:22;2318:190;;2430:2;2418:9;2409:7;2405:23;2401:32;2398:2;;;2451:6;2443;2436:22;2398:2;-1:-1:-1;2479:23:1;;2388:120;-1:-1:-1;2388:120:1:o;2513:194::-;;2636:2;2624:9;2615:7;2611:23;2607:32;2604:2;;;2657:6;2649;2642:22;2604:2;-1:-1:-1;2685:16:1;;2594:113;-1:-1:-1;2594:113:1:o;2712:274::-;;2879:6;2873:13;2895:53;2941:6;2936:3;2929:4;2921:6;2917:17;2895:53;:::i;:::-;2964:16;;;;;2849:137;-1:-1:-1;;2849:137:1:o;2991:392::-;-1:-1:-1;;;3249:27:1;;3301:1;3292:11;;3285:27;;;;3337:2;3328:12;;3321:28;3374:2;3365:12;;3239:144::o;3388:203::-;-1:-1:-1;;;;;3552:32:1;;;;3534:51;;3522:2;3507:18;;3489:102::o;3596:375::-;-1:-1:-1;;;;;3854:15:1;;;3836:34;;3906:15;;;;3901:2;3886:18;;3879:43;3953:2;3938:18;;3931:34;;;;3786:2;3771:18;;3753:218::o;3976:187::-;4141:14;;4134:22;4116:41;;4104:2;4089:18;;4071:92::o;4168:177::-;4314:25;;;4302:2;4287:18;;4269:76::o;4350:591::-;4637:25;;;-1:-1:-1;;;;;4736:15:1;;;4731:2;4716:18;;4709:43;4788:15;;;;4783:2;4768:18;;4761:43;4835:2;4820:18;;4813:34;4878:3;4863:19;;4856:35;;;;4689:3;4907:19;;4900:35;4624:3;4609:19;;4591:350::o;4946:398::-;5173:25;;;5246:4;5234:17;;;;5229:2;5214:18;;5207:45;5283:2;5268:18;;5261:34;5326:2;5311:18;;5304:34;5160:3;5145:19;;5127:217::o;5570:383::-;;5719:2;5708:9;5701:21;5751:6;5745:13;5794:6;5789:2;5778:9;5774:18;5767:34;5810:66;5869:6;5864:2;5853:9;5849:18;5844:2;5836:6;5832:15;5810:66;:::i;:::-;5937:2;5916:15;-1:-1:-1;;5912:29:1;5897:45;;;;5944:2;5893:54;;5691:262;-1:-1:-1;;5691:262:1:o;5958:335::-;6160:2;6142:21;;;6199:2;6179:18;;;6172:30;-1:-1:-1;;;6233:2:1;6218:18;;6211:41;6284:2;6269:18;;6132:161::o;6298:356::-;6500:2;6482:21;;;6519:18;;;6512:30;6578:34;6573:2;6558:18;;6551:62;6645:2;6630:18;;6472:182::o;6659:339::-;6861:2;6843:21;;;6900:2;6880:18;;;6873:30;-1:-1:-1;;;6934:2:1;6919:18;;6912:45;6989:2;6974:18;;6833:165::o;7003:342::-;7205:2;7187:21;;;7244:2;7224:18;;;7217:30;-1:-1:-1;;;7278:2:1;7263:18;;7256:48;7336:2;7321:18;;7177:168::o;7350:344::-;7552:2;7534:21;;;7591:2;7571:18;;;7564:30;-1:-1:-1;;;7625:2:1;7610:18;;7603:50;7685:2;7670:18;;7524:170::o;7699:341::-;7901:2;7883:21;;;7940:2;7920:18;;;7913:30;-1:-1:-1;;;7974:2:1;7959:18;;7952:47;8031:2;8016:18;;7873:167::o;8045:406::-;8247:2;8229:21;;;8286:2;8266:18;;;8259:30;8325:34;8320:2;8305:18;;8298:62;-1:-1:-1;;;8391:2:1;8376:18;;8369:40;8441:3;8426:19;;8219:232::o;8456:330::-;8658:2;8640:21;;;8697:1;8677:18;;;8670:29;-1:-1:-1;;;8730:2:1;8715:18;;8708:37;8777:2;8762:18;;8630:156::o;8791:355::-;8993:2;8975:21;;;9032:2;9012:18;;;9005:30;9071:33;9066:2;9051:18;;9044:61;9137:2;9122:18;;8965:181::o;9333:184::-;9505:4;9493:17;;;;9475:36;;9463:2;9448:18;;9430:87::o;9522:128::-;;9593:1;9589:6;9586:1;9583:13;9580:2;;;9599:18;;:::i;:::-;-1:-1:-1;9635:9:1;;9570:80::o;9655:168::-;;9761:1;9757;9753:6;9749:14;9746:1;9743:21;9738:1;9731:9;9724:17;9720:45;9717:2;;;9768:18;;:::i;:::-;-1:-1:-1;9808:9:1;;9707:116::o;9828:125::-;;9896:1;9893;9890:8;9887:2;;;9901:18;;:::i;:::-;-1:-1:-1;9938:9:1;;9877:76::o;9958:258::-;10030:1;10040:113;10054:6;10051:1;10048:13;10040:113;;;10130:11;;;10124:18;10111:11;;;10104:39;10076:2;10069:10;10040:113;;;10171:6;10168:1;10165:13;10162:2;;;-1:-1:-1;;10206:1:1;10188:16;;10181:27;10011:205::o;10221:135::-;;-1:-1:-1;;10281:17:1;;10278:2;;;10301:18;;:::i;:::-;-1:-1:-1;10348:1:1;10337:13;;10268:88::o;10361:127::-;10422:10;10417:3;10413:20;10410:1;10403:31;10453:4;10450:1;10443:15;10477:4;10474:1;10467:15

Swarm Source

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