Contract 0xee8706d3a7c69f31efa5eff4a93480ca0e99f0d9

 
Txn Hash
Block
From
To
Value
0xd512b40ceb972bb861268217048e5371fa71dcd16f95921001308e5075c7b8de120031392021-03-09 8:03:5234 days 5 hrs ago0xae6a9778dfb948c67991d73d71250dd41e98d138 IN  0xee8706d3a7c69f31efa5eff4a93480ca0e99f0d90 Ether0.008011198816111.100000233
0xc038e12f0d3aafb04a663e4fcc29636f1df70713a65914dd3c654a7910d032f8119382092021-02-27 8:12:0944 days 5 hrs ago0xbf86997fd2e44350a172976f2b52797102876345 IN  0xee8706d3a7c69f31efa5eff4a93480ca0e99f0d90 Ether0.00531104493
0x0bccb0efecaf55216c2aaa657a6b3f31facab0a849cf110a4d54336a1233dd89117241462021-01-25 9:53:1277 days 3 hrs ago0xdbeabf5782e7b2d28d10e6fed886b5221abbac26 IN  0xee8706d3a7c69f31efa5eff4a93480ca0e99f0d90 Ether0.00439731677
0x8711c67ab42c0c23f7717969899a43f811ba3ee933b14dbfdb90d497894febf5117241292021-01-25 9:48:5477 days 3 hrs ago0x6cb32956ea63f1783fd42d84459913c7425a60e4 IN  0xee8706d3a7c69f31efa5eff4a93480ca0e99f0d90 Ether0.00555231677
0x20dbdd4b4d9c3d9a1bdb24604c05db988722e5516b25ccd167fca926a72a4f84116455502021-01-13 8:27:5289 days 5 hrs ago0xfe955208dde41c3ce8fae4ad0c017b7f0bc5188c IN  0xee8706d3a7c69f31efa5eff4a93480ca0e99f0d90 Ether0.001427750
0xc6dd35b9232a55b5a089b334c7dbfafe0210ee6cc14bb6b82c79bac57900246e116440902021-01-13 2:57:2689 days 10 hrs ago0xdfbdbb638c80a727a6c9551832b3bbf7898fef07 IN  0xee8706d3a7c69f31efa5eff4a93480ca0e99f0d90 Ether0.00365491208364.000001459
0x9a94bf17b15f8c85a0958620c8e2e6932016e7f6a17afcc1139a8a4aca83beec116200872021-01-09 10:39:5293 days 3 hrs ago0x7c2d13f3f2dfc7f85ae58353d3df7bee9ce55dbc IN  0xee8706d3a7c69f31efa5eff4a93480ca0e99f0d90 Ether0.00454280463
0xc2c18531864155d5416cba5fefa62dc08fa2c3b9e6c93e454bdcb50518bd8acc116061632021-01-07 7:20:1895 days 6 hrs ago0x3efe0fada92e1e609909cba27a1f843bd7f5cf0b IN  0xee8706d3a7c69f31efa5eff4a93480ca0e99f0d90 Ether0.00345503403260.500000561
0x6ea49b01f74b79dce2949f15fa3ad666cca7936595f94ac8181bc604e44e5473116009462021-01-06 12:15:2196 days 1 hr ago0xcb58491150ff465fac98706d64d8c28a0d9f73fe IN  0xee8706d3a7c69f31efa5eff4a93480ca0e99f0d90 Ether0.00376912808466.000001481
0x5e82ac568d3ecaac1d657d4f4ac3db0b42fed17441188930a7d013e8f29c9b05116009362021-01-06 12:13:3296 days 1 hr ago0xcb58491150ff465fac98706d64d8c28a0d9f73fe IN  0xee8706d3a7c69f31efa5eff4a93480ca0e99f0d90 Ether0.00598496483
0x6787a50a8c8c558425235344d76759dbf1bcb35ab7096cff3bf43cf2a3038e5d116009312021-01-06 12:12:3196 days 1 hr ago0x0861f9f089ae4274468fe5dd4c2281c8afed2f0a IN  0xee8706d3a7c69f31efa5eff4a93480ca0e99f0d90 Ether0.0068502695
0x12df103660d12610a91aacc8750b90762476f94a87edbd34ceb1007345dcc30a115913072021-01-05 0:34:3597 days 13 hrs ago0x3f3ca930a4dda5059785fdaaa39bd94d71e4edcd IN  0xee8706d3a7c69f31efa5eff4a93480ca0e99f0d90 Ether0.01153728160
0x87e381f3a23bf4b9b481fc1f65498d4344205d7e47ca44258df2b9b16c42e1a3115750162021-01-02 12:34:08100 days 1 hr ago0xbf86997fd2e44350a172976f2b52797102876345 IN  0xee8706d3a7c69f31efa5eff4a93480ca0e99f0d90 Ether0.00519682808391.000001459
0xd55ca150ccaf21d122be342517efcf9705580aa0a811d1f777e22e6902dc10ae115596362020-12-31 4:06:57102 days 9 hrs ago0xb54df71aa61aa77a12142ba22b63dd807f874ef5 IN  0xee8706d3a7c69f31efa5eff4a93480ca0e99f0d90 Ether0.008220312114
0xaa7a90387c61d97e71579f49e5fcb145e2f08ce5ec20af003b3afb9a8ecebbd6115595262020-12-31 3:41:04102 days 9 hrs ago0x24593a487eb9fff230a469af5ca34741ed3395ad IN  0xee8706d3a7c69f31efa5eff4a93480ca0e99f0d90 Ether0.008148204113
0x7edb84a0401c7821059f115d4be422068fcfafcc662927e214575674fba3d0b9115549882020-12-30 11:03:27103 days 2 hrs ago0x7429260ebefd9c0d6cf0e7fd2c4fd3a643603971 IN  0xee8706d3a7c69f31efa5eff4a93480ca0e99f0d90 Ether0.00191867967
0x19ef60d69f8b61991ddba1cbf96207625ffb16bb16fa3d575d8d800316ec6aa7115549882020-12-30 11:03:27103 days 2 hrs ago0x7429260ebefd9c0d6cf0e7fd2c4fd3a643603971 IN  0xee8706d3a7c69f31efa5eff4a93480ca0e99f0d90 Ether0.00382623667
0xda937fab956f1c1362270698341eed2bf63fe171d385c7951bd63fe384272772115024602020-12-22 9:32:19111 days 4 hrs ago0xae6a9778dfb948c67991d73d71250dd41e98d138 IN  0xee8706d3a7c69f31efa5eff4a93480ca0e99f0d90 Ether0.00544415409775.500001351
0x0b0d66b70616a64e90db3b71b1dbc23b4daeafd2012ac04e3e3f2a37a9479c8a114953482020-12-21 7:26:26112 days 6 hrs ago0xbf86997fd2e44350a172976f2b52797102876345 IN  0xee8706d3a7c69f31efa5eff4a93480ca0e99f0d90 Ether0.00132505979123.2027
0x3f2167597441de065031909fd96d0f19ebcef1c5a125bf3aecb86870bf12b39c114565702020-12-15 8:35:11118 days 5 hrs ago0xa6abccbb486969cce6fcdf3a604f221e217e4516 IN  0xee8706d3a7c69f31efa5eff4a93480ca0e99f0d90 Ether0.00569653279
0xb3535a95052f7b97b914faf53b01bde476ecd99df83e29a688cb8b96b3bd1134114167282020-12-09 5:14:47124 days 8 hrs ago0x3efe0fada92e1e609909cba27a1f843bd7f5cf0b IN  0xee8706d3a7c69f31efa5eff4a93480ca0e99f0d90 Ether0.0017132400730.000001235
0x04a03423ff40a08dcb514f77c0ca7d394030c2ce8bd4eab31726e4d38cfa4ba1114106652020-12-08 6:58:53125 days 6 hrs ago0x6f4cc36375ef60af5eca1878d9d45eb142c4260f IN  0xee8706d3a7c69f31efa5eff4a93480ca0e99f0d90 Ether0.001377262819.1
0xed819fb12ffd39cf4ec2252d96d3f256c7d172d7c42e77a0265edbe0b563c220113934502020-12-05 15:29:11127 days 22 hrs ago0x3efe0fada92e1e609909cba27a1f843bd7f5cf0b IN  0xee8706d3a7c69f31efa5eff4a93480ca0e99f0d90 Ether0.00119926821
0xf3248828ea535a79dd3eea30ccaed0886e06358adb357b8443e0b2a444d290a8113869132020-12-04 15:17:21128 days 22 hrs ago0x3efe0fada92e1e609909cba27a1f843bd7f5cf0b IN  0xee8706d3a7c69f31efa5eff4a93480ca0e99f0d90 Ether0.00244889695142.881854589
0x9dcb16754d368a596f7556f18eb838d33b5df46880b34107d76a1f72a65a2da3113797532020-12-03 12:59:02130 days 41 mins ago0xfe955208dde41c3ce8fae4ad0c017b7f0bc5188c IN  0xee8706d3a7c69f31efa5eff4a93480ca0e99f0d90 Ether0.00094405401421.249077491
[ Download CSV Export 
View more zero value Internal Transactions in Advanced View mode
Loading

Contract Source Code Verified (Similar Match)
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x2486f5d360e81df51e16417b3b03e8002e9471a8

Contract Name:
LynStaking

Compiler Version
v0.6.6+commit.6c089d02

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-10-25
*/

pragma solidity ^0.6.0;


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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

// SPDX-License-Identifier: MIT
/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable is Context {
    address private _owner;

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

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

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

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

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

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

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

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

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

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

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

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

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

// SPDX-License-Identifier: MIT
/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

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

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

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

// SPDX-License-Identifier: MIT
contract LynStaking is Ownable {
    using SafeMath for uint256;
    bytes4 private constant TRANSFER_SELECTOR = bytes4(keccak256(bytes('transfer(address,uint256)')));
    bytes4 private constant TRANSFER_FROM_SELECTOR = bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
    bytes4 private constant BALANCE_OF_SELECTOR = bytes4(keccak256(bytes('balanceOf(address)')));

    uint256 private marketPrice;
    uint256 private lockTime;
    uint256 private startDepositTime;

    uint256 private dayInterestRate;
    uint256 private secondInterestRate;
    uint256 private PERCENT_DECIMAL = 1e18;
    uint256 private DECIMAL = 1e18;

    uint256 private totalFund;

    uint256 public totalDeposit;

    address public depositToken;
    address public rewardToken;

    bool private stakable;

    mapping(address=>uint256) capitals;
    mapping(address=>uint256) lastDepositTime;
    mapping(address=>uint256) lastActivityTime;
    mapping(address=>uint256) accumulationInterest;

    event DepositStart();
    event DepositStop();
    event UpdatePrice(uint256 newPrice);
    event UpdateInterestRate(uint256 newRate);
    event AddFund(uint256 amount);

    event Deposit(address indexed staker, uint256 amount);
    event Withdraw(address indexed staker, uint256 amount);
    event Claim(address indexed staker, uint256 amount);

    modifier onlyStakable() {
        require(stakable, "Not start staking yet");
        _;
    }

    /**
     * IMPORTANT
     * _dayInterestRate
     * Since not supporting float point number of Solidity the input of this function should be multiplied by 10^18.
     * Eg:
     *   1% = 1/100 * 10^18 = 10000000000000000
     *   1.2% = 1.2/100 * 10^18 = 12000000000000000
     *   0.00556% = 0.00556/100 * 10^18 = 55600000000000
     * Use this tool https://keisan.casio.com/calculator to calculate the rate
     */
    constructor(
        address _depositTokenAddr,
        address _rewardTokenAddr,
        uint256 _lockTime,
        uint256 _dayInterestRate
    ) public {
        depositToken = _depositTokenAddr;
        rewardToken = _rewardTokenAddr;
        lockTime = _lockTime;
        dayInterestRate = _dayInterestRate;
        secondInterestRate = _dayInterestRate.div(86400);
    }

    //////////////////////////////////////
    // OPERATION FUNCTIONS
    //////////////////////////////////////
    function depositStart() external onlyOwner() {
        stakable = true;
        emit DepositStart();
    }

    function depositStop() external onlyOwner() {
        stakable = false;
        emit DepositStop();
    }

    /**
     * The input must be multiplied by 10^decimals
     */
    function updateMarketPrice(uint256 _newPrice) external onlyOwner() {
        marketPrice = _newPrice;
        emit UpdatePrice(_newPrice);
    }

    // Add fund to contract
    function adminFund(uint256 _amount) external onlyOwner() {
        _safeTransferFrom(rewardToken, msg.sender, address(this), _amount);
        totalFund = totalFund.add(_amount);
        emit AddFund(_amount);
    }

    // Send all reward token to owner's address in urgent case
    function drain() external onlyOwner() {
        uint256 balance = _getBalanceOf(rewardToken, address(this));
        _safeTransfer(rewardToken, msg.sender, balance);
    }

    // Transfer USDT to owner address
    function transfer(uint256 _amount) external onlyOwner() {
        _safeTransfer(depositToken, msg.sender, _amount);
    }

    //////////////////////////////////////
    // PUBLIC FUNCTIONS
    //////////////////////////////////////

    function deposit(uint256 _amount) onlyStakable() external {
        _safeTransferFrom(depositToken, msg.sender, address(this), _amount);
        uint256 interest = _estimateInterest(msg.sender);
        accumulationInterest[msg.sender] = accumulationInterest[msg.sender].add(interest);

        capitals[msg.sender] = capitals[msg.sender].add(_amount);
        lastDepositTime[msg.sender] = block.timestamp;
        lastActivityTime[msg.sender] = block.timestamp;

        totalDeposit = totalDeposit.add(_amount);

        emit Deposit(msg.sender, _amount);
    }

    function claimReward() external {
        uint256 reward = checkLynReward(msg.sender);
        require(reward > 0, "Small reward");

        lastActivityTime[msg.sender] = block.timestamp;
        accumulationInterest[msg.sender] = 0;

        _safeTransfer(rewardToken, msg.sender, reward);
        emit Claim(msg.sender, reward);
    }

    // Withdraw all deposit + reward
    function withdraw() external {
        require(lastDepositTime[msg.sender].add(lockTime) <= block.timestamp, "Not expired");

        uint256 reward = checkLynReward(msg.sender);
        lastActivityTime[msg.sender] = block.timestamp;
        accumulationInterest[msg.sender] = 0;

        totalDeposit = totalDeposit.sub(capitals[msg.sender]);

        uint256 returnAmount = capitals[msg.sender].mul(DECIMAL).div(marketPrice);
        capitals[msg.sender] = 0;

        returnAmount = returnAmount.add(reward);

        _safeTransfer(rewardToken, msg.sender, returnAmount);
        emit Withdraw(msg.sender, returnAmount);
    }

    function _estimateInterest(address _staker) internal view returns (uint256) {
        uint256 d = block.timestamp.sub(lastActivityTime[_staker]);
        uint256 interest = _caculateInterest(capitals[_staker], d);
        return interest.add(accumulationInterest[_staker]);
    }

    function _caculateInterest(uint256 capital, uint d) internal view returns (uint256) {
        return capital.mul(d).mul(secondInterestRate).div(PERCENT_DECIMAL).mul(DECIMAL);
    }

    //////////////////////////////////////
    // GET FUNCTIONS
    //////////////////////////////////////
    function checkUserCapital(address _address) public view returns (uint256){
        return capitals[_address];
    }

    function checkUserCapitalLyn(address _address) public view returns (uint256){
        return capitals[_address].mul(DECIMAL).div(marketPrice);
    }

    function checkLynReward(address _staker) public view returns (uint256) {
        return _estimateInterest(_staker).div(marketPrice);
    }

    function checkReward(address _staker) public view returns (uint256) {
        return _estimateInterest(_staker).div(DECIMAL);
    }

    function checkDepositStart() public view returns (bool) {
        return stakable;
    }

    function checkPrice() public view returns(uint256) {
        return marketPrice;
    }

    function checkStakeRateYear() public view returns(uint256) {
        return dayInterestRate.mul(365);
    }

    function checkStakeRateDay() public view returns(uint256) {
        return dayInterestRate;
    }

    //////////////////////////////////////
    // UTILITY FUNCTIONS
    //////////////////////////////////////

    // ERC20:
    // Functions `transfer`, `transferFrom` should return bool
    // but some token returns void instead of following the standard
    // Since, we need to accept void return as a successful transfer
    function _safeTransfer(address token, address to, uint value) private {
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(TRANSFER_SELECTOR, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TRANSFER_FAILED');
    }

    function _safeTransferFrom(address token, address from, address to, uint value) private {
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(TRANSFER_FROM_SELECTOR, from, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TRANSFER_FROM_FAILED');
    }

    function _getBalanceOf(address token, address account) private returns(uint256) {
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(BALANCE_OF_SELECTOR, account));
        require(success, 'BALACE_OF_FAILED');
        uint256 balance = abi.decode(data,(uint256));
        return balance;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_depositTokenAddr","type":"address"},{"internalType":"address","name":"_rewardTokenAddr","type":"address"},{"internalType":"uint256","name":"_lockTime","type":"uint256"},{"internalType":"uint256","name":"_dayInterestRate","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"AddFund","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[],"name":"DepositStart","type":"event"},{"anonymous":false,"inputs":[],"name":"DepositStop","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newRate","type":"uint256"}],"name":"UpdateInterestRate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newPrice","type":"uint256"}],"name":"UpdatePrice","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"adminFund","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkDepositStart","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_staker","type":"address"}],"name":"checkLynReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_staker","type":"address"}],"name":"checkReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkStakeRateDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkStakeRateYear","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"checkUserCapital","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"checkUserCapitalLyn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depositStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depositStop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depositToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"drain","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"updateMarketPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052670de0b6b3a7640000600655670de0b6b3a76400006007553480156200002957600080fd5b50604051620027f8380380620027f8833981810160405260808110156200004f57600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190505050600062000090620001eb60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35083600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160028190555080600481905550620001db6201518082620001f360201b62001c151790919060201c565b6005819055505050505062000310565b600033905090565b60006200023d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200024560201b60201c565b905092915050565b60008083118290620002f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620002b95780820151818401526020810190506200029c565b50505050905090810190601f168015620002e75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816200030257fe5b049050809150509392505050565b6124d880620003206000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063a7e0a3c3116100c3578063c89039c51161007c578063c89039c514610440578063d9c146de1461048a578063e527788014610494578063f2fde38b146104b6578063f6153ccd146104fa578063f7c618c1146105185761014d565b8063a7e0a3c314610330578063a8ab065114610388578063b6b55f25146103a6578063b88a802f146103d4578063c3c90e64146103de578063c7688cf3146104365761014d565b806362d46b6c1161011557806362d46b6c14610268578063715018a6146102865780638a694623146102905780638da5cb5b146102be5780638fc3047d146103085780639890220b146103265761014d565b806312514bba1461015257806312f4465d1461018057806324e72ec2146101d85780633ccfd60b1461023057806357b71ea71461023a575b600080fd5b61017e6004803603602081101561016857600080fd5b8101908080359060200190929190505050610562565b005b6101c26004803603602081101561019657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061065b565b6040518082815260200191505060405180910390f35b61021a600480360360208110156101ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106a4565b6040518082815260200191505060405180910390f35b6102386106ca565b005b6102666004803603602081101561025057600080fd5b81019080803590602001909291905050506109c8565b005b610270610ad2565b6040518082815260200191505060405180910390f35b61028e610adc565b005b6102bc600480360360208110156102a657600080fd5b8101908080359060200190929190505050610c64565b005b6102c6610db0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610310610dd9565b6040518082815260200191505060405180910390f35b61032e610de3565b005b6103726004803603602081101561034657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f0c565b6040518082815260200191505060405180910390f35b610390610f7d565b6040518082815260200191505060405180910390f35b6103d2600480360360208110156103bc57600080fd5b8101908080359060200190929190505050610f9b565b005b6103dc611277565b005b610420600480360360208110156103f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611401565b6040518082815260200191505060405180910390f35b61043e611427565b005b610448611539565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61049261155f565b005b61049c611671565b604051808215151515815260200191505060405180910390f35b6104f8600480360360208110156104cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611688565b005b610502611895565b6040518082815260200191505060405180910390f35b61052061189b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61056a6118c1565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461062b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610658600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633836118c9565b50565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006106c36001546106b584611b16565b611c1590919063ffffffff16565b9050919050565b4261071f600254600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c5f90919063ffffffff16565b1115610793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f4e6f74206578706972656400000000000000000000000000000000000000000081525060200191505060405180910390fd5b600061079e336106a4565b905042600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061087d600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600954611ce790919063ffffffff16565b60098190555060006108ed6001546108df600754600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3190919063ffffffff16565b611c1590919063ffffffff16565b90506000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506109478282611c5f90919063ffffffff16565b9050610976600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633836118c9565b3373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364826040518082815260200191505060405180910390a25050565b6109d06118c1565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a91576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b806001819055507f1a15ab7124a4e1ce00837351261771caf1691cd7d85ed3a0ac3157a1ee1a3805816040518082815260200191505060405180910390a150565b6000600454905090565b610ae46118c1565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ba5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c6c6118c1565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d2d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610d5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16333084611db7565b610d7081600854611c5f90919063ffffffff16565b6008819055507f7a651fc0ce07714731a81504253279844b66813feb5b6317eb21da01efa1dc09816040518082815260200191505060405180910390a150565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600154905090565b610deb6118c1565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000610eda600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163061201c565b9050610f09600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633836118c9565b50565b6000610f76600154610f68600754600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3190919063ffffffff16565b611c1590919063ffffffff16565b9050919050565b6000610f9661016d600454611d3190919063ffffffff16565b905090565b600b60149054906101000a900460ff1661101d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4e6f74207374617274207374616b696e6720796574000000000000000000000081525060200191505060405180910390fd5b61104b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16333084611db7565b600061105633611b16565b90506110aa81600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c5f90919063ffffffff16565b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061113f82600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c5f90919063ffffffff16565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061121f82600954611c5f90919063ffffffff16565b6009819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c836040518082815260200191505060405180910390a25050565b6000611282336106a4565b9050600081116112fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f536d616c6c20726577617264000000000000000000000000000000000000000081525060200191505060405180910390fd5b42600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113b0600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633836118c9565b3373ffffffffffffffffffffffffffffffffffffffff167f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4826040518082815260200191505060405180910390a250565b600061142060075461141284611b16565b611c1590919063ffffffff16565b9050919050565b61142f6118c1565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600b60146101000a81548160ff0219169083151502179055507f1db17fe797d7d8b905e15f728289edd3d8ea07a9f7163ac75e523b755e666e8260405160405180910390a1565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6115676118c1565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611628576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600b60146101000a81548160ff0219169083151502179055507fd0dbbfa1e915b0ed29f57a67bf369dd2ce5f3099fcdc7b153b17bad9d152d37260405160405180910390a1565b6000600b60149054906101000a900460ff16905090565b6116906118c1565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611751576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061245c6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600060608473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280601981526020017f7472616e7366657228616464726573732c75696e743235362900000000000000815250805190602001208585604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106119f657805182526020820191506020810190506020830392506119d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611a58576040519150601f19603f3d011682016040523d82523d6000602084013e611a5d565b606091505b5091509150818015611a9d5750600081511480611a9c5750808060200190516020811015611a8a57600080fd5b81019080805190602001909291905050505b5b611b0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5452414e534645525f4641494c4544000000000000000000000000000000000081525060200191505060405180910390fd5b5050505050565b600080611b6b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442611ce790919063ffffffff16565b90506000611bb8600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612257565b9050611c0c600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611c5f90919063ffffffff16565b92505050919050565b6000611c5783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122b0565b905092915050565b600080828401905083811015611cdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000611d2983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612376565b905092915050565b600080831415611d445760009050611db1565b6000828402905082848281611d5557fe5b0414611dac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806124826021913960400191505060405180910390fd5b809150505b92915050565b600060608573ffffffffffffffffffffffffffffffffffffffff166040518060600160405280602581526020016124376025913980519060200120868686604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310611efb5780518252602082019150602081019050602083039250611ed8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611f5d576040519150601f19603f3d011682016040523d82523d6000602084013e611f62565b606091505b5091509150818015611fa25750600081511480611fa15750808060200190516020811015611f8f57600080fd5b81019080805190602001909291905050505b5b612014576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5452414e534645525f46524f4d5f4641494c454400000000000000000000000081525060200191505060405180910390fd5b505050505050565b60008060608473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280601281526020017f62616c616e63654f6628616464726573732900000000000000000000000000008152508051906020012085604051602401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310612142578051825260208201915060208101905060208303925061211f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146121a4576040519150601f19603f3d011682016040523d82523d6000602084013e6121a9565b606091505b509150915081612221576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f42414c4143455f4f465f4641494c45440000000000000000000000000000000081525060200191505060405180910390fd5b600081806020019051602081101561223857600080fd5b8101908080519060200190929190505050905080935050505092915050565b60006122a860075461229a60065461228c60055461227e888a611d3190919063ffffffff16565b611d3190919063ffffffff16565b611c1590919063ffffffff16565b611d3190919063ffffffff16565b905092915050565b6000808311829061235c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612321578082015181840152602081019050612306565b50505050905090810190601f16801561234e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161236857fe5b049050809150509392505050565b6000838311158290612423576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156123e85780820151818401526020810190506123cd565b50505050905090810190601f1680156124155780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838503905080915050939250505056fe7472616e7366657246726f6d28616464726573732c616464726573732c75696e74323536294f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220fb866dc95587078ad321d2ec660374dbee55cf8279b7ebc5c11fea7cef289a9b64736f6c63430006060033000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000b0b1685f55843d03739c7d9b0a230f1b7dcf03d50000000000000000000000000000000000000000000000000000000001e133800000000000000000000000000000000000000000000000000005d392416e8000

Deployed ByteCode Sourcemap

11308:8177:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11308:8177:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;14744:123:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;14744:123:0;;;;;;;;;;;;;;;;;:::i;:::-;;17211:117;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;17211:117:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17494:140;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;17494:140:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15966:646;;;:::i;:::-;;14048:147;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;14048:147:0;;;;;;;;;;;;;;;;;:::i;:::-;;18094:99;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2642:148;;;:::i;:::-;;14232:219;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;14232:219:0;;;;;;;;;;;;;;;;;:::i;:::-;;2000:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17881:88;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14523:174;;;:::i;:::-;;17336:150;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;17336:150:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17977:109;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14990:576;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;14990:576:0;;;;;;;;;;;;;;;;;:::i;:::-;;15574:346;;;:::i;:::-;;17642:133;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;17642:133:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13862:108;;;:::i;:::-;;12044:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13745:109;;;:::i;:::-;;17783:90;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2945:244;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2945:244:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;12008:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12078:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14744:123;2222:12;:10;:12::i;:::-;2212:22;;:6;;;;;;;;;;;:22;;;2204:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14811:48:::1;14825:12;;;;;;;;;;;14839:10;14851:7;14811:13;:48::i;:::-;14744:123:::0;:::o;17211:117::-;17276:7;17302:8;:18;17311:8;17302:18;;;;;;;;;;;;;;;;17295:25;;17211:117;;;:::o;17494:140::-;17556:7;17583:43;17614:11;;17583:26;17601:7;17583:17;:26::i;:::-;:30;;:43;;;;:::i;:::-;17576:50;;17494:140;;;:::o;15966:646::-;16059:15;16014:41;16046:8;;16014:15;:27;16030:10;16014:27;;;;;;;;;;;;;;;;:31;;:41;;;;:::i;:::-;:60;;16006:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16103:14;16120:26;16135:10;16120:14;:26::i;:::-;16103:43;;16188:15;16157:16;:28;16174:10;16157:28;;;;;;;;;;;;;;;:46;;;;16249:1;16214:20;:32;16235:10;16214:32;;;;;;;;;;;;;;;:36;;;;16278:38;16295:8;:20;16304:10;16295:20;;;;;;;;;;;;;;;;16278:12;;:16;;:38;;;;:::i;:::-;16263:12;:53;;;;16329:20;16352:50;16390:11;;16352:33;16377:7;;16352:8;:20;16361:10;16352:20;;;;;;;;;;;;;;;;:24;;:33;;;;:::i;:::-;:37;;:50;;;;:::i;:::-;16329:73;;16436:1;16413:8;:20;16422:10;16413:20;;;;;;;;;;;;;;;:24;;;;16465;16482:6;16465:12;:16;;:24;;;;:::i;:::-;16450:39;;16502:52;16516:11;;;;;;;;;;;16529:10;16541:12;16502:13;:52::i;:::-;16579:10;16570:34;;;16591:12;16570:34;;;;;;;;;;;;;;;;;;15966:646;;:::o;14048:147::-;2222:12;:10;:12::i;:::-;2212:22;;:6;;;;;;;;;;;:22;;;2204:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14140:9:::1;14126:11;:23;;;;14165:22;14177:9;14165:22;;;;;;;;;;;;;;;;;;14048:147:::0;:::o;18094:99::-;18143:7;18170:15;;18163:22;;18094:99;:::o;2642:148::-;2222:12;:10;:12::i;:::-;2212:22;;:6;;;;;;;;;;;:22;;;2204:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2749:1:::1;2712:40;;2733:6;::::0;::::1;;;;;;;;;2712:40;;;;;;;;;;;;2780:1;2763:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2642:148::o:0;14232:219::-;2222:12;:10;:12::i;:::-;2212:22;;:6;;;;;;;;;;;:22;;;2204:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14300:66:::1;14318:11;;;;;;;;;;;14331:10;14351:4;14358:7;14300:17;:66::i;:::-;14389:22;14403:7;14389:9;;:13;;:22;;;;:::i;:::-;14377:9;:34;;;;14427:16;14435:7;14427:16;;;;;;;;;;;;;;;;;;14232:219:::0;:::o;2000:79::-;2038:7;2065:6;;;;;;;;;;;2058:13;;2000:79;:::o;17881:88::-;17923:7;17950:11;;17943:18;;17881:88;:::o;14523:174::-;2222:12;:10;:12::i;:::-;2212:22;;:6;;;;;;;;;;;:22;;;2204:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14572:15:::1;14590:41;14604:11;;;;;;;;;;;14625:4;14590:13;:41::i;:::-;14572:59;;14642:47;14656:11;;;;;;;;;;;14669:10;14681:7;14642:13;:47::i;:::-;2282:1;14523:174::o:0;17336:150::-;17404:7;17430:48;17466:11;;17430:31;17453:7;;17430:8;:18;17439:8;17430:18;;;;;;;;;;;;;;;;:22;;:31;;;;:::i;:::-;:35;;:48;;;;:::i;:::-;17423:55;;17336:150;;;:::o;17977:109::-;18027:7;18054:24;18074:3;18054:15;;:19;;:24;;;;:::i;:::-;18047:31;;17977:109;:::o;14990:576::-;12741:8;;;;;;;;;;;12733:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15059:67:::1;15077:12;;;;;;;;;;;15091:10;15111:4;15118:7;15059:17;:67::i;:::-;15137:16;15156:29;15174:10;15156:17;:29::i;:::-;15137:48;;15231:46;15268:8;15231:20;:32;15252:10;15231:32;;;;;;;;;;;;;;;;:36;;:46;;;;:::i;:::-;15196:20;:32;15217:10;15196:32;;;;;;;;;;;;;;;:81;;;;15313:33;15338:7;15313:8;:20;15322:10;15313:20;;;;;;;;;;;;;;;;:24;;:33;;;;:::i;:::-;15290:8;:20;15299:10;15290:20;;;;;;;;;;;;;;;:56;;;;15387:15;15357;:27;15373:10;15357:27;;;;;;;;;;;;;;;:45;;;;15444:15;15413:16;:28;15430:10;15413:28;;;;;;;;;;;;;;;:46;;;;15487:25;15504:7;15487:12;;:16;;:25;;;;:::i;:::-;15472:12;:40;;;;15538:10;15530:28;;;15550:7;15530:28;;;;;;;;;;;;;;;;;;12786:1;14990:576:::0;:::o;15574:346::-;15617:14;15634:26;15649:10;15634:14;:26::i;:::-;15617:43;;15688:1;15679:6;:10;15671:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15750:15;15719:16;:28;15736:10;15719:28;;;;;;;;;;;;;;;:46;;;;15811:1;15776:20;:32;15797:10;15776:32;;;;;;;;;;;;;;;:36;;;;15825:46;15839:11;;;;;;;;;;;15852:10;15864:6;15825:13;:46::i;:::-;15893:10;15887:25;;;15905:6;15887:25;;;;;;;;;;;;;;;;;;15574:346;:::o;17642:133::-;17701:7;17728:39;17759:7;;17728:26;17746:7;17728:17;:26::i;:::-;:30;;:39;;;;:::i;:::-;17721:46;;17642:133;;;:::o;13862:108::-;2222:12;:10;:12::i;:::-;2212:22;;:6;;;;;;;;;;;:22;;;2204:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13928:5:::1;13917:8;;:16;;;;;;;;;;;;;;;;;;13949:13;;;;;;;;;;13862:108::o:0;12044:27::-;;;;;;;;;;;;;:::o;13745:109::-;2222:12;:10;:12::i;:::-;2212:22;;:6;;;;;;;;;;;:22;;;2204:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13812:4:::1;13801:8;;:15;;;;;;;;;;;;;;;;;;13832:14;;;;;;;;;;13745:109::o:0;17783:90::-;17833:4;17857:8;;;;;;;;;;;17850:15;;17783:90;:::o;2945:244::-;2222:12;:10;:12::i;:::-;2212:22;;:6;;;;;;;;;;;:22;;;2204:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3054:1:::1;3034:22;;:8;:22;;;;3026:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3144:8;3115:38;;3136:6;::::0;::::1;;;;;;;;;3115:38;;;;;;;;;;;;3173:8;3164:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2945:244:::0;:::o;12008:27::-;;;;:::o;12078:26::-;;;;;;;;;;;;;:::o;605:106::-;658:15;693:10;686:17;;605:106;:::o;18536:285::-;18618:12;18632:17;18653:5;:10;;11440:34;;;;;;;;;;;;;;;;;11430:45;;;;;;18706:2;18710:5;18664:52;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;18664:52:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;18664:52:0;18653:64;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;18653:64:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;18617:100:0;;;;18736:7;:57;;;;;18763:1;18748:4;:11;:16;:44;;;;18779:4;18768:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;18768:24:0;;;;;;;;;;;;;;;;18748:44;18736:57;18728:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18536:285;;;;;:::o;16620:283::-;16687:7;16707:9;16719:46;16739:16;:25;16756:7;16739:25;;;;;;;;;;;;;;;;16719:15;:19;;:46;;;;:::i;:::-;16707:58;;16776:16;16795:39;16813:8;:17;16822:7;16813:17;;;;;;;;;;;;;;;;16832:1;16795:17;:39::i;:::-;16776:58;;16852:43;16865:20;:29;16886:7;16865:29;;;;;;;;;;;;;;;;16852:8;:12;;:43;;;;:::i;:::-;16845:50;;;;16620:283;;;:::o;9116:132::-;9174:7;9201:39;9205:1;9208;9201:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;9194:46;;9116:132;;;;:::o;6815:181::-;6873:7;6893:9;6909:1;6905;:5;6893:17;;6934:1;6929;:6;;6921:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6987:1;6980:8;;;6815:181;;;;:::o;7279:136::-;7337:7;7364:43;7368:1;7371;7364:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;7357:50;;7279:136;;;;:::o;8169:471::-;8227:7;8477:1;8472;:6;8468:47;;;8502:1;8495:8;;;;8468:47;8527:9;8543:1;8539;:5;8527:17;;8572:1;8567;8563;:5;;;;;;:10;8555:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8631:1;8624:8;;;8169:471;;;;;:::o;18829:319::-;18929:12;18943:17;18964:5;:10;;11549:46;;;;;;;;;;;;;;;;;11539:57;;;;;;19022:4;19028:2;19032:5;18975:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;18975:63:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;18975:63:0;18964:75;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;18964:75:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;18928:111:0;;;;19058:7;:57;;;;;19085:1;19070:4;:11;:16;:44;;;;19101:4;19090:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;19090:24:0;;;;;;;;;;;;;;;;19070:44;19058:57;19050:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18829:319;;;;;;:::o;19156:326::-;19227:7;19248:12;19262:17;19283:5;:10;;11667:27;;;;;;;;;;;;;;;;;11657:38;;;;;;19338:7;19294:52;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;19294:52:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;19294:52:0;19283:64;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;19283:64:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;19247:100:0;;;;19366:7;19358:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19405:15;19434:4;19423:26;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;19423:26:0;;;;;;;;;;;;;;;;19405:44;;19467:7;19460:14;;;;;19156:326;;;;:::o;16911:182::-;16986:7;17013:72;17077:7;;17013:59;17056:15;;17013:38;17032:18;;17013:14;17025:1;17013:7;:11;;:14;;;;:::i;:::-;:18;;:38;;;;:::i;:::-;:42;;:59;;;;:::i;:::-;:63;;:72;;;;:::i;:::-;17006:79;;16911:182;;;;:::o;9744:278::-;9830:7;9862:1;9858;:5;9865:12;9850:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;9850:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9889:9;9905:1;9901;:5;;;;;;9889:17;;10013:1;10006:8;;;9744:278;;;;;:::o;7718:192::-;7804:7;7837:1;7832;:6;;7840:12;7824:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7824:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7864:9;7880:1;7876;:5;7864:17;;7901:1;7894:8;;;7718:192;;;;;:::o

Swarm Source

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