ETH Price: $3,387.64 (-1.66%)
Gas: 4 Gwei

Contract

0xF5C78d82BDA73E5c04fbb55f6458336Ec6D41e97
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Withdraw And Get...179015182023-08-12 21:39:35325 days ago1691876375IN
0xF5C78d82...Ec6D41e97
0 ETH0.0006449511
Get Reward179008172023-08-12 19:18:35325 days ago1691867915IN
0xF5C78d82...Ec6D41e97
0 ETH0.0003727111.00000145
Accept Ownership164179212023-01-16 7:41:11533 days ago1673854871IN
0xF5C78d82...Ec6D41e97
0 ETH0.0004910417.30244569
Transfer Ownersh...164178282023-01-16 7:22:35533 days ago1673853755IN
0xF5C78d82...Ec6D41e97
0 ETH0.0006977615.09790844
Update Reward Am...163969882023-01-13 9:30:11536 days ago1673602211IN
0xF5C78d82...Ec6D41e97
0 ETH0.0003426913.74288435
Accept Ownership163969142023-01-13 9:15:23536 days ago1673601323IN
0xF5C78d82...Ec6D41e97
0 ETH0.0003794713.37134902
Transfer Ownersh...163968752023-01-13 9:07:35536 days ago1673600855IN
0xF5C78d82...Ec6D41e97
0 ETH0.0006739214.58211689
Withdraw And Get...163937382023-01-12 22:35:59537 days ago1673562959IN
0xF5C78d82...Ec6D41e97
0 ETH0.0017419523.71582457
Withdraw And Get...163937282023-01-12 22:33:59537 days ago1673562839IN
0xF5C78d82...Ec6D41e97
0 ETH0.0025969428.67937604
Withdraw And Get...163936952023-01-12 22:27:23537 days ago1673562443IN
0xF5C78d82...Ec6D41e97
0 ETH0.0021300829.00011899
Get Reward163936932023-01-12 22:26:59537 days ago1673562419IN
0xF5C78d82...Ec6D41e97
0 ETH0.0017349529.10407735
Withdraw And Get...163933642023-01-12 21:20:59537 days ago1673558459IN
0xF5C78d82...Ec6D41e97
0 ETH0.0022491730.61638848
Withdraw And Get...163933532023-01-12 21:18:47537 days ago1673558327IN
0xF5C78d82...Ec6D41e97
0 ETH0.0023230129.68672992
Withdraw And Get...163852282023-01-11 18:03:35538 days ago1673460215IN
0xF5C78d82...Ec6D41e97
0 ETH0.0021945929.878327
Withdraw And Get...163792382023-01-10 21:56:35539 days ago1673387795IN
0xF5C78d82...Ec6D41e97
0 ETH0.0018834925.64283806
Withdraw And Get...163358392023-01-04 20:32:59545 days ago1672864379IN
0xF5C78d82...Ec6D41e97
0 ETH0.001390418.92971128
Withdraw And Get...162330622022-12-21 12:25:35559 days ago1671625535IN
0xF5C78d82...Ec6D41e97
0 ETH0.0011436115.56971246
Get Reward162330552022-12-21 12:24:11559 days ago1671625451IN
0xF5C78d82...Ec6D41e97
0 ETH0.0009558916.03522884
Withdraw And Get...162330472022-12-21 12:22:35559 days ago1671625355IN
0xF5C78d82...Ec6D41e97
0 ETH0.0012777817.39639621
Withdraw And Get...162151132022-12-19 0:19:23562 days ago1671409163IN
0xF5C78d82...Ec6D41e97
0 ETH0.00075729.67513614
Get Reward162147912022-12-18 23:14:11562 days ago1671405251IN
0xF5C78d82...Ec6D41e97
0 ETH0.000600910.08034007
Withdraw And Get...161999752022-12-16 21:35:35564 days ago1671226535IN
0xF5C78d82...Ec6D41e97
0 ETH0.0012862417.50874419
Withdraw And Get...161999702022-12-16 21:34:35564 days ago1671226475IN
0xF5C78d82...Ec6D41e97
0 ETH0.0013690417.49282328
Withdraw And Get...161999652022-12-16 21:33:35564 days ago1671226415IN
0xF5C78d82...Ec6D41e97
0 ETH0.0013585517.3588847
Withdraw And Get...161999622022-12-16 21:32:59564 days ago1671226379IN
0xF5C78d82...Ec6D41e97
0 ETH0.0014176718.11421894
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
LockStakingRewardSameTokenFixedAPY

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-02-27
*/

pragma solidity =0.8.0;

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

contract Ownable {
    address public owner;
    address public newOwner;

    event OwnershipTransferred(address indexed from, address indexed to);

    constructor() {
        owner = msg.sender;
        emit OwnershipTransferred(address(0), owner);
    }

    modifier onlyOwner {
        require(msg.sender == owner, "Ownable: Caller is not the owner");
        _;
    }

    function transferOwnership(address transferOwner) public onlyOwner {
        require(transferOwner != newOwner);
        newOwner = transferOwner;
    }

    function acceptOwnership() virtual public {
        require(msg.sender == newOwner);
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
        newOwner = address(0);
    }
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
      if (a == 0) {
            return 0;
        }

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

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, "SafeMath: division by zero");
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0, "SafeMath: modulo by zero");
        return a % b;
    }
}

library Address {
    function isContract(address account) internal view returns (bool) {
        // This method relies in extcodesize, which returns 0 for contracts in construction, 
        // since the code is only stored at the end of the constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }
}

library SafeERC20 {
    using SafeMath for uint256;
    using Address for address;

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

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

    function safeApprove(IERC20 token, address spender, uint256 value) internal {
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender).add(value);
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender).sub(value);
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function callOptionalReturn(IERC20 token, bytes memory data) private {
        require(address(token).isContract(), "SafeERC20: call to non-contract");

        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) { 
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

contract ReentrancyGuard {
    /// @dev counter to allow mutex lock with only one SSTORE operation
    uint256 private _guardCounter;

    constructor () {
        // The counter starts at one to prevent changing it from zero to a non-zero
        // value, which is a more expensive operation.
        _guardCounter = 1;
    }

    modifier nonReentrant() {
        _guardCounter += 1;
        uint256 localCounter = _guardCounter;
        _;
        require(localCounter == _guardCounter, "ReentrancyGuard: reentrant call");
    }
}

interface ILockStakingRewards {
    function earned(address account) external view returns (uint256);
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function stake(uint256 amount) external;
    function stakeFor(uint256 amount, address user) external;
    function getReward() external;
    function withdraw(uint256 nonce) external;
    function withdrawAndGetReward(uint256 nonce) external;
}

interface IERC20Permit {
    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
}

contract LockStakingRewardSameTokenFixedAPY is ILockStakingRewards, ReentrancyGuard, Ownable {
    using SafeMath for uint256;
    using SafeERC20 for IERC20;

    IERC20 public token;
    uint256 public rewardRate; 
    uint256 public immutable lockDuration; 
    uint256 public constant rewardDuration = 365 days; 

    mapping(address => uint256) public weightedStakeDate;
    mapping(address => mapping(uint256 => uint256)) public stakeLocks;
    mapping(address => mapping(uint256 => uint256)) public stakeAmounts;
    mapping(address => uint256) public stakeNonces;

    uint256 private _totalSupply;
    mapping(address => uint256) private _balances;

    event RewardUpdated(uint256 reward);
    event Staked(address indexed user, uint256 amount);
    event Withdrawn(address indexed user, uint256 amount);
    event RewardPaid(address indexed user, uint256 reward);
    event Rescue(address to, uint amount);
    event RescueToken(address to, address token, uint amount);

    constructor(
        address _token,
        uint _rewardRate,
        uint _lockDuration
    ) {
        token = IERC20(_token);
        rewardRate = _rewardRate;
        lockDuration = _lockDuration;
    }

    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) external view override returns (uint256) {
        return _balances[account];
    }

    function earned(address account) public view override returns (uint256) {
        return (_balances[account].mul(block.timestamp.sub(weightedStakeDate[account])).mul(rewardRate)) / (100 * rewardDuration);
    }

    function stakeWithPermit(uint256 amount, uint deadline, uint8 v, bytes32 r, bytes32 s) external nonReentrant {
        require(amount > 0, "LockStakingRewardSameTokenFixedAPY: Cannot stake 0");
        _totalSupply = _totalSupply.add(amount);
        uint previousAmount = _balances[msg.sender];
        uint newAmount = previousAmount.add(amount);
        weightedStakeDate[msg.sender] = (weightedStakeDate[msg.sender].mul(previousAmount) / newAmount).add(block.timestamp.mul(amount) / newAmount);
        _balances[msg.sender] = newAmount;

        // permit
        IERC20Permit(address(token)).permit(msg.sender, address(this), amount, deadline, v, r, s);
        
        token.safeTransferFrom(msg.sender, address(this), amount);
        uint stakeNonce = stakeNonces[msg.sender]++;
        stakeLocks[msg.sender][stakeNonce] = block.timestamp + lockDuration;
        stakeAmounts[msg.sender][stakeNonce] = amount;
        emit Staked(msg.sender, amount);
    }

    function stake(uint256 amount) external override nonReentrant {
        require(amount > 0, "LockStakingRewardSameTokenFixedAPY: Cannot stake 0");
        _totalSupply = _totalSupply.add(amount);
        uint previousAmount = _balances[msg.sender];
        uint newAmount = previousAmount.add(amount);
        weightedStakeDate[msg.sender] = (weightedStakeDate[msg.sender].mul(previousAmount) / newAmount).add(block.timestamp.mul(amount) / newAmount);
        _balances[msg.sender] = newAmount;
        token.safeTransferFrom(msg.sender, address(this), amount);
        uint stakeNonce = stakeNonces[msg.sender]++;
        stakeLocks[msg.sender][stakeNonce] = block.timestamp + lockDuration;
        stakeAmounts[msg.sender][stakeNonce] = amount;
        emit Staked(msg.sender, amount);
    }

    function stakeFor(uint256 amount, address user) external override nonReentrant {
        require(amount > 0, "LockStakingRewardSameTokenFixedAPY: Cannot stake 0");
        _totalSupply = _totalSupply.add(amount);
        uint previousAmount = _balances[user];
        uint newAmount = previousAmount.add(amount);
        weightedStakeDate[user] = (weightedStakeDate[user].mul(previousAmount) / newAmount).add(block.timestamp.mul(amount) / newAmount);
        _balances[user] = newAmount;
        token.safeTransferFrom(msg.sender, address(this), amount);
        uint stakeNonce = stakeNonces[user]++;
        stakeLocks[user][stakeNonce] = block.timestamp + lockDuration;
        stakeAmounts[user][stakeNonce] = amount;
        emit Staked(user, amount);
    }

    //A user can withdraw its staking tokens even if there is no rewards tokens on the contract account
    function withdraw(uint256 nonce) public override nonReentrant {
        uint amount = stakeAmounts[msg.sender][nonce];
        require(stakeAmounts[msg.sender][nonce] > 0, "LockStakingRewardSameTokenFixedAPY: This stake nonce was withdrawn");
        require(stakeLocks[msg.sender][nonce] < block.timestamp, "LockStakingRewardSameTokenFixedAPY: Locked");
        _totalSupply = _totalSupply.sub(amount);
        _balances[msg.sender] = _balances[msg.sender].sub(amount);
        token.safeTransfer(msg.sender, amount);
        stakeAmounts[msg.sender][nonce] = 0;
        emit Withdrawn(msg.sender, amount);
    }

    function getReward() public override nonReentrant {
        uint256 reward = earned(msg.sender);
        if (reward > 0) {
            weightedStakeDate[msg.sender] = block.timestamp;
            token.safeTransfer(msg.sender, reward);
            emit RewardPaid(msg.sender, reward);
        }
    }

    function withdrawAndGetReward(uint256 nonce) external override {
        getReward();
        withdraw(nonce);
    }

    function updateRewardAmount(uint256 reward) external onlyOwner {
        rewardRate = reward;
        emit RewardUpdated(reward);
    }

    function rescue(address to, address tokenAddress, uint256 amount) external onlyOwner {
        require(to != address(0), "LockStakingRewardSameTokenFixedAPY: Cannot rescue to the zero address");
        require(amount > 0, "LockStakingRewardSameTokenFixedAPY: Cannot rescue 0");
        require(tokenAddress != address(token), "LockStakingRewardSameTokenFixedAPY: Cannot rescue staking/reward token");

        IERC20(tokenAddress).safeTransfer(to, amount);
        emit RescueToken(to, address(tokenAddress), amount);
    }

    function rescue(address payable to, uint256 amount) external onlyOwner {
        require(to != address(0), "LockStakingRewardSameTokenFixedAPY: Cannot rescue to the zero address");
        require(amount > 0, "LockStakingRewardSameTokenFixedAPY: Cannot rescue 0");

        to.transfer(amount);
        emit Rescue(to, amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_rewardRate","type":"uint256"},{"internalType":"uint256","name":"_lockDuration","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Rescue","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RescueToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"newOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakeAmounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"stakeFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakeLocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakeNonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"stakeWithPermit","outputs":[],"stateMutability":"nonpayable","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":"transferOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reward","type":"uint256"}],"name":"updateRewardAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"weightedStakeDate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"withdrawAndGetReward","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a060405234801561001057600080fd5b50604051611fb4380380611fb483398101604081905261002f916100a9565b6001600081815581546001600160a01b0319163317918290556040516001600160a01b0392909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600380546001600160a01b0319166001600160a01b0394909416939093179092556004556080526100ea565b6000806000606084860312156100bd578283fd5b83516001600160a01b03811681146100d3578384fd5b602085015160409095015190969495509392505050565b608051611e9a61011a600039600081816103b801528181610a2401528181610ed8015261115d0152611e9a6000f3fe608060405234801561001057600080fd5b50600436106101975760003560e01c806386a9d8a8116100e3578063d4ee1d901161008c578063f44c407a11610066578063f44c407a14610303578063f520e7e514610316578063fc0c546a1461031e57610197565b8063d4ee1d90146102d5578063ecd9ba82146102dd578063f2fde38b146102f057610197565b8063971fe937116100bd578063971fe9371461029c578063a694fc3a146102af578063baee99c2146102c257610197565b806386a9d8a8146102615780638da5cb5b146102745780638edc7f2d1461028957610197565b80633d18b9121161014557806379ba50971161011f57806379ba50971461023e5780637a4e4ecf146102465780637b0a47ee1461025957610197565b80633d18b9121461021057806351746bb21461021857806370a082311461022b57610197565b806318160ddd1161017657806318160ddd146101e257806320ff430b146101ea5780632e1a7d4d146101fd57610197565b80628cc2621461019c57806304554443146101c557806315c2ba14146101cd575b600080fd5b6101af6101aa366004611640565b610326565b6040516101bc9190611d2c565b60405180910390f35b6101af6103b6565b6101e06101db3660046116f9565b6103da565b005b6101af610474565b6101e06101f8366004611687565b61047a565b6101e061020b3660046116f9565b610608565b6101e06107be565b6101e0610226366004611711565b6108b1565b6101af610239366004611640565b610b0c565b6101e0610b34565b6101e061025436600461165c565b610bf0565b6101af610d49565b6101af61026f366004611640565b610d4f565b61027c610d61565b6040516101bc91906117c6565b6101af6102973660046116c7565b610d7d565b6101af6102aa3660046116c7565b610d9a565b6101e06102bd3660046116f9565b610db7565b6101af6102d0366004611640565b610fa5565b61027c610fb7565b6101e06102eb366004611740565b610fd3565b6101e06102fe366004611640565b611232565b6101e06103113660046116f9565b6112f2565b6101af611303565b61027c61130b565b60006103376301e133806064611d86565b60045473ffffffffffffffffffffffffffffffffffffffff84166000908152600560205260409020546103a691906103a090610374904290611327565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600a602052604090205490611377565b90611377565b6103b09190611d4d565b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015473ffffffffffffffffffffffffffffffffffffffff163314610434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b9061188c565b60405180910390fd5b60048190556040517fcb94909754d27c309adf4167150f1f7aa04de40b6a0e6bb98b2ae80a2bf438f690610469908390611d2c565b60405180910390a150565b60095490565b60015473ffffffffffffffffffffffffffffffffffffffff1633146104cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b9061188c565b73ffffffffffffffffffffffffffffffffffffffff8316610518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611b24565b60008111610552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b906119b0565b60035473ffffffffffffffffffffffffffffffffffffffff838116911614156105a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b906118c1565b6105c873ffffffffffffffffffffffffffffffffffffffff831684836113dd565b7faabf44ab9d5bef08d1b60f287a337f0d11a248e49741ad189b429e47e98ba9108383836040516105fb9392919061180d565b60405180910390a1505050565b600160008082825461061a9190611d35565b9091555050600080543382526007602090815260408084208585529091529091205480610673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611aa1565b33600090815260066020908152604080832086845290915290205442116106c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611ba7565b6009546106d39082611327565b600955336000908152600a60205260409020546106f09082611327565b336000818152600a60205260409020919091556003546107299173ffffffffffffffffffffffffffffffffffffffff90911690836113dd565b33600081815260076020908152604080832087845290915280822091909155517f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d590610776908490611d2c565b60405180910390a25060005481146107ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611cbe565b5050565b60016000808282546107d09190611d35565b909155505060008054906107e333610326565b90508015610872573360008181526005602052604090204290556003546108239173ffffffffffffffffffffffffffffffffffffffff90911690836113dd565b3373ffffffffffffffffffffffffffffffffffffffff167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486826040516108699190611d2c565b60405180910390a25b5060005481146108ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611cbe565b50565b60016000808282546108c39190611d35565b909155505060005482610902576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611c61565b60095461090f908461147e565b60095573ffffffffffffffffffffffffffffffffffffffff82166000908152600a602052604081205490610943828661147e565b905061099f816109534288611377565b61095d9190611d4d565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260056020526040902054839061098f9086611377565b6109999190611d4d565b9061147e565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260056020908152604080832094909455600a9052919091208290556003546109e791163330886114c7565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260086020526040812080549082610a1983611dda565b909155509050610a497f000000000000000000000000000000000000000000000000000000000000000042611d35565b73ffffffffffffffffffffffffffffffffffffffff8616600081815260066020908152604080832086845282528083209490945582825260078152838220858352905282902088905590517f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d90610ac1908990611d2c565b60405180910390a25050506000548114610b07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611cbe565b505050565b73ffffffffffffffffffffffffffffffffffffffff166000908152600a602052604090205490565b60025473ffffffffffffffffffffffffffffffffffffffff163314610b5857600080fd5b60025460015460405173ffffffffffffffffffffffffffffffffffffffff92831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360028054600180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff841617909155169055565b60015473ffffffffffffffffffffffffffffffffffffffff163314610c41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b9061188c565b73ffffffffffffffffffffffffffffffffffffffff8216610c8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611b24565b60008111610cc8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b906119b0565b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f19350505050158015610d0b573d6000803e3d6000fd5b507f542fa6bfee3b4746210fbdd1d83f9e49b65adde3639f8d8f165dd18347938af28282604051610d3d9291906117e7565b60405180910390a15050565b60045481565b60086020526000908152604090205481565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b600760209081526000928352604080842090915290825290205481565b600660209081526000928352604080842090915290825290205481565b6001600080828254610dc99190611d35565b909155505060005481610e08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611c61565b600954610e15908361147e565b600955336000908152600a602052604081205490610e33828561147e565b9050610e6981610e434287611377565b610e4d9190611d4d565b33600090815260056020526040902054839061098f9086611377565b33600081815260056020908152604080832094909455600a905291909120829055600354610eb19173ffffffffffffffffffffffffffffffffffffffff9091169030876114c7565b33600090815260086020526040812080549082610ecd83611dda565b909155509050610efd7f000000000000000000000000000000000000000000000000000000000000000042611d35565b33600081815260066020908152604080832086845282528083209490945582825260078152838220858352905282902087905590517f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d90610f5f908890611d2c565b60405180910390a250505060005481146107ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611cbe565b60056020526000908152604090205481565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b6001600080828254610fe59190611d35565b909155505060005485611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611c61565b600954611031908761147e565b600955336000908152600a60205260408120549061104f828961147e565b905061105f81610e43428b611377565b33600081815260056020908152604080832094909455600a905282902083905560035491517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163d505accf916110de9130908d908d908d908d908d9060040161183e565b600060405180830381600087803b1580156110f857600080fd5b505af115801561110c573d6000803e3d6000fd5b5050600354611136925073ffffffffffffffffffffffffffffffffffffffff16905033308b6114c7565b3360009081526008602052604081208054908261115283611dda565b9091555090506111827f000000000000000000000000000000000000000000000000000000000000000042611d35565b3360008181526006602090815260408083208684528252808320949094558282526007815283822085835290528290208b905590517f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d906111e4908c90611d2c565b60405180910390a2505050600054811461122a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611cbe565b505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314611283576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b9061188c565b60025473ffffffffffffffffffffffffffffffffffffffff828116911614156112ab57600080fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6112fa6107be565b6108ae81610608565b6301e1338081565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b600082821115611363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611a0d565b600061136f8385611dc3565b949350505050565b600082611386575060006103b0565b60006113928385611d86565b90508261139f8583611d4d565b146113d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611a44565b9392505050565b610b078363a9059cbb60e01b84846040516024016113fc9291906117e7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526114ee565b60008061148b8385611d35565b9050838110156113d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611944565b6114e8846323b872dd60e01b8585856040516024016113fc9392919061180d565b50505050565b61150d8273ffffffffffffffffffffffffffffffffffffffff1661163a565b611543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611cf5565b6000808373ffffffffffffffffffffffffffffffffffffffff168360405161156b919061178d565b6000604051808303816000865af19150503d80600081146115a8576040519150601f19603f3d011682016040523d82523d6000602084013e6115ad565b606091505b5091509150816115e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b9061197b565b8051156114e8578080602001905181019061160491906116d9565b6114e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611c04565b3b151590565b600060208284031215611651578081fd5b81356113d681611e42565b6000806040838503121561166e578081fd5b823561167981611e42565b946020939093013593505050565b60008060006060848603121561169b578081fd5b83356116a681611e42565b925060208401356116b681611e42565b929592945050506040919091013590565b6000806040838503121561166e578182fd5b6000602082840312156116ea578081fd5b815180151581146113d6578182fd5b60006020828403121561170a578081fd5b5035919050565b60008060408385031215611723578182fd5b82359150602083013561173581611e42565b809150509250929050565b600080600080600060a08688031215611757578081fd5b8535945060208601359350604086013560ff81168114611775578182fd5b94979396509394606081013594506080013592915050565b60008251815b818110156117ad5760208186018101518583015201611793565b818111156117bb5782828501525b509190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff97881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6020808252818101527f4f776e61626c653a2043616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526046908201527f4c6f636b5374616b696e6752657761726453616d65546f6b656e46697865644160408201527f50593a2043616e6e6f7420726573637565207374616b696e672f72657761726460608201527f20746f6b656e0000000000000000000000000000000000000000000000000000608082015260a00190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b60208082526033908201527f4c6f636b5374616b696e6752657761726453616d65546f6b656e46697865644160408201527f50593a2043616e6e6f7420726573637565203000000000000000000000000000606082015260800190565b6020808252601e908201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60408201527f7700000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526042908201527f4c6f636b5374616b696e6752657761726453616d65546f6b656e46697865644160408201527f50593a2054686973207374616b65206e6f6e636520776173207769746864726160608201527f776e000000000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526045908201527f4c6f636b5374616b696e6752657761726453616d65546f6b656e46697865644160408201527f50593a2043616e6e6f742072657363756520746f20746865207a65726f20616460608201527f6472657373000000000000000000000000000000000000000000000000000000608082015260a00190565b6020808252602a908201527f4c6f636b5374616b696e6752657761726453616d65546f6b656e46697865644160408201527f50593a204c6f636b656400000000000000000000000000000000000000000000606082015260800190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60408201527f6f74207375636365656400000000000000000000000000000000000000000000606082015260800190565b60208082526032908201527f4c6f636b5374616b696e6752657761726453616d65546f6b656e46697865644160408201527f50593a2043616e6e6f74207374616b6520300000000000000000000000000000606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b90815260200190565b60008219821115611d4857611d48611e13565b500190565b600082611d81577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611dbe57611dbe611e13565b500290565b600082821015611dd557611dd5611e13565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611e0c57611e0c611e13565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146108ae57600080fdfea2646970667358221220b55611dd287e2a75f38c7fcf9a9638f2f82a14171dcf23f5cdfad9d29b58cf8464736f6c63430008000033000000000000000000000000eb58343b36c7528f23caae63a150240241310049000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000004f1a00

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101975760003560e01c806386a9d8a8116100e3578063d4ee1d901161008c578063f44c407a11610066578063f44c407a14610303578063f520e7e514610316578063fc0c546a1461031e57610197565b8063d4ee1d90146102d5578063ecd9ba82146102dd578063f2fde38b146102f057610197565b8063971fe937116100bd578063971fe9371461029c578063a694fc3a146102af578063baee99c2146102c257610197565b806386a9d8a8146102615780638da5cb5b146102745780638edc7f2d1461028957610197565b80633d18b9121161014557806379ba50971161011f57806379ba50971461023e5780637a4e4ecf146102465780637b0a47ee1461025957610197565b80633d18b9121461021057806351746bb21461021857806370a082311461022b57610197565b806318160ddd1161017657806318160ddd146101e257806320ff430b146101ea5780632e1a7d4d146101fd57610197565b80628cc2621461019c57806304554443146101c557806315c2ba14146101cd575b600080fd5b6101af6101aa366004611640565b610326565b6040516101bc9190611d2c565b60405180910390f35b6101af6103b6565b6101e06101db3660046116f9565b6103da565b005b6101af610474565b6101e06101f8366004611687565b61047a565b6101e061020b3660046116f9565b610608565b6101e06107be565b6101e0610226366004611711565b6108b1565b6101af610239366004611640565b610b0c565b6101e0610b34565b6101e061025436600461165c565b610bf0565b6101af610d49565b6101af61026f366004611640565b610d4f565b61027c610d61565b6040516101bc91906117c6565b6101af6102973660046116c7565b610d7d565b6101af6102aa3660046116c7565b610d9a565b6101e06102bd3660046116f9565b610db7565b6101af6102d0366004611640565b610fa5565b61027c610fb7565b6101e06102eb366004611740565b610fd3565b6101e06102fe366004611640565b611232565b6101e06103113660046116f9565b6112f2565b6101af611303565b61027c61130b565b60006103376301e133806064611d86565b60045473ffffffffffffffffffffffffffffffffffffffff84166000908152600560205260409020546103a691906103a090610374904290611327565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600a602052604090205490611377565b90611377565b6103b09190611d4d565b92915050565b7f00000000000000000000000000000000000000000000000000000000004f1a0081565b60015473ffffffffffffffffffffffffffffffffffffffff163314610434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b9061188c565b60405180910390fd5b60048190556040517fcb94909754d27c309adf4167150f1f7aa04de40b6a0e6bb98b2ae80a2bf438f690610469908390611d2c565b60405180910390a150565b60095490565b60015473ffffffffffffffffffffffffffffffffffffffff1633146104cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b9061188c565b73ffffffffffffffffffffffffffffffffffffffff8316610518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611b24565b60008111610552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b906119b0565b60035473ffffffffffffffffffffffffffffffffffffffff838116911614156105a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b906118c1565b6105c873ffffffffffffffffffffffffffffffffffffffff831684836113dd565b7faabf44ab9d5bef08d1b60f287a337f0d11a248e49741ad189b429e47e98ba9108383836040516105fb9392919061180d565b60405180910390a1505050565b600160008082825461061a9190611d35565b9091555050600080543382526007602090815260408084208585529091529091205480610673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611aa1565b33600090815260066020908152604080832086845290915290205442116106c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611ba7565b6009546106d39082611327565b600955336000908152600a60205260409020546106f09082611327565b336000818152600a60205260409020919091556003546107299173ffffffffffffffffffffffffffffffffffffffff90911690836113dd565b33600081815260076020908152604080832087845290915280822091909155517f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d590610776908490611d2c565b60405180910390a25060005481146107ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611cbe565b5050565b60016000808282546107d09190611d35565b909155505060008054906107e333610326565b90508015610872573360008181526005602052604090204290556003546108239173ffffffffffffffffffffffffffffffffffffffff90911690836113dd565b3373ffffffffffffffffffffffffffffffffffffffff167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486826040516108699190611d2c565b60405180910390a25b5060005481146108ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611cbe565b50565b60016000808282546108c39190611d35565b909155505060005482610902576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611c61565b60095461090f908461147e565b60095573ffffffffffffffffffffffffffffffffffffffff82166000908152600a602052604081205490610943828661147e565b905061099f816109534288611377565b61095d9190611d4d565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260056020526040902054839061098f9086611377565b6109999190611d4d565b9061147e565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260056020908152604080832094909455600a9052919091208290556003546109e791163330886114c7565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260086020526040812080549082610a1983611dda565b909155509050610a497f00000000000000000000000000000000000000000000000000000000004f1a0042611d35565b73ffffffffffffffffffffffffffffffffffffffff8616600081815260066020908152604080832086845282528083209490945582825260078152838220858352905282902088905590517f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d90610ac1908990611d2c565b60405180910390a25050506000548114610b07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611cbe565b505050565b73ffffffffffffffffffffffffffffffffffffffff166000908152600a602052604090205490565b60025473ffffffffffffffffffffffffffffffffffffffff163314610b5857600080fd5b60025460015460405173ffffffffffffffffffffffffffffffffffffffff92831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360028054600180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff841617909155169055565b60015473ffffffffffffffffffffffffffffffffffffffff163314610c41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b9061188c565b73ffffffffffffffffffffffffffffffffffffffff8216610c8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611b24565b60008111610cc8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b906119b0565b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f19350505050158015610d0b573d6000803e3d6000fd5b507f542fa6bfee3b4746210fbdd1d83f9e49b65adde3639f8d8f165dd18347938af28282604051610d3d9291906117e7565b60405180910390a15050565b60045481565b60086020526000908152604090205481565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b600760209081526000928352604080842090915290825290205481565b600660209081526000928352604080842090915290825290205481565b6001600080828254610dc99190611d35565b909155505060005481610e08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611c61565b600954610e15908361147e565b600955336000908152600a602052604081205490610e33828561147e565b9050610e6981610e434287611377565b610e4d9190611d4d565b33600090815260056020526040902054839061098f9086611377565b33600081815260056020908152604080832094909455600a905291909120829055600354610eb19173ffffffffffffffffffffffffffffffffffffffff9091169030876114c7565b33600090815260086020526040812080549082610ecd83611dda565b909155509050610efd7f00000000000000000000000000000000000000000000000000000000004f1a0042611d35565b33600081815260066020908152604080832086845282528083209490945582825260078152838220858352905282902087905590517f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d90610f5f908890611d2c565b60405180910390a250505060005481146107ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611cbe565b60056020526000908152604090205481565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b6001600080828254610fe59190611d35565b909155505060005485611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611c61565b600954611031908761147e565b600955336000908152600a60205260408120549061104f828961147e565b905061105f81610e43428b611377565b33600081815260056020908152604080832094909455600a905282902083905560035491517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163d505accf916110de9130908d908d908d908d908d9060040161183e565b600060405180830381600087803b1580156110f857600080fd5b505af115801561110c573d6000803e3d6000fd5b5050600354611136925073ffffffffffffffffffffffffffffffffffffffff16905033308b6114c7565b3360009081526008602052604081208054908261115283611dda565b9091555090506111827f00000000000000000000000000000000000000000000000000000000004f1a0042611d35565b3360008181526006602090815260408083208684528252808320949094558282526007815283822085835290528290208b905590517f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d906111e4908c90611d2c565b60405180910390a2505050600054811461122a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611cbe565b505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314611283576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b9061188c565b60025473ffffffffffffffffffffffffffffffffffffffff828116911614156112ab57600080fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6112fa6107be565b6108ae81610608565b6301e1338081565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b600082821115611363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611a0d565b600061136f8385611dc3565b949350505050565b600082611386575060006103b0565b60006113928385611d86565b90508261139f8583611d4d565b146113d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611a44565b9392505050565b610b078363a9059cbb60e01b84846040516024016113fc9291906117e7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526114ee565b60008061148b8385611d35565b9050838110156113d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611944565b6114e8846323b872dd60e01b8585856040516024016113fc9392919061180d565b50505050565b61150d8273ffffffffffffffffffffffffffffffffffffffff1661163a565b611543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611cf5565b6000808373ffffffffffffffffffffffffffffffffffffffff168360405161156b919061178d565b6000604051808303816000865af19150503d80600081146115a8576040519150601f19603f3d011682016040523d82523d6000602084013e6115ad565b606091505b5091509150816115e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b9061197b565b8051156114e8578080602001905181019061160491906116d9565b6114e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90611c04565b3b151590565b600060208284031215611651578081fd5b81356113d681611e42565b6000806040838503121561166e578081fd5b823561167981611e42565b946020939093013593505050565b60008060006060848603121561169b578081fd5b83356116a681611e42565b925060208401356116b681611e42565b929592945050506040919091013590565b6000806040838503121561166e578182fd5b6000602082840312156116ea578081fd5b815180151581146113d6578182fd5b60006020828403121561170a578081fd5b5035919050565b60008060408385031215611723578182fd5b82359150602083013561173581611e42565b809150509250929050565b600080600080600060a08688031215611757578081fd5b8535945060208601359350604086013560ff81168114611775578182fd5b94979396509394606081013594506080013592915050565b60008251815b818110156117ad5760208186018101518583015201611793565b818111156117bb5782828501525b509190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff97881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6020808252818101527f4f776e61626c653a2043616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526046908201527f4c6f636b5374616b696e6752657761726453616d65546f6b656e46697865644160408201527f50593a2043616e6e6f7420726573637565207374616b696e672f72657761726460608201527f20746f6b656e0000000000000000000000000000000000000000000000000000608082015260a00190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b60208082526033908201527f4c6f636b5374616b696e6752657761726453616d65546f6b656e46697865644160408201527f50593a2043616e6e6f7420726573637565203000000000000000000000000000606082015260800190565b6020808252601e908201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60408201527f7700000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526042908201527f4c6f636b5374616b696e6752657761726453616d65546f6b656e46697865644160408201527f50593a2054686973207374616b65206e6f6e636520776173207769746864726160608201527f776e000000000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526045908201527f4c6f636b5374616b696e6752657761726453616d65546f6b656e46697865644160408201527f50593a2043616e6e6f742072657363756520746f20746865207a65726f20616460608201527f6472657373000000000000000000000000000000000000000000000000000000608082015260a00190565b6020808252602a908201527f4c6f636b5374616b696e6752657761726453616d65546f6b656e46697865644160408201527f50593a204c6f636b656400000000000000000000000000000000000000000000606082015260800190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60408201527f6f74207375636365656400000000000000000000000000000000000000000000606082015260800190565b60208082526032908201527f4c6f636b5374616b696e6752657761726453616d65546f6b656e46697865644160408201527f50593a2043616e6e6f74207374616b6520300000000000000000000000000000606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b90815260200190565b60008219821115611d4857611d48611e13565b500190565b600082611d81577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611dbe57611dbe611e13565b500290565b600082821015611dd557611dd5611e13565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611e0c57611e0c611e13565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146108ae57600080fdfea2646970667358221220b55611dd287e2a75f38c7fcf9a9638f2f82a14171dcf23f5cdfad9d29b58cf8464736f6c63430008000033

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

000000000000000000000000eb58343b36c7528f23caae63a150240241310049000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000004f1a00

-----Decoded View---------------
Arg [0] : _token (address): 0xEB58343b36C7528F23CAAe63a150240241310049
Arg [1] : _rewardRate (uint256): 7
Arg [2] : _lockDuration (uint256): 5184000

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000eb58343b36c7528f23caae63a150240241310049
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [2] : 00000000000000000000000000000000000000000000000000000000004f1a00


Deployed Bytecode Sourcemap

6169:6482:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7641:212;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6396:37;;;:::i;11624:138::-;;;;;;:::i;:::-;;:::i;:::-;;7402:102;;;:::i;11770:531::-;;;;;;:::i;:::-;;:::i;10552:622::-;;;;;;:::i;:::-;;:::i;11182:307::-;;;:::i;9665:774::-;;;;;;:::i;:::-;;:::i;7512:121::-;;;;;;:::i;:::-;;:::i;1263:204::-;;;:::i;12309:339::-;;;;;;:::i;:::-;;:::i;6363:25::-;;;:::i;6705:46::-;;;;;;:::i;:::-;;:::i;728:20::-;;;:::i;:::-;;;;;;;:::i;6631:67::-;;;;;;:::i;:::-;;:::i;6559:65::-;;;;;;:::i;:::-;;:::i;8852:805::-;;;;;;:::i;:::-;;:::i;6500:52::-;;;;;;:::i;:::-;;:::i;755:23::-;;;:::i;7861:983::-;;;;;;:::i;:::-;;:::i;1100:155::-;;;;;;:::i;:::-;;:::i;11497:119::-;;;;;;:::i;:::-;;:::i;6441:49::-;;;:::i;6337:19::-;;;:::i;7641:212::-;7704:7;7824:20;6482:8;7824:3;:20;:::i;:::-;7808:10;;7775:26;;;;;;;:17;:26;;;;;;7732:87;;7808:10;7732:71;;7755:47;;:15;;:19;:47::i;:::-;7732:18;;;;;;;:9;:18;;;;;;;:22;:71::i;:::-;:75;;:87::i;:::-;7731:114;;;;:::i;:::-;7724:121;7641:212;-1:-1:-1;;7641:212:0:o;6396:37::-;;;:::o;11624:138::-;1030:5;;;;1016:10;:19;1008:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11698:10:::1;:19:::0;;;11733:21:::1;::::0;::::1;::::0;::::1;::::0;11711:6;;11733:21:::1;:::i;:::-;;;;;;;;11624:138:::0;:::o;7402:102::-;7484:12;;7402:102;:::o;11770:531::-;1030:5;;;;1016:10;:19;1008:64;;;;;;;;;;;;:::i;:::-;11874:16:::1;::::0;::::1;11866:98;;;;;;;;;;;;:::i;:::-;11992:1;11983:6;:10;11975:74;;;;;;;;;;;;:::i;:::-;12092:5;::::0;::::1;12068:30:::0;;::::1;12092:5:::0;::::1;12068:30;;12060:113;;;;;;;;;;;;:::i;:::-;12186:45;:33;::::0;::::1;12220:2:::0;12224:6;12186:33:::1;:45::i;:::-;12247:46;12259:2;12271:12;12286:6;12247:46;;;;;;;;:::i;:::-;;;;;;;;11770:531:::0;;;:::o;10552:622::-;5361:1;5344:13;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;;5373:20:0;5396:13;;10652:10:::1;10639:24:::0;;:12:::1;:24;::::0;;;;;;;:31;;;;;;;;;;;10681:114:::1;;;;;;;;;;;;:::i;:::-;10825:10;10814:22;::::0;;;:10:::1;:22;::::0;;;;;;;:29;;;;;;;;;10846:15:::1;-1:-1:-1::0;10806:102:0::1;;;;;;;;;;;;:::i;:::-;10934:12;::::0;:24:::1;::::0;10951:6;10934:16:::1;:24::i;:::-;10919:12;:39:::0;11003:10:::1;10993:21;::::0;;;:9:::1;:21;::::0;;;;;:33:::1;::::0;11019:6;10993:25:::1;:33::i;:::-;10979:10;10969:21;::::0;;;:9:::1;:21;::::0;;;;:57;;;;11037:5:::1;::::0;:38:::1;::::0;10969:21:::1;11037:5:::0;;::::1;::::0;11068:6;11037:18:::1;:38::i;:::-;11099:10;11120:1;11086:24:::0;;;:12:::1;:24;::::0;;;;;;;:31;;;;;;;;;:35;;;;11137:29;::::1;::::0;::::1;::::0;11159:6;;11137:29:::1;:::i;:::-;;;;;;;;5420:1;5456:13:::0;;5440:12;:29;5432:73;;;;;;;;;;;;:::i;:::-;10552:622;;:::o;11182:307::-;5361:1;5344:13;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;;5373:20:0;5396:13;;;11260:18:::1;11267:10;11260:6;:18::i;:::-;11243:35:::0;-1:-1:-1;11293:10:0;;11289:193:::1;;11338:10;11320:29;::::0;;;:17:::1;:29;::::0;;;;11352:15:::1;11320:47:::0;;11382:5:::1;::::0;:38:::1;::::0;11320:29:::1;11382:5:::0;;::::1;::::0;11413:6;11382:18:::1;:38::i;:::-;11451:10;11440:30;;;11463:6;11440:30;;;;;;:::i;:::-;;;;;;;;11289:193;5420:1;5456:13:::0;;5440:12;:29;5432:73;;;;;;;;;;;;:::i;:::-;11182:307;:::o;9665:774::-;5361:1;5344:13;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;;5373:20:0;5396:13;9763:10;9755:73:::1;;;;;;;;;;;;:::i;:::-;9854:12;::::0;:24:::1;::::0;9871:6;9854:16:::1;:24::i;:::-;9839:12;:39:::0;9911:15:::1;::::0;::::1;9889:19;9911:15:::0;;;:9:::1;:15;::::0;;;;;;9954:26:::1;9911:15:::0;9973:6;9954:18:::1;:26::i;:::-;9937:43:::0;-1:-1:-1;10017:102:0::1;9937:43:::0;10079:27:::1;:15;10099:6:::0;10079:19:::1;:27::i;:::-;:39;;;;:::i;:::-;10018:23;::::0;::::1;;::::0;;;:17:::1;:23;::::0;;;;;10064:9;;10018:43:::1;::::0;10046:14;10018:27:::1;:43::i;:::-;:55;;;;:::i;:::-;10017:61:::0;::::1;:102::i;:::-;9991:23;::::0;;::::1;;::::0;;;:17:::1;:23;::::0;;;;;;;:128;;;;10130:9:::1;:15:::0;;;;;;:27;;;10168:5:::1;::::0;:57:::1;::::0;:5:::1;10191:10;10211:4;10218:6:::0;10168:22:::1;:57::i;:::-;10254:17;::::0;::::1;10236:15;10254:17:::0;;;:11:::1;:17;::::0;;;;:19;;;10236:15;10254:19:::1;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;10236:37:0;-1:-1:-1;10315:30:0::1;10333:12;10315:15;:30;:::i;:::-;10284:16;::::0;::::1;;::::0;;;:10:::1;:16;::::0;;;;;;;:28;;;;;;;;:61;;;;10356:18;;;:12:::1;:18:::0;;;;;:30;;;;;;;;:39;;;10411:20;;::::1;::::0;::::1;::::0;10389:6;;10411:20:::1;:::i;:::-;;;;;;;;5420:1;;;5456:13:::0;;5440:12;:29;5432:73;;;;;;;;;;;;:::i;:::-;9665:774;;;:::o;7512:121::-;7607:18;;7580:7;7607:18;;;:9;:18;;;;;;;7512:121::o;1263:204::-;1338:8;;;;1324:10;:22;1316:31;;;;;;1391:8;;;1384:5;1363:37;;1391:8;;;;;1384:5;;;;1363:37;;1391:8;;1363:37;1419:8;;;;1411:16;;;;;;1419:8;;;1411:16;;;;1438:21;;;1263:204::o;12309:339::-;1030:5;;;;1016:10;:19;1008:64;;;;;;;;;;;;:::i;:::-;12399:16:::1;::::0;::::1;12391:98;;;;;;;;;;;;:::i;:::-;12517:1;12508:6;:10;12500:74;;;;;;;;;;;;:::i;:::-;12587:19;::::0;:11:::1;::::0;::::1;::::0;:19;::::1;;;::::0;12599:6;;12587:19:::1;::::0;;;12599:6;12587:11;:19;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12622:18;12629:2;12633:6;12622:18;;;;;;;:::i;:::-;;;;;;;;12309:339:::0;;:::o;6363:25::-;;;;:::o;6705:46::-;;;;;;;;;;;;;:::o;728:20::-;;;;;;:::o;6631:67::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;6559:65::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;8852:805::-;5361:1;5344:13;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;;5373:20:0;5396:13;8933:10;8925:73:::1;;;;;;;;;;;;:::i;:::-;9024:12;::::0;:24:::1;::::0;9041:6;9024:16:::1;:24::i;:::-;9009:12;:39:::0;9091:10:::1;9059:19;9081:21:::0;;;:9:::1;:21;::::0;;;;;;9130:26:::1;9081:21:::0;9149:6;9130:18:::1;:26::i;:::-;9113:43:::0;-1:-1:-1;9199:108:0::1;9113:43:::0;9267:27:::1;:15;9287:6:::0;9267:19:::1;:27::i;:::-;:39;;;;:::i;:::-;9218:10;9200:29;::::0;;;:17:::1;:29;::::0;;;;;9252:9;;9200:49:::1;::::0;9234:14;9200:33:::1;:49::i;9199:108::-;9185:10;9167:29;::::0;;;:17:::1;:29;::::0;;;;;;;:140;;;;9318:9:::1;:21:::0;;;;;;:33;;;9362:5:::1;::::0;:57:::1;::::0;9167:29:::1;9362:5:::0;;::::1;::::0;9405:4:::1;9412:6:::0;9362:22:::1;:57::i;:::-;9460:10;9430:15;9448:23:::0;;;:11:::1;:23;::::0;;;;:25;;;9430:15;9448:25:::1;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;9430:43:0;-1:-1:-1;9521:30:0::1;9539:12;9521:15;:30;:::i;:::-;9495:10;9484:22;::::0;;;:10:::1;:22;::::0;;;;;;;:34;;;;;;;;:67;;;;9562:24;;;:12:::1;:24:::0;;;;;:36;;;;;;;;:45;;;9623:26;;::::1;::::0;::::1;::::0;9601:6;;9623:26:::1;:::i;:::-;;;;;;;;5420:1;;;5456:13:::0;;5440:12;:29;5432:73;;;;;;;;;;;;:::i;6500:52::-;;;;;;;;;;;;;:::o;755:23::-;;;;;;:::o;7861:983::-;5361:1;5344:13;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;;5373:20:0;5396:13;7989:10;7981:73:::1;;;;;;;;;;;;:::i;:::-;8080:12;::::0;:24:::1;::::0;8097:6;8080:16:::1;:24::i;:::-;8065:12;:39:::0;8147:10:::1;8115:19;8137:21:::0;;;:9:::1;:21;::::0;;;;;;8186:26:::1;8137:21:::0;8205:6;8186:18:::1;:26::i;:::-;8169:43:::0;-1:-1:-1;8255:108:0::1;8169:43:::0;8323:27:::1;:15;8343:6:::0;8323:19:::1;:27::i;8255:108::-;8241:10;8223:29;::::0;;;:17:::1;:29;::::0;;;;;;;:140;;;;8374:9:::1;:21:::0;;;;;:33;;;8460:5:::1;::::0;8439:89;;;;;8223:29:::1;8460:5:::0;;::::1;::::0;8439:35:::1;::::0;:89:::1;::::0;8495:4:::1;::::0;8502:6;;8510:8;;8520:1;;8523;;8526;;8439:89:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;8549:5:0::1;::::0;:57:::1;::::0;-1:-1:-1;8549:5:0::1;;::::0;-1:-1:-1;8572:10:0::1;8592:4;8599:6:::0;8549:22:::1;:57::i;:::-;8647:10;8617:15;8635:23:::0;;;:11:::1;:23;::::0;;;;:25;;;8617:15;8635:25:::1;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;8617:43:0;-1:-1:-1;8708:30:0::1;8726:12;8708:15;:30;:::i;:::-;8682:10;8671:22;::::0;;;:10:::1;:22;::::0;;;;;;;:34;;;;;;;;:67;;;;8749:24;;;:12:::1;:24:::0;;;;;:36;;;;;;;;:45;;;8810:26;;::::1;::::0;::::1;::::0;8788:6;;8810:26:::1;:::i;:::-;;;;;;;;5420:1;;;5456:13:::0;;5440:12;:29;5432:73;;;;;;;;;;;;:::i;:::-;7861:983;;;;;;:::o;1100:155::-;1030:5;;;;1016:10;:19;1008:64;;;;;;;;;;;;:::i;:::-;1203:8:::1;::::0;::::1;1186:25:::0;;::::1;1203:8:::0;::::1;1186:25;;1178:34;;;::::0;::::1;;1223:8;:24:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;1100:155::o;11497:119::-;11571:11;:9;:11::i;:::-;11593:15;11602:5;11593:8;:15::i;6441:49::-;6482:8;6441:49;:::o;6337:19::-;;;;;;:::o;1687:184::-;1745:7;1778:1;1773;:6;;1765:49;;;;;;;;;;;;:::i;:::-;1825:9;1837:5;1841:1;1837;:5;:::i;:::-;1825:17;1687:184;-1:-1:-1;;;;1687:184:0:o;1879:248::-;1937:7;1959:6;1955:47;;-1:-1:-1;1989:1:0;1982:8;;1955:47;2014:9;2026:5;2030:1;2026;:5;:::i;:::-;2014:17;-1:-1:-1;2059:1:0;2050:5;2054:1;2014:17;2050:5;:::i;:::-;:10;2042:56;;;;;;;;;;;;:::i;:::-;2118:1;1879:248;-1:-1:-1;;;1879:248:0:o;3168:176::-;3251:85;3270:5;3300:23;;;3325:2;3329:5;3277:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3251:18;:85::i;1498:181::-;1556:7;;1588:5;1592:1;1588;:5;:::i;:::-;1576:17;;1617:1;1612;:6;;1604:46;;;;;;;;;;;;:::i;3352:204::-;3453:95;3472:5;3502:27;;;3531:4;3537:2;3541:5;3479:68;;;;;;;;;;:::i;3453:95::-;3352:204;;;;:::o;4505:454::-;4593:27;4601:5;4593:25;;;:27::i;:::-;4585:71;;;;;;;;;;;;:::i;:::-;4670:12;4684:23;4719:5;4711:19;;4731:4;4711:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4669:67;;;;4755:7;4747:52;;;;;;;;;;;;:::i;:::-;4816:17;;:21;4812:140;;4874:10;4863:30;;;;;;;;;;;;:::i;:::-;4855:85;;;;;;;;;;;;:::i;2658:411::-;3014:20;3053:8;;;2658:411::o;14:259:1:-;;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:33;237:5;210:33;:::i;278:335::-;;;415:2;403:9;394:7;390:23;386:32;383:2;;;436:6;428;421:22;383:2;480:9;467:23;499:33;526:5;499:33;:::i;:::-;551:5;603:2;588:18;;;;575:32;;-1:-1:-1;;;373:240:1:o;618:470::-;;;;764:2;752:9;743:7;739:23;735:32;732:2;;;785:6;777;770:22;732:2;829:9;816:23;848:33;875:5;848:33;:::i;:::-;900:5;-1:-1:-1;957:2:1;942:18;;929:32;970:35;929:32;970:35;:::i;:::-;722:366;;1024:7;;-1:-1:-1;;;1078:2:1;1063:18;;;;1050:32;;722:366::o;1093:327::-;;;1222:2;1210:9;1201:7;1197:23;1193:32;1190:2;;;1243:6;1235;1228:22;1425:297;;1545:2;1533:9;1524:7;1520:23;1516:32;1513:2;;;1566:6;1558;1551:22;1513:2;1603:9;1597:16;1656:5;1649:13;1642:21;1635:5;1632:32;1622:2;;1683:6;1675;1668:22;1727:190;;1839:2;1827:9;1818:7;1814:23;1810:32;1807:2;;;1860:6;1852;1845:22;1807:2;-1:-1:-1;1888:23:1;;1797:120;-1:-1:-1;1797:120:1:o;1922:327::-;;;2051:2;2039:9;2030:7;2026:23;2022:32;2019:2;;;2072:6;2064;2057:22;2019:2;2113:9;2100:23;2090:33;;2173:2;2162:9;2158:18;2145:32;2186:33;2213:5;2186:33;:::i;:::-;2238:5;2228:15;;;2009:240;;;;;:::o;2254:563::-;;;;;;2432:3;2420:9;2411:7;2407:23;2403:33;2400:2;;;2454:6;2446;2439:22;2400:2;2495:9;2482:23;2472:33;;2552:2;2541:9;2537:18;2524:32;2514:42;;2606:2;2595:9;2591:18;2578:32;2650:4;2643:5;2639:16;2632:5;2629:27;2619:2;;2675:6;2667;2660:22;2619:2;2390:427;;;;-1:-1:-1;2703:5:1;;2755:2;2740:18;;2727:32;;-1:-1:-1;2806:3:1;2791:19;2778:33;;2390:427;-1:-1:-1;;2390:427:1:o;2822:430::-;;2989:6;2983:13;3014:3;3026:129;3040:6;3037:1;3034:13;3026:129;;;3138:4;3122:14;;;3118:25;;3112:32;3099:11;;;3092:53;3055:12;3026:129;;;3173:6;3170:1;3167:13;3164:2;;;3208:3;3199:6;3194:3;3190:16;3183:29;3164:2;-1:-1:-1;3230:16:1;;;;;2959:293;-1:-1:-1;;2959:293:1:o;3257:226::-;3433:42;3421:55;;;;3403:74;;3391:2;3376:18;;3358:125::o;3488:305::-;3700:42;3688:55;;;;3670:74;;3775:2;3760:18;;3753:34;3658:2;3643:18;;3625:168::o;3798:398::-;4010:42;4079:15;;;4061:34;;4131:15;;;;4126:2;4111:18;;4104:43;4178:2;4163:18;;4156:34;;;;3988:2;3973:18;;3955:241::o;4201:693::-;4522:42;4591:15;;;4573:34;;4643:15;;;;4638:2;4623:18;;4616:43;4690:2;4675:18;;4668:34;;;;4733:2;4718:18;;4711:34;;;;4794:4;4782:17;4776:3;4761:19;;4754:46;4831:3;4816:19;;4809:35;4875:3;4860:19;;4853:35;;;;4499:3;4484:19;;4466:428::o;5445:356::-;5647:2;5629:21;;;5666:18;;;5659:30;5725:34;5720:2;5705:18;;5698:62;5792:2;5777:18;;5619:182::o;5806:474::-;6008:2;5990:21;;;6047:2;6027:18;;;6020:30;6086:34;6081:2;6066:18;;6059:62;6157:34;6152:2;6137:18;;6130:62;6229:8;6223:3;6208:19;;6201:37;6270:3;6255:19;;5980:300::o;6285:351::-;6487:2;6469:21;;;6526:2;6506:18;;;6499:30;6565:29;6560:2;6545:18;;6538:57;6627:2;6612:18;;6459:177::o;6641:356::-;6843:2;6825:21;;;6862:18;;;6855:30;6921:34;6916:2;6901:18;;6894:62;6988:2;6973:18;;6815:182::o;7002:415::-;7204:2;7186:21;;;7243:2;7223:18;;;7216:30;7282:34;7277:2;7262:18;;7255:62;7353:21;7348:2;7333:18;;7326:49;7407:3;7392:19;;7176:241::o;7422:354::-;7624:2;7606:21;;;7663:2;7643:18;;;7636:30;7702:32;7697:2;7682:18;;7675:60;7767:2;7752:18;;7596:180::o;7781:397::-;7983:2;7965:21;;;8022:2;8002:18;;;7995:30;8061:34;8056:2;8041:18;;8034:62;8132:3;8127:2;8112:18;;8105:31;8168:3;8153:19;;7955:223::o;8183:470::-;8385:2;8367:21;;;8424:2;8404:18;;;8397:30;8463:34;8458:2;8443:18;;8436:62;8534:34;8529:2;8514:18;;8507:62;8606:4;8600:3;8585:19;;8578:33;8643:3;8628:19;;8357:296::o;8658:473::-;8860:2;8842:21;;;8899:2;8879:18;;;8872:30;8938:34;8933:2;8918:18;;8911:62;9009:34;9004:2;8989:18;;8982:62;9081:7;9075:3;9060:19;;9053:36;9121:3;9106:19;;8832:299::o;9136:406::-;9338:2;9320:21;;;9377:2;9357:18;;;9350:30;9416:34;9411:2;9396:18;;9389:62;9487:12;9482:2;9467:18;;9460:40;9532:3;9517:19;;9310:232::o;9547:406::-;9749:2;9731:21;;;9788:2;9768:18;;;9761:30;9827:34;9822:2;9807:18;;9800:62;9898:12;9893:2;9878:18;;9871:40;9943:3;9928:19;;9721:232::o;9958:414::-;10160:2;10142:21;;;10199:2;10179:18;;;10172:30;10238:34;10233:2;10218:18;;10211:62;10309:20;10304:2;10289:18;;10282:48;10362:3;10347:19;;10132:240::o;10377:355::-;10579:2;10561:21;;;10618:2;10598:18;;;10591:30;10657:33;10652:2;10637:18;;10630:61;10723:2;10708:18;;10551:181::o;10737:355::-;10939:2;10921:21;;;10978:2;10958:18;;;10951:30;11017:33;11012:2;10997:18;;10990:61;11083:2;11068:18;;10911:181::o;11097:177::-;11243:25;;;11231:2;11216:18;;11198:76::o;11279:128::-;;11350:1;11346:6;11343:1;11340:13;11337:2;;;11356:18;;:::i;:::-;-1:-1:-1;11392:9:1;;11327:80::o;11412:274::-;;11478:1;11468:2;;11513:77;11510:1;11503:88;11614:4;11611:1;11604:15;11642:4;11639:1;11632:15;11468:2;-1:-1:-1;11671:9:1;;11458:228::o;11691:::-;;11857:1;11789:66;11785:74;11782:1;11779:81;11774:1;11767:9;11760:17;11756:105;11753:2;;;11864:18;;:::i;:::-;-1:-1:-1;11904:9:1;;11743:176::o;11924:125::-;;11992:1;11989;11986:8;11983:2;;;11997:18;;:::i;:::-;-1:-1:-1;12034:9:1;;11973:76::o;12054:195::-;;12124:66;12117:5;12114:77;12111:2;;;12194:18;;:::i;:::-;-1:-1:-1;12241:1:1;12230:13;;12101:148::o;12254:184::-;12306:77;12303:1;12296:88;12403:4;12400:1;12393:15;12427:4;12424:1;12417:15;12443:156;12531:42;12524:5;12520:54;12513:5;12510:65;12500:2;;12589:1;12586;12579:12

Swarm Source

ipfs://b55611dd287e2a75f38c7fcf9a9638f2f82a14171dcf23f5cdfad9d29b58cf84

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

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.