Contract 0xfF3Ac80c1caA08Cbd43a7e90d20c398d54C7342f 3

 
 
Txn Hash Method
Block
From
To
Value
0x534435d96c7fd05283ca198061b07894cc388084fa02c7a4f30962f965d390cfBurn141022692022-01-29 18:26:3237 mins ago0x161fda6b1b857a09819408f1dc6483cec430515d IN  Popsicle Finance: nICE Token0 Ether0.006996681829 100.444776976
0x4571b06634509f14c402f08ba0dc0b925201f36bd1f846c4096664f9d71fd4deMint141022282022-01-29 18:17:5545 mins ago0x914d7791fd4e6d5014f426ecfda2bfc398d389fe IN  Popsicle Finance: nICE Token0 Ether0.006002867743 109.008276005
0xe57d83f62338dc6fc846598ad1f526d1d2fc94e97871bec139414df63aec1dfdMint141021362022-01-29 17:59:181 hr 4 mins ago0xd79c89571aad0164810c2074d780a9c754704811 IN  Popsicle Finance: nICE Token0 Ether0.006282038468 114.10270394
0x0b1db9b623e18582ca840ea969a621ed371ab85e0d2fa9247b71c70b783ea1b4Mint141021232022-01-29 17:55:551 hr 7 mins ago0x11a23614d5e845d70b06629c41e76700a5349b65 IN  Popsicle Finance: nICE Token0 Ether0.006293910541 114.368195614
0xdec9749063a6cab7d14ff4b85f7bc62a238e394065d4ffc544463b38b9a88c5eMint141021182022-01-29 17:54:471 hr 8 mins ago0x7c3ffcad1d967889a1e9969aca6251b6f7441da4 IN  Popsicle Finance: nICE Token0 Ether0.006152921825 111.757516442
0x77361cf192664f7aa8018eda5ba9d14c5f5d11af33747ba95638b617aab12c26Mint141021172022-01-29 17:54:371 hr 9 mins agoENS Name 0613.eth IN  Popsicle Finance: nICE Token0 Ether0.008540784111
0x8fea08203080f698043485f4eb3bf2e65fcf1d6c0bbd92f9d6074ac60a76e0f9Mint141020882022-01-29 17:47:301 hr 16 mins ago0x7c3ffcad1d967889a1e9969aca6251b6f7441da4 IN  Popsicle Finance: nICE Token0 Ether0.005638522897 102.414321733
0x758010d426fede2d1dd69d7d5cec9004389d51954f50bf14d211edf869675f28Burn141020222022-01-29 17:33:561 hr 29 mins ago0x1e9ac39498ef04889655e7a910f154ebaffd0cd5 IN  Popsicle Finance: nICE Token0 Ether0.010023325365 143.920243594
0x09b07c68e73bd2e2a169044d9d2f5b43c96be53faac28cdaf51790576906c47eMint141018662022-01-29 16:58:302 hrs 5 mins ago0xf2918b11780f2df5ec6ed814275e5f2873bf2e53 IN  Popsicle Finance: nICE Token0 Ether0.006437308111 116.897437928
0xed9b31a1fcec9c6e03bbdd433c41193457cae31fd27ef4997a31b8ddf24e4400Burn141017382022-01-29 16:31:222 hrs 32 mins ago0x48b77842a741ea8d7459ccbd9fc16145c3f837a9 IN  Popsicle Finance: nICE Token0 Ether0.008109995429 116.427572677
0xd3ccbbeda91858a6d4ebce09a25934037589ad6865345aefda7098e761e6888bBurn141017222022-01-29 16:27:572 hrs 35 mins agoENS Name innamountains.eth IN  Popsicle Finance: nICE Token0 Ether0.007454228549 107.013344669
0x1fb72f4e0352e1a317447f5773d0dec2ecc419cfc87b6a5a85fe50ff38e232b0Burn141014302022-01-29 15:26:203 hrs 37 mins ago0x1e9ac39498ef04889655e7a910f154ebaffd0cd5 IN  Popsicle Finance: nICE Token0 Ether0.006816481401 97.874670138
0xf0853136752744a183a12fc6e5bd21e4ed1ec22834440a8dd4608fe7c28d4fb0Burn141011622022-01-29 14:28:054 hrs 35 mins agoENS Name gewurl.eth IN  Popsicle Finance: nICE Token0 Ether0.011511257626 165.256293354
0x3205ce6e268df3910709c2c43e209ae167d40ffd45da3d7abfbfc3baa0803514Burn141009852022-01-29 13:42:355 hrs 21 mins ago0x5bff1a68663ff91b0650327d83d4230cd00023ad IN  Popsicle Finance: nICE Token0 Ether0.004785875101 91.123076516
0x1e17625da7561361e9b9cef0a74c5617dfaa0ee364fa115aa95e802ea80b19adBurn141000092022-01-29 10:00:489 hrs 2 mins ago0x3f1ddbf4437a4e92883ea15cc5662995f650f6d5 IN  Popsicle Finance: nICE Token0 Ether0.007247413151 104.04429061
0xafdbf7c322c0ac0444ead5ff5524161ec72e49dd8163b6d944534d589b04f674Burn140999012022-01-29 9:35:219 hrs 28 mins ago0xc232247fcbc3285bab034fd7286523f1d1530a70 IN  Popsicle Finance: nICE Token0 Ether0.0069657100
0x8b0a5817322cb9015064308375ebdd88f6fee25f6926cb78623450eae9568df6Mint140998852022-01-29 9:32:369 hrs 31 mins ago0x96b804ec5e6bda00d580ef35b9ea4c5ebbfddeb4 IN  Popsicle Finance: nICE Token0 Ether0.00440256 80
0x8f3c56c4d4d4e923fc1584402b7ac8aaf2c4590566f8c436f361218e567b3e36Burn140993442022-01-29 7:28:1011 hrs 35 mins agoENS Name brycemccarthy.eth IN  Popsicle Finance: nICE Token0 Ether0.00726102885 104.239758389
0x60444385d8a92ded67f1a07d5c59004de32d227e44603edd9bf45d49302506ceBurn140989102022-01-29 5:59:0713 hrs 4 mins agoENS Name sifu.eth IN  Popsicle Finance: nICE Token0 Ether0.004614354708 87.777106433
0x70331f42b9fd620172636b47c844c58f53a079d04d3177e9ceee094c1cdb0b87Mint140988282022-01-29 5:41:0413 hrs 22 mins ago0xf2918b11780f2df5ec6ed814275e5f2873bf2e53 IN  Popsicle Finance: nICE Token0 Ether0.006104397671 110.851995191
0x1bc0bbef3d7ec5434260df2bd5ce5d71813d6dcc78034f96986dd843b235c4c2Mint140988092022-01-29 5:35:2213 hrs 28 mins ago0xf0bd7d256ce73b930f4b6cd4d7529c60f0d3a186 IN  Popsicle Finance: nICE Token0 Ether0.006496615459 108.580950981
0xcc2933636b02c6151a14445e0c7511a96faddea188f20c6d8ad547613202ef8dBurn140988012022-01-29 5:33:4413 hrs 29 mins ago0x26e60551fb071a036b452ca26ad8ede7b10c607e IN  Popsicle Finance: nICE Token0 Ether0.008860476369 127.201521304
0x0b793556f7094bdd5d4590088055a266662392efe2dff8167e198d971a51f154Burn140986562022-01-29 5:00:5214 hrs 2 mins ago0xe0ad6710b3fa39d56f08dab2415093c26097242c IN  Popsicle Finance: nICE Token0 Ether0.004725827448 67.844257556
0xc4b0079190c9b0cce9cd2e49f452d46b54656c5df7d46f90ab9ec3b6f661aeeaBurn140985202022-01-29 4:33:2814 hrs 30 mins ago0x00c1077d1396dd25027065435e6ba8a08eccd477 IN  Popsicle Finance: nICE Token0 Ether0.005301723938 81.759949707
0x5eab1f16e61ab851f835ba07427aec3e1e986f728a9695010af076a0d477cfc8Burn140984582022-01-29 4:19:4714 hrs 43 mins ago0xba1f7ea235f0bb239cddaf13a9c80c572d33fe41 IN  Popsicle Finance: nICE Token0 Ether0.009599597961 137.812394468
[ Download CSV Export 

OVERVIEW

Popsicle Finance is a multichain yield optimization platform for Liquidity Providers.

View more zero value Internal Transactions in Advanced View mode
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
nICE

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 99999 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-07-09
*/

// SPDX-License-Identifier: MIXED

// File @boringcrypto/boring-solidity/contracts/libraries/[email protected]
// License-Identifier: MIT
pragma solidity 0.6.12;
pragma experimental ABIEncoderV2;

/// @notice A library for performing overflow-/underflow-safe math,
/// updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math).
library BoringMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
        require((c = a + b) >= b, "BoringMath: Add Overflow");
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {
        require((c = a - b) <= a, "BoringMath: Underflow");
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
        require(b == 0 || (c = a * b) / b == a, "BoringMath: Mul Overflow");
    }

    function to128(uint256 a) internal pure returns (uint128 c) {
        require(a <= uint128(-1), "BoringMath: uint128 Overflow");
        c = uint128(a);
    }

    function to64(uint256 a) internal pure returns (uint64 c) {
        require(a <= uint64(-1), "BoringMath: uint64 Overflow");
        c = uint64(a);
    }

    function to32(uint256 a) internal pure returns (uint32 c) {
        require(a <= uint32(-1), "BoringMath: uint32 Overflow");
        c = uint32(a);
    }
}

/// @notice A library for performing overflow-/underflow-safe addition and subtraction on uint128.
library BoringMath128 {
    function add(uint128 a, uint128 b) internal pure returns (uint128 c) {
        require((c = a + b) >= b, "BoringMath: Add Overflow");
    }

    function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {
        require((c = a - b) <= a, "BoringMath: Underflow");
    }
}

/// @notice A library for performing overflow-/underflow-safe addition and subtraction on uint64.
library BoringMath64 {
    function add(uint64 a, uint64 b) internal pure returns (uint64 c) {
        require((c = a + b) >= b, "BoringMath: Add Overflow");
    }

    function sub(uint64 a, uint64 b) internal pure returns (uint64 c) {
        require((c = a - b) <= a, "BoringMath: Underflow");
    }
}

/// @notice A library for performing overflow-/underflow-safe addition and subtraction on uint32.
library BoringMath32 {
    function add(uint32 a, uint32 b) internal pure returns (uint32 c) {
        require((c = a + b) >= b, "BoringMath: Add Overflow");
    }

    function sub(uint32 a, uint32 b) internal pure returns (uint32 c) {
        require((c = a - b) <= a, "BoringMath: Underflow");
    }
}

// File @boringcrypto/boring-solidity/contracts/interfaces/[email protected]
// License-Identifier: MIT

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, 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);

    /// @notice EIP 2612
    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;
}

// File @boringcrypto/boring-solidity/contracts/libraries/[email protected]
// License-Identifier: MIT

// solhint-disable avoid-low-level-calls

library BoringERC20 {
    bytes4 private constant SIG_SYMBOL = 0x95d89b41; // symbol()
    bytes4 private constant SIG_NAME = 0x06fdde03; // name()
    bytes4 private constant SIG_DECIMALS = 0x313ce567; // decimals()
    bytes4 private constant SIG_TRANSFER = 0xa9059cbb; // transfer(address,uint256)
    bytes4 private constant SIG_TRANSFER_FROM = 0x23b872dd; // transferFrom(address,address,uint256)

    function returnDataToString(bytes memory data) internal pure returns (string memory) {
        if (data.length >= 64) {
            return abi.decode(data, (string));
        } else if (data.length == 32) {
            uint8 i = 0;
            while(i < 32 && data[i] != 0) {
                i++;
            }
            bytes memory bytesArray = new bytes(i);
            for (i = 0; i < 32 && data[i] != 0; i++) {
                bytesArray[i] = data[i];
            }
            return string(bytesArray);
        } else {
            return "???";
        }
    }

    /// @notice Provides a safe ERC20.symbol version which returns '???' as fallback string.
    /// @param token The address of the ERC-20 token contract.
    /// @return (string) Token symbol.
    function safeSymbol(IERC20 token) internal view returns (string memory) {
        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(SIG_SYMBOL));
        return success ? returnDataToString(data) : "???";
    }

    /// @notice Provides a safe ERC20.name version which returns '???' as fallback string.
    /// @param token The address of the ERC-20 token contract.
    /// @return (string) Token name.
    function safeName(IERC20 token) internal view returns (string memory) {
        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(SIG_NAME));
        return success ? returnDataToString(data) : "???";
    }

    /// @notice Provides a safe ERC20.decimals version which returns '18' as fallback value.
    /// @param token The address of the ERC-20 token contract.
    /// @return (uint8) Token decimals.
    function safeDecimals(IERC20 token) internal view returns (uint8) {
        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(SIG_DECIMALS));
        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;
    }

    /// @notice Provides a safe ERC20.transfer version for different ERC-20 implementations.
    /// Reverts on a failed transfer.
    /// @param token The address of the ERC-20 token.
    /// @param to Transfer tokens to.
    /// @param amount The token amount.
    function safeTransfer(
        IERC20 token,
        address to,
        uint256 amount
    ) internal {
        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(SIG_TRANSFER, to, amount));
        require(success && (data.length == 0 || abi.decode(data, (bool))), "BoringERC20: Transfer failed");
    }

    /// @notice Provides a safe ERC20.transferFrom version for different ERC-20 implementations.
    /// Reverts on a failed transfer.
    /// @param token The address of the ERC-20 token.
    /// @param from Transfer tokens from.
    /// @param to Transfer tokens to.
    /// @param amount The token amount.
    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 amount
    ) internal {
        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(SIG_TRANSFER_FROM, from, to, amount));
        require(success && (data.length == 0 || abi.decode(data, (bool))), "BoringERC20: TransferFrom failed");
    }
}

// File @boringcrypto/boring-solidity/contracts/[email protected]
// License-Identifier: MIT
// Based on code and smartness by Ross Campbell and Keno
// Uses immutable to store the domain separator to reduce gas usage
// If the chain id changes due to a fork, the forked chain will calculate on the fly.

// solhint-disable no-inline-assembly

contract Domain {
    bytes32 private constant DOMAIN_SEPARATOR_SIGNATURE_HASH = keccak256("EIP712Domain(uint256 chainId,address verifyingContract)");
    // See https://eips.ethereum.org/EIPS/eip-191
    string private constant EIP191_PREFIX_FOR_EIP712_STRUCTURED_DATA = "\x19\x01";

    // solhint-disable var-name-mixedcase
    bytes32 private immutable _DOMAIN_SEPARATOR;
    uint256 private immutable DOMAIN_SEPARATOR_CHAIN_ID;    

    /// @dev Calculate the DOMAIN_SEPARATOR
    function _calculateDomainSeparator(uint256 chainId) private view returns (bytes32) {
        return keccak256(
            abi.encode(
                DOMAIN_SEPARATOR_SIGNATURE_HASH,
                chainId,
                address(this)
            )
        );
    }

    constructor() public {
        uint256 chainId; assembly {chainId := chainid()}
        _DOMAIN_SEPARATOR = _calculateDomainSeparator(DOMAIN_SEPARATOR_CHAIN_ID = chainId);
    }

    /// @dev Return the DOMAIN_SEPARATOR
    // It's named internal to allow making it public from the contract that uses it by creating a simple view function
    // with the desired public name, such as DOMAIN_SEPARATOR or domainSeparator.
    // solhint-disable-next-line func-name-mixedcase
    function _domainSeparator() internal view returns (bytes32) {
        uint256 chainId; assembly {chainId := chainid()}
        return chainId == DOMAIN_SEPARATOR_CHAIN_ID ? _DOMAIN_SEPARATOR : _calculateDomainSeparator(chainId);
    }

    function _getDigest(bytes32 dataHash) internal view returns (bytes32 digest) {
        digest =
            keccak256(
                abi.encodePacked(
                    EIP191_PREFIX_FOR_EIP712_STRUCTURED_DATA,
                    _domainSeparator(),
                    dataHash
                )
            );
    }
}

// File contracts/nICE.sol
//License-Identifier: MIT

// Staking in sSpell inspired by Chef Nomi's SushiBar - MIT license (originally WTFPL)
// modified by BoringCrypto for DictatorDAO

contract nICE is IERC20, Domain {
    using BoringMath for uint256;
    using BoringMath128 for uint128;
    using BoringERC20 for IERC20;

    string public constant symbol = "nICE";
    string public constant name = "Staked Ice Tokens";
    uint8 public constant decimals = 18;
    uint256 public override totalSupply;
    uint256 private constant LOCK_TIME = 24 hours;

    IERC20 public immutable token;

    constructor(IERC20 _token) public {
        token = _token;
    }

    struct User {
        uint128 balance;
        uint128 lockedUntil;
    }

    /// @notice owner > balance mapping.
    mapping(address => User) public users;
    /// @notice owner > spender > allowance mapping.
    mapping(address => mapping(address => uint256)) public override allowance;
    /// @notice owner > nonce mapping. Used in `permit`.
    mapping(address => uint256) public nonces;

    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);

    function balanceOf(address user) public view override returns (uint256 balance) {
        return users[user].balance;
    }

    function _transfer(
        address from,
        address to,
        uint256 shares
    ) internal {
        User memory fromUser = users[from];
        require(block.timestamp >= fromUser.lockedUntil, "Locked");
        if (shares != 0) {
            require(fromUser.balance >= shares, "Low balance");
            if (from != to) {
                require(to != address(0), "Zero address"); // Moved down so other failed calls safe some gas
                User memory toUser = users[to];
                users[from].balance = fromUser.balance - shares.to128(); // Underflow is checked
                users[to].balance = toUser.balance + shares.to128(); // Can't overflow because totalSupply would be greater than 2^128-1;
            }
        }
        emit Transfer(from, to, shares);
    }

    function _useAllowance(address from, uint256 shares) internal {
        if (msg.sender == from) {
            return;
        }
        uint256 spenderAllowance = allowance[from][msg.sender];
        // If allowance is infinite, don't decrease it to save on gas (breaks with EIP-20).
        if (spenderAllowance != type(uint256).max) {
            require(spenderAllowance >= shares, "Low allowance");
            allowance[from][msg.sender] = spenderAllowance - shares; // Underflow is checked
        }
    }

    /// @notice Transfers `shares` tokens from `msg.sender` to `to`.
    /// @param to The address to move the tokens.
    /// @param shares of the tokens to move.
    /// @return (bool) Returns True if succeeded.
    function transfer(address to, uint256 shares) public returns (bool) {
        _transfer(msg.sender, to, shares);
        return true;
    }

    /// @notice Transfers `shares` tokens from `from` to `to`. Caller needs approval for `from`.
    /// @param from Address to draw tokens from.
    /// @param to The address to move the tokens.
    /// @param shares The token shares to move.
    /// @return (bool) Returns True if succeeded.
    function transferFrom(
        address from,
        address to,
        uint256 shares
    ) public returns (bool) {
        _useAllowance(from, shares);
        _transfer(from, to, shares);
        return true;
    }

    /// @notice Approves `amount` from sender to be spend by `spender`.
    /// @param spender Address of the party that can draw from msg.sender's account.
    /// @param amount The maximum collective amount that `spender` can draw.
    /// @return (bool) Returns True if approved.
    function approve(address spender, uint256 amount) public override returns (bool) {
        allowance[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    // solhint-disable-next-line func-name-mixedcase
    function DOMAIN_SEPARATOR() external view returns (bytes32) {
        return _domainSeparator();
    }

    // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");
    bytes32 private constant PERMIT_SIGNATURE_HASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;

    /// @notice Approves `value` from `owner_` to be spend by `spender`.
    /// @param owner_ Address of the owner.
    /// @param spender The address of the spender that gets approved to draw from `owner_`.
    /// @param value The maximum collective amount that `spender` can draw.
    /// @param deadline This permit must be redeemed before this deadline (UTC timestamp in seconds).
    function permit(
        address owner_,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external override {
        require(owner_ != address(0), "Zero owner");
        require(block.timestamp < deadline, "Expired");
        require(
            ecrecover(_getDigest(keccak256(abi.encode(PERMIT_SIGNATURE_HASH, owner_, spender, value, nonces[owner_]++, deadline))), v, r, s) ==
                owner_,
            "Invalid Sig"
        );
        allowance[owner_][spender] = value;
        emit Approval(owner_, spender, value);
    }

    /// math is ok, because amount, totalSupply and shares is always 0 <= amount <= 69.000.000 * 10^18
    /// theoretically you can grow the amount/share ratio, but it's not practical and useless
    function mint(uint256 amount) public returns (bool) {
        require(msg.sender != address(0), "Zero address");
        User memory user = users[msg.sender];

        uint256 totalTokens = token.balanceOf(address(this));
        uint256 shares = totalSupply == 0 ? amount : (amount * totalSupply) / totalTokens;
        user.balance += shares.to128();
        user.lockedUntil = (block.timestamp + LOCK_TIME).to128();
        users[msg.sender] = user;
        totalSupply += shares;

        token.safeTransferFrom(msg.sender, address(this), amount);

        emit Transfer(address(0), msg.sender, shares);
        return true;
    }

    function _burn(
        address from,
        address to,
        uint256 shares
    ) internal {
        require(to != address(0), "Zero address");
        User memory user = users[from];
        require(block.timestamp >= user.lockedUntil, "Locked");
        uint256 amount = (shares * token.balanceOf(address(this))) / totalSupply;
        users[from].balance = user.balance.sub(shares.to128()); // Must check underflow
        totalSupply -= shares;

        token.safeTransfer(to, amount);

        emit Transfer(from, address(0), shares);
    }

    function burn(address to, uint256 shares) public returns (bool) {
        _burn(msg.sender, to, shares);
        return true;
    }

    function burnFrom(
        address from,
        address to,
        uint256 shares
    ) public returns (bool) {
        _useAllowance(from, shares);
        _burn(from, to, shares);
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract IERC20","name":"_token","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":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","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":"user","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"burnFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"uint128","name":"balance","type":"uint128"},{"internalType":"uint128","name":"lockedUntil","type":"uint128"}],"stateMutability":"view","type":"function"}]

60e06040523480156200001157600080fd5b5060405162001cd638038062001cd68339810160408190526200003491620000b5565b4660a081905262000045816200005f565b6080525060601b6001600160601b03191660c05262000104565b60007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a7946921882306040516020016200009893929190620000e5565b604051602081830303815290604052805190602001209050919050565b600060208284031215620000c7578081fd5b81516001600160a01b0381168114620000de578182fd5b9392505050565b92835260208301919091526001600160a01b0316604082015260600190565b60805160a05160c05160601c611b8e62000148600039806104c45280610638528061095f5280610f33528061105e525080610da4525080610dd95250611b8e6000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806395d89b41116100b2578063a9059cbb11610081578063dd62ed3e11610066578063dd62ed3e14610240578063ec60bcf314610253578063fc0c546a146102665761011b565b8063a9059cbb14610218578063d505accf1461022b5761011b565b806395d89b41146101c95780639dc29fac146101d1578063a0712d68146101e4578063a87430ba146101f75761011b565b8063313ce567116100ee578063313ce567146101865780633644e5151461019b57806370a08231146101a35780637ecebe00146101b65761011b565b806306fdde0314610120578063095ea7b31461013e57806318160ddd1461015e57806323b872dd14610173575b600080fd5b61012861027b565b6040516101359190611826565b60405180910390f35b61015161014c366004611652565b6102b4565b6040516101359190611787565b61016661032c565b6040516101359190611792565b61015161018136600461159f565b610332565b61018e610353565b6040516101359190611af5565b610166610358565b6101666101b1366004611549565b610367565b6101666101c4366004611549565b6103a1565b6101286103b3565b6101516101df366004611652565b6103ec565b6101516101f236600461169c565b610402565b61020a610205366004611549565b6106bd565b604051610135929190611ad2565b610151610226366004611652565b6106f9565b61023e6102393660046115df565b610706565b005b61016661024e36600461156b565b610929565b61015161026136600461159f565b610946565b61026e61095d565b604051610135919061170f565b6040518060400160405280601181526020017f5374616b65642049636520546f6b656e7300000000000000000000000000000081525081565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061031a908690611792565b60405180910390a35060015b92915050565b60005481565b600061033e8483610981565b610349848484610a72565b5060019392505050565b601281565b6000610362610d9f565b905090565b73ffffffffffffffffffffffffffffffffffffffff166000908152600160205260409020546fffffffffffffffffffffffffffffffff1690565b60036020526000908152604090205481565b6040518060400160405280600481526020017f6e4943450000000000000000000000000000000000000000000000000000000081525081565b60006103f9338484610dff565b50600192915050565b600033610444576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b9061198a565b60405180910390fd5b61044c61150e565b503360009081526001602090815260408083208151808301835290546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009091041692810192909252517f70a082310000000000000000000000000000000000000000000000000000000081529091907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a082319061050e90309060040161170f565b60206040518083038186803b15801561052657600080fd5b505afa15801561053a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055e91906116b4565b90506000805460001461057e578160005486028161057857fe5b04610580565b845b905061058b816110f2565b8351016fffffffffffffffffffffffffffffffff1683526105b06201518042016110f2565b6fffffffffffffffffffffffffffffffff90811660208086019182523360008181526001909252604082208751815494518616700100000000000000000000000000000000029086167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909516949094179094169290921790925581548301909155610675907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16903088611142565b60405133906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106aa908590611792565b60405180910390a3506001949350505050565b6001602052600090815260409020546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041682565b60006103f9338484610a72565b73ffffffffffffffffffffffffffffffffffffffff8716610753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b90611a64565b83421061078c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b90611a9b565b73ffffffffffffffffffffffffffffffffffffffff87166000818152600360209081526040918290208054600181810190925592519092610817926107fc927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928e928e928e92918e910161179b565b604051602081830303815290604052805190602001206112ad565b858585604051600081526020016040526040516108379493929190611808565b6020604051602081039080840390855afa158015610859573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16146108b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b906119f8565b73ffffffffffffffffffffffffffffffffffffffff8088166000818152600260209081526040808320948b168084529490915290819020889055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610918908990611792565b60405180910390a350505050505050565b600260209081526000928352604080842090915290825290205481565b60006109528483610981565b610349848484610dff565b7f000000000000000000000000000000000000000000000000000000000000000081565b3373ffffffffffffffffffffffffffffffffffffffff831614156109a457610a6e565b73ffffffffffffffffffffffffffffffffffffffff821660009081526002602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a6c5781811015610a36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b9061191c565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600260209081526040808320338452909152902082820390555b505b5050565b610a7a61150e565b5073ffffffffffffffffffffffffffffffffffffffff83166000908152600160209081526040918290208251808401909352546fffffffffffffffffffffffffffffffff808216845270010000000000000000000000000000000090910416908201819052421015610b18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b906118ae565b8115610d345780516fffffffffffffffffffffffffffffffff16821115610b6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b90611953565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614610d345773ffffffffffffffffffffffffffffffffffffffff8316610beb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b9061198a565b610bf361150e565b5073ffffffffffffffffffffffffffffffffffffffff83166000908152600160209081526040918290208251808401909352546fffffffffffffffffffffffffffffffff80821684527001000000000000000000000000000000009091041690820152610c5f836110f2565b825173ffffffffffffffffffffffffffffffffffffffff8716600090815260016020526040902080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016929091036fffffffffffffffffffffffffffffffff16919091179055610ccf836110f2565b905173ffffffffffffffffffffffffffffffffffffffff8516600090815260016020526040902080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016919092016fffffffffffffffffffffffffffffffff161790555b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d919190611792565b60405180910390a350505050565b6000467f00000000000000000000000000000000000000000000000000000000000000008114610dd757610dd28161131d565b610df9565b7f00000000000000000000000000000000000000000000000000000000000000005b91505090565b73ffffffffffffffffffffffffffffffffffffffff8216610e4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b9061198a565b610e5461150e565b5073ffffffffffffffffffffffffffffffffffffffff83166000908152600160209081526040918290208251808401909352546fffffffffffffffffffffffffffffffff808216845270010000000000000000000000000000000090910416908201819052421015610ef2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b906118ae565b600080546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190610f6890309060040161170f565b60206040518083038186803b158015610f8057600080fd5b505afa158015610f94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb891906116b4565b840281610fc157fe5b049050610fea610fd0846110f2565b83516fffffffffffffffffffffffffffffffff1690611354565b73ffffffffffffffffffffffffffffffffffffffff868116600090815260016020526040812080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff94909416939093179092558154859003909155611085907f00000000000000000000000000000000000000000000000000000000000000001685836113a6565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516110e39190611792565b60405180910390a35050505050565b60006fffffffffffffffffffffffffffffffff82111561113e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b906119c1565b5090565b600060608573ffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b86868660405160240161117a93929190611730565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161120391906116cc565b6000604051808303816000865af19150503d8060008114611240576040519150601f19603f3d011682016040523d82523d6000602084013e611245565b606091505b509150915081801561126f57508051158061126f57508080602001905181019061126f919061167c565b6112a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b90611a2f565b505050505050565b60006040518060400160405280600281526020017f19010000000000000000000000000000000000000000000000000000000000008152506112ed610d9f565b83604051602001611300939291906116e8565b604051602081830303815290604052805190602001209050919050565b60007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692188230604051602001611300939291906117dc565b8082036fffffffffffffffffffffffffffffffff8084169082161115610326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b90611877565b600060608473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b85856040516024016113dc929190611761565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161146591906116cc565b6000604051808303816000865af19150503d80600081146114a2576040519150601f19603f3d011682016040523d82523d6000602084013e6114a7565b606091505b50915091508180156114d15750805115806114d15750808060200190518101906114d1919061167c565b611507576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b906118e5565b5050505050565b604080518082019091526000808252602082015290565b803573ffffffffffffffffffffffffffffffffffffffff8116811461032657600080fd5b60006020828403121561155a578081fd5b6115648383611525565b9392505050565b6000806040838503121561157d578081fd5b6115878484611525565b91506115968460208501611525565b90509250929050565b6000806000606084860312156115b3578081fd5b83356115be81611b33565b925060208401356115ce81611b33565b929592945050506040919091013590565b600080600080600080600060e0888a0312156115f9578283fd5b6116038989611525565b96506116128960208a01611525565b95506040880135945060608801359350608088013560ff81168114611635578384fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215611664578182fd5b61166e8484611525565b946020939093013593505050565b60006020828403121561168d578081fd5b81518015158114611564578182fd5b6000602082840312156116ad578081fd5b5035919050565b6000602082840312156116c5578081fd5b5051919050565b600082516116de818460208701611b03565b9190910192915050565b600084516116fa818460208901611b03565b91909101928352506020820152604001919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b90815260200190565b95865273ffffffffffffffffffffffffffffffffffffffff94851660208701529290931660408501526060840152608083019190915260a082015260c00190565b928352602083019190915273ffffffffffffffffffffffffffffffffffffffff16604082015260600190565b93845260ff9290921660208401526040830152606082015260800190565b6000602082528251806020840152611845816040850160208701611b03565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60208082526015908201527f426f72696e674d6174683a20556e646572666c6f770000000000000000000000604082015260600190565b60208082526006908201527f4c6f636b65640000000000000000000000000000000000000000000000000000604082015260600190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b6020808252600d908201527f4c6f7720616c6c6f77616e636500000000000000000000000000000000000000604082015260600190565b6020808252600b908201527f4c6f772062616c616e6365000000000000000000000000000000000000000000604082015260600190565b6020808252600c908201527f5a65726f20616464726573730000000000000000000000000000000000000000604082015260600190565b6020808252601c908201527f426f72696e674d6174683a2075696e74313238204f766572666c6f7700000000604082015260600190565b6020808252600b908201527f496e76616c696420536967000000000000000000000000000000000000000000604082015260600190565b6020808252818101527f426f72696e6745524332303a205472616e7366657246726f6d206661696c6564604082015260600190565b6020808252600a908201527f5a65726f206f776e657200000000000000000000000000000000000000000000604082015260600190565b60208082526007908201527f4578706972656400000000000000000000000000000000000000000000000000604082015260600190565b6fffffffffffffffffffffffffffffffff92831681529116602082015260400190565b60ff91909116815260200190565b60005b83811015611b1e578181015183820152602001611b06565b83811115611b2d576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff81168114611b5557600080fd5b5056fea2646970667358221220a78789a0d025ef289ef4f73086adce9b69de5eb1dd57ccdd76fe4b2f75227e6964736f6c634300060c0033000000000000000000000000f16e81dce15b08f326220742020379b855b87df9

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

000000000000000000000000f16e81dce15b08f326220742020379b855b87df9

-----Decoded View---------------
Arg [0] : _token (address): 0xf16e81dce15b08f326220742020379b855b87df9

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000f16e81dce15b08f326220742020379b855b87df9


Deployed ByteCode Sourcemap

9675:7204:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9869:49;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13430:214;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;9967:35::-;;;:::i;:::-;;;;;;;:::i;12909:226::-;;;;;;:::i;:::-;;:::i;9925:35::-;;;:::i;:::-;;;;;;;:::i;13706:104::-;;;:::i;10758:125::-;;;;;;:::i;:::-;;:::i;10538:41::-;;;;;;:::i;:::-;;:::i;9824:38::-;;;:::i;16516:134::-;;;;;;:::i;:::-;;:::i;15286:649::-;;;;;;:::i;:::-;;:::i;10302:37::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;12460:142::-;;;;;;:::i;:::-;;:::i;14439:640::-;;;;;;:::i;:::-;;:::i;:::-;;10400:73;;;;;;:::i;:::-;;:::i;16658:218::-;;;;;;:::i;:::-;;:::i;10063:29::-;;;:::i;:::-;;;;;;;:::i;9869:49::-;;;;;;;;;;;;;;;;;;;:::o;13430:214::-;13532:10;13505:4;13522:21;;;:9;:21;;;;;;;;;:30;;;;;;;;;;:39;;;13577:37;13505:4;;13522:30;;13577:37;;;;13555:6;;13577:37;:::i;:::-;;;;;;;;-1:-1:-1;13632:4:0;13430:214;;;;;:::o;9967:35::-;;;;:::o;12909:226::-;13023:4;13040:27;13054:4;13060:6;13040:13;:27::i;:::-;13078;13088:4;13094:2;13098:6;13078:9;:27::i;:::-;-1:-1:-1;13123:4:0;12909:226;;;;;:::o;9925:35::-;9958:2;9925:35;:::o;13706:104::-;13757:7;13784:18;:16;:18::i;:::-;13777:25;;13706:104;:::o;10758:125::-;10856:11;;10821:15;10856:11;;;:5;:11;;;;;:19;;;;10758:125::o;10538:41::-;;;;;;;;;;;;;:::o;9824:38::-;;;;;;;;;;;;;;;;;;;:::o;16516:134::-;16574:4;16591:29;16597:10;16609:2;16613:6;16591:5;:29::i;:::-;-1:-1:-1;16638:4:0;16516:134;;;;:::o;15286:649::-;15332:4;15357:10;15349:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;15409:16;;:::i;:::-;-1:-1:-1;15434:10:0;15428:17;;;;:5;:17;;;;;;;;15409:36;;;;;;;;;;;;;;;;;;;;;;;;;;;15480:30;;;;15409:36;;15428:17;15480:5;15428:17;15480:15;;;;:30;;15504:4;;15480:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15458:52;;15521:14;15538:11;;15553:1;15538:16;:64;;15591:11;15576;;15567:6;:20;15566:36;;;;;;15538:64;;;15557:6;15538:64;15521:81;;15629:14;:6;:12;:14::i;:::-;15613:30;;;;;;;15673:37;10046:8;15674:15;:27;15673:35;:37::i;:::-;15654:56;;;;:16;;;;:56;;;15727:10;15721:17;;;;:5;:17;;;;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15756:21;;;;;;;15790:57;;:5;15721:17;15790:22;;15833:4;15840:6;15790:22;:57::i;:::-;15865:40;;15886:10;;15882:1;;15865:40;;;;15898:6;;15865:40;:::i;:::-;;;;;;;;-1:-1:-1;15923:4:0;;15286:649;-1:-1:-1;;;;15286:649:0:o;10302:37::-;;;;;;;;;;;;;;;;;;;;;;:::o;12460:142::-;12522:4;12539:33;12549:10;12561:2;12565:6;12539:9;:33::i;14439:640::-;14659:20;;;14651:43;;;;;;;;;;;;:::i;:::-;14731:8;14713:15;:26;14705:46;;;;;;;;;;;;:::i;:::-;14784:155;;;14826:21;14873:14;;;:6;:14;;;;;;;;;:16;;14784:128;14873:16;;;;;;14815:85;;14784:128;;14794:108;;14815:85;;13972:66;;14933:6;;14857:7;;14866:5;;14873:16;14891:8;;14815:85;;:::i;:::-;;;;;;;;;;;;;14805:96;;;;;;14794:10;:108::i;:::-;14904:1;14907;14910;14784:128;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:155;;;14762:216;;;;;;;;;;;;:::i;:::-;14989:17;;;;;;;;:9;:17;;;;;;;;:26;;;;;;;;;;;;;;:34;;;15039:32;;;;;15018:5;;15039:32;:::i;:::-;;;;;;;;14439:640;;;;;;;:::o;10400:73::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;16658:218::-;16768:4;16785:27;16799:4;16805:6;16785:13;:27::i;:::-;16823:23;16829:4;16835:2;16839:6;16823:5;:23::i;10063:29::-;;;:::o;11713:521::-;11790:10;:18;;;;11786:57;;;11825:7;;11786:57;11880:15;;;11853:24;11880:15;;;:9;:15;;;;;;;;11896:10;11880:27;;;;;;;;12035:17;12015:37;;12011:216;;12097:6;12077:16;:26;;12069:52;;;;;;;;;;;;:::i;:::-;12136:15;;;;;;;:9;:15;;;;;;;;12152:10;12136:27;;;;;;;12166:25;;;12136:55;;12011:216;11713:521;;;;:::o;10891:814::-;11006:20;;:::i;:::-;-1:-1:-1;11029:11:0;;;;;;;:5;:11;;;;;;;;;11006:34;;;;;;;;;;;;;;;;;;;;;;;;;;11059:15;:39;;11051:58;;;;;;;;;;;;:::i;:::-;11124:11;;11120:536;;11160:16;;:26;;;-1:-1:-1;11160:26:0;11152:50;;;;;;;;;;;;:::i;:::-;11229:2;11221:10;;:4;:10;;;11217:428;;11260:16;;;11252:41;;;;;;;;;;;;:::i;:::-;11362:18;;:::i;:::-;-1:-1:-1;11383:9:0;;;;;;;:5;:9;;;;;;;;;11362:30;;;;;;;;;;;;;;;;;;;;;;;;11452:14;:6;:12;:14::i;:::-;11433:16;;11411:11;;;11433:16;11411:11;;;:5;:11;;;;;:55;;;;11433:33;;;;11411:55;;;;;;;;11546:14;:6;:12;:14::i;:::-;11529;;11509:9;;;11529:14;11509:9;;;:5;:9;;;;;:51;;;;11529:31;;;;11509:51;;;;;11217:428;11686:2;11671:26;;11680:4;11671:26;;;11690:6;11671:26;;;;;;:::i;:::-;;;;;;;;10891:814;;;;:::o;8900:237::-;8951:7;9009:9;9047:25;9036:36;;:93;;9095:34;9121:7;9095:25;:34::i;:::-;9036:93;;;9075:17;9036:93;9029:100;;;8900:237;:::o;15943:565::-;16062:16;;;16054:41;;;;;;;;;;;;:::i;:::-;16106:16;;:::i;:::-;-1:-1:-1;16125:11:0;;;;;;;:5;:11;;;;;;;;;16106:30;;;;;;;;;;;;;;;;;;;;;;;;;;16155:15;:35;;16147:54;;;;;;;;;;;;:::i;:::-;16212:14;16273:11;;16239:30;;;;;:15;:5;:15;;;;:30;;16263:4;;16239:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16230:6;:39;16229:55;;;;;;16212:72;;16317:32;16334:14;:6;:12;:14::i;:::-;16317:12;;:16;;;;:32::i;:::-;16295:11;;;;;;;;:5;:11;;;;;:54;;;;;;;;;;;;;;;;16384:21;;;;;;;;16418:30;;:5;:18;16437:2;16441:6;16418:18;:30::i;:::-;16489:1;16466:34;;16475:4;16466:34;;;16493:6;16466:34;;;;;;:::i;:::-;;;;;;;;15943:565;;;;;:::o;845:161::-;894:9;924:16;;;;916:57;;;;;;;;;;;;:::i;:::-;-1:-1:-1;996:1:0;845:161::o;6891:382::-;7037:12;7051:17;7080:5;7072:19;;3936:10;7115:17;;7134:4;7140:2;7144:6;7092:59;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7072:80;;;;7092:59;7072:80;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7036:116;;;;7171:7;:57;;;;-1:-1:-1;7183:11:0;;:16;;:44;;;7214:4;7203:24;;;;;;;;;;;;:::i;:::-;7163:102;;;;;;;;;;;;:::i;:::-;6891:382;;;;;;:::o;9145:331::-;9206:14;9322:40;;;;;;;;;;;;;;;;;9385:18;:16;:18::i;:::-;9426:8;9283:170;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;9255:213;;;;;;9233:235;;9145:331;;;:::o;8128:277::-;8202:7;7714:68;8332:7;8366:4;8253:133;;;;;;;;;;:::i;1619:138::-;1712:5;;;1707:16;;;;;;;;;1699:50;;;;;;;;;;;;:::i;6228:340::-;6347:12;6361:17;6390:5;6382:19;;3846:10;6425:12;;6439:2;6443:6;6402:48;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6382:69;;;;6402:48;6382:69;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6346:105;;;;6470:7;:57;;;;-1:-1:-1;6482:11:0;;:16;;:44;;;6513:4;6502:24;;;;;;;;;;;;:::i;:::-;6462:98;;;;;;;;;;;;:::i;:::-;6228:340;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o;5:130::-;72:20;;21094:42;21083:54;;22123:35;;22113:2;;22172:1;;22162:12;825:241;;929:2;917:9;908:7;904:23;900:32;897:2;;;-1:-1;;935:12;897:2;997:53;1042:7;1018:22;997:53;:::i;:::-;987:63;891:175;-1:-1;;;891:175::o;1073:366::-;;;1194:2;1182:9;1173:7;1169:23;1165:32;1162:2;;;-1:-1;;1200:12;1162:2;1262:53;1307:7;1283:22;1262:53;:::i;:::-;1252:63;;1370:53;1415:7;1352:2;1395:9;1391:22;1370:53;:::i;:::-;1360:63;;1156:283;;;;;:::o;1446:491::-;;;;1584:2;1572:9;1563:7;1559:23;1555:32;1552:2;;;-1:-1;;1590:12;1552:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1642:63;-1:-1;1742:2;1781:22;;72:20;97:33;72:20;97:33;:::i;:::-;1546:391;;1750:63;;-1:-1;;;1850:2;1889:22;;;;481:20;;1546:391::o;1944:991::-;;;;;;;;2148:3;2136:9;2127:7;2123:23;2119:33;2116:2;;;-1:-1;;2155:12;2116:2;2217:53;2262:7;2238:22;2217:53;:::i;:::-;2207:63;;2325:53;2370:7;2307:2;2350:9;2346:22;2325:53;:::i;:::-;2315:63;;2415:2;2458:9;2454:22;481:20;2423:63;;2523:2;2566:9;2562:22;481:20;2531:63;;2631:3;2673:9;2669:22;757:20;21299:4;22637:5;21288:16;22614:5;22611:33;22601:2;;-1:-1;;22648:12;22601:2;2110:825;;;;-1:-1;2110:825;;;;2640:61;2738:3;2778:22;;344:20;;-1:-1;2847:3;2887:22;;;344:20;;2110:825;-1:-1;;2110:825::o;2942:366::-;;;3063:2;3051:9;3042:7;3038:23;3034:32;3031:2;;;-1:-1;;3069:12;3031:2;3131:53;3176:7;3152:22;3131:53;:::i;:::-;3121:63;3221:2;3260:22;;;;481:20;;-1:-1;;;3025:283::o;3315:257::-;;3427:2;3415:9;3406:7;3402:23;3398:32;3395:2;;;-1:-1;;3433:12;3395:2;223:6;217:13;22269:5;20796:13;20789:21;22247:5;22244:32;22234:2;;-1:-1;;22280:12;3579:241;;3683:2;3671:9;3662:7;3658:23;3654:32;3651:2;;;-1:-1;;3689:12;3651:2;-1:-1;481:20;;3645:175;-1:-1;3645:175::o;3827:263::-;;3942:2;3930:9;3921:7;3917:23;3913:32;3910:2;;;-1:-1;;3948:12;3910:2;-1:-1;629:13;;3904:186;-1:-1;3904:186::o;9782:271::-;;4767:5;19983:12;4878:52;4923:6;4918:3;4911:4;4904:5;4900:16;4878:52;:::i;:::-;4942:16;;;;;9916:137;-1:-1;;9916:137::o;10060:553::-;;4767:5;19983:12;4878:52;4923:6;4918:3;4911:4;4904:5;4900:16;4878:52;:::i;:::-;4942:16;;;;4399:37;;;-1:-1;4911:4;10465:12;;4399:37;10576:12;;;10252:361;-1:-1;10252:361::o;10620:222::-;21094:42;21083:54;;;;4168:37;;10747:2;10732:18;;10718:124::o;10849:444::-;21094:42;21083:54;;;4168:37;;21083:54;;;;11196:2;11181:18;;4168:37;11279:2;11264:18;;4399:37;;;;11032:2;11017:18;;11003:290::o;11300:333::-;21094:42;21083:54;;;;4168:37;;11619:2;11604:18;;4399:37;11455:2;11440:18;;11426:207::o;11640:210::-;20796:13;;20789:21;4282:34;;11761:2;11746:18;;11732:118::o;11857:222::-;4399:37;;;11984:2;11969:18;;11955:124::o;12086:780::-;4399:37;;;21094:42;21083:54;;;12518:2;12503:18;;4168:37;21083:54;;;;12601:2;12586:18;;4168:37;12684:2;12669:18;;4399:37;12767:3;12752:19;;4399:37;;;;12851:3;12836:19;;4399:37;12353:3;12338:19;;12324:542::o;12873:444::-;4399:37;;;13220:2;13205:18;;4399:37;;;;21094:42;21083:54;13303:2;13288:18;;4168:37;13056:2;13041:18;;13027:290::o;13324:548::-;4399:37;;;21299:4;21288:16;;;;13692:2;13677:18;;9735:35;13775:2;13760:18;;4399:37;13858:2;13843:18;;4399:37;13531:3;13516:19;;13502:370::o;14136:310::-;;14283:2;14304:17;14297:47;5276:5;19983:12;20422:6;14283:2;14272:9;14268:18;20410:19;5370:52;5415:6;20450:14;14272:9;20450:14;14283:2;5396:5;5392:16;5370:52;:::i;:::-;22047:2;22027:14;22043:7;22023:28;5434:39;;;;20450:14;5434:39;;14254:192;-1:-1;;14254:192::o;14453:416::-;14653:2;14667:47;;;6077:2;14638:18;;;20410:19;6113:23;20450:14;;;6093:44;6156:12;;;14624:245::o;14876:416::-;15076:2;15090:47;;;6407:1;15061:18;;;20410:19;6442:8;20450:14;;;6422:29;6470:12;;;15047:245::o;15299:416::-;15499:2;15513:47;;;6721:2;15484:18;;;20410:19;6757:30;20450:14;;;6737:51;6807:12;;;15470:245::o;15722:416::-;15922:2;15936:47;;;7058:2;15907:18;;;20410:19;7094:15;20450:14;;;7074:36;7129:12;;;15893:245::o;16145:416::-;16345:2;16359:47;;;7380:2;16330:18;;;20410:19;7416:13;20450:14;;;7396:34;7449:12;;;16316:245::o;16568:416::-;16768:2;16782:47;;;7700:2;16753:18;;;20410:19;7736:14;20450;;;7716:35;7770:12;;;16739:245::o;16991:416::-;17191:2;17205:47;;;8021:2;17176:18;;;20410:19;8057:30;20450:14;;;8037:51;8107:12;;;17162:245::o;17414:416::-;17614:2;17628:47;;;8358:2;17599:18;;;20410:19;8394:13;20450:14;;;8374:34;8427:12;;;17585:245::o;17837:416::-;18037:2;18051:47;;;18022:18;;;20410:19;8714:34;20450:14;;;8694:55;8768:12;;;18008:245::o;18260:416::-;18460:2;18474:47;;;9019:2;18445:18;;;20410:19;9055:12;20450:14;;;9035:33;9087:12;;;18431:245::o;18683:416::-;18883:2;18897:47;;;9338:1;18868:18;;;20410:19;9373:9;20450:14;;;9353:30;9402:12;;;18854:245::o;19106:333::-;20974:34;20963:46;;;9499:37;;20963:46;;19425:2;19410:18;;9499:37;19261:2;19246:18;;19232:207::o;19675:214::-;21299:4;21288:16;;;;9735:35;;19798:2;19783:18;;19769:120::o;21602:268::-;21667:1;21674:101;21688:6;21685:1;21682:13;21674:101;;;21755:11;;;21749:18;21736:11;;;21729:39;21710:2;21703:10;21674:101;;;21790:6;21787:1;21784:13;21781:2;;;21667:1;21846:6;21841:3;21837:16;21830:27;21781:2;;21651:219;;;:::o;22064:117::-;21094:42;22151:5;21083:54;22126:5;22123:35;22113:2;;22172:1;;22162:12;22113:2;22107:74;:::o

Swarm Source

ipfs://a78789a0d025ef289ef4f73086adce9b69de5eb1dd57ccdd76fe4b2f75227e69
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.