ETH Price: $3,298.17 (-1.43%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw213003742024-11-30 12:04:2340 days ago1732968263IN
0x774dF134...eF47C61e6
0 ETH0.000488668.03227768
Stake212814692024-11-27 20:27:4742 days ago1732739267IN
0x774dF134...eF47C61e6
0 ETH0.0015100720.73198518
Stake212741962024-11-26 20:04:4743 days ago1732651487IN
0x774dF134...eF47C61e6
0 ETH0.0015029411.75915704
Withdraw212717582024-11-26 11:55:2344 days ago1732622123IN
0x774dF134...eF47C61e6
0 ETH0.0010639617.49533307
Withdraw212681252024-11-25 23:44:2344 days ago1732578263IN
0x774dF134...eF47C61e6
0 ETH0.000510518.39467766
Stake212572182024-11-24 11:10:2346 days ago1732446623IN
0x774dF134...eF47C61e6
0 ETH0.0008439710.24073565
Stake212527562024-11-23 20:14:1146 days ago1732392851IN
0x774dF134...eF47C61e6
0 ETH0.0016880413.20855779
Stake212522082024-11-23 18:23:4746 days ago1732386227IN
0x774dF134...eF47C61e6
0 ETH0.001956615.30998693
Stake212443632024-11-22 16:07:4747 days ago1732291667IN
0x774dF134...eF47C61e6
0 ETH0.0013337116.18311198
Stake212382762024-11-21 19:44:2348 days ago1732218263IN
0x774dF134...eF47C61e6
0 ETH0.0019051423.11680308
Stake212377932024-11-21 18:07:4748 days ago1732212467IN
0x774dF134...eF47C61e6
0 ETH0.0017885323.03691299
Stake212316502024-11-20 21:31:4749 days ago1732138307IN
0x774dF134...eF47C61e6
0 ETH0.0018053713.61778137
Stake212244262024-11-19 21:19:4750 days ago1732051187IN
0x774dF134...eF47C61e6
0 ETH0.0019582918.49002494
Withdraw212244022024-11-19 21:14:5950 days ago1732050899IN
0x774dF134...eF47C61e6
0 ETH0.001705821.88674605
Stake212190862024-11-19 3:27:5951 days ago1731986879IN
0x774dF134...eF47C61e6
0 ETH0.0008900911.46470642
Withdraw212161072024-11-18 17:30:2351 days ago1731951023IN
0x774dF134...eF47C61e6
0 ETH0.0016754627.55610579
Withdraw212128352024-11-18 6:33:1152 days ago1731911591IN
0x774dF134...eF47C61e6
0 ETH0.00073649.45011657
Withdraw212111492024-11-18 0:54:5952 days ago1731891299IN
0x774dF134...eF47C61e6
0 ETH0.000595629.79039035
Withdraw212063932024-11-17 9:00:5953 days ago1731834059IN
0x774dF134...eF47C61e6
0 ETH0.000675948.67418893
Stake212019812024-11-16 18:14:2353 days ago1731780863IN
0x774dF134...eF47C61e6
0 ETH0.0010639912.91032842
Stake211973062024-11-16 2:35:5954 days ago1731724559IN
0x774dF134...eF47C61e6
0 ETH0.0010459313.47194268
Withdraw211968332024-11-16 1:00:4754 days ago1731718847IN
0x774dF134...eF47C61e6
0 ETH0.0009114414.98148069
Withdraw211638172024-11-11 10:22:4759 days ago1731320567IN
0x774dF134...eF47C61e6
0 ETH0.0018497119.72315267
Stake211234102024-11-05 19:02:5964 days ago1730833379IN
0x774dF134...eF47C61e6
0 ETH0.0010066112.96551066
Stake210729762024-10-29 18:06:2371 days ago1730225183IN
0x774dF134...eF47C61e6
0 ETH0.0020093915.15531903
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:
StakingContract

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2024-10-15
*/

//SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

/**
 * @title Owner
 * @dev Set & change owner
 */
contract Ownable {

    address private owner;
    
    // event for EVM logging
    event OwnerSet(address indexed oldOwner, address indexed newOwner);
    
    // modifier to check if caller is owner
    modifier onlyOwner() {
        // If the first argument of 'require' evaluates to 'false', execution terminates and all
        // changes to the state and to Ether balances are reverted.
        // This used to consume all gas in old EVM versions, but not anymore.
        // It is often a good idea to use 'require' to check if functions are called correctly.
        // As a second argument, you can also provide an explanation about what went wrong.
        require(msg.sender == owner, "Caller is not owner");
        _;
    }
    
    /**
     * @dev Set contract deployer as owner
     */
    constructor() {
        owner = msg.sender; // 'msg.sender' is sender of current call, contract deployer for a constructor
        emit OwnerSet(address(0), owner);
    }

    /**
     * @dev Change owner
     * @param newOwner address of new owner
     */
    function changeOwner(address newOwner) public onlyOwner {
        emit OwnerSet(owner, newOwner);
        owner = newOwner;
    }

    /**
     * @dev Return owner address 
     * @return address of owner
     */
    function getOwner() external view returns (address) {
        return owner;
    }
}

interface IERC20 {

    function totalSupply() external view returns (uint256);
    
    function symbol() external view returns(string memory);
    
    function name() external view returns(string memory);

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

    /**
     * @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);
}

contract StakingContract is Ownable {

    // name and symbol for tokenized contract
    string private _name = "Staked FIRE";
    string private _symbol = "SFIRE";
    uint8 private constant _decimals = 18;

    // lock time in seconds
    uint256 public lockTime = 30 days;

    // fee for leaving staking early
    uint256 public leaveEarlyFee = 25;

    // recipient of fee
    address public feeRecipient = 0x42290Ba8C7770f7eFa8d8224675Ca3b658a9834C;

    // Staking Token
    address public constant token = 0xe0C18Fe05895314F20E5100729f08baB3f3C3A45;

    // Reward Token
    address public constant reward = 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599;

    // User Info
    struct UserInfo {
        uint256 amount;
        uint256 unlockTime;
        uint256 totalExcluded;
    }
    // Address => UserInfo
    mapping ( address => UserInfo ) public userInfo;

    // Tracks Dividends
    uint256 public totalRewards;
    uint256 private totalShares;
    uint256 private dividendsPerShare;
    uint256 private constant precision = 10**18;

    // Events
    event SetLockTime(uint LockTime);
    event SetEarlyFee(uint earlyFee);
    event SetFeeRecipient(address FeeRecipient);
    event Transfer(address indexed from, address indexed to, uint256 value);

    constructor(){
        emit Transfer(address(0), msg.sender, 0);
    }

    /** Returns the total number of tokens in existence */
    function totalSupply() external view returns (uint256) { 
        return totalShares; 
    }

    /** Returns the number of tokens owned by `account` */
    function balanceOf(address account) public view returns (uint256) { 
        return userInfo[account].amount;
    }

    /** Token Name */
    function name() public view returns (string memory) {
        return _name;
    }

    /** Token Ticker Symbol */
    function symbol() public view returns (string memory) {
        return _symbol;
    }

    /** Tokens decimals */
    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function setLockTime(uint256 newLockTime) external onlyOwner {
        require(
            newLockTime <= 10**7,
            'Lock Time Too Long'
        );
        lockTime = newLockTime;
        emit SetLockTime(newLockTime);
    }

    function setLeaveEarlyFee(uint256 newEarlyFee) external onlyOwner {
        require(
            newEarlyFee < 100,
            'Fee Too High'
        );
        leaveEarlyFee = newEarlyFee;
        emit SetEarlyFee(newEarlyFee);
    }

    function setFeeRecipient(address newFeeRecipient) external onlyOwner {
        require(
            newFeeRecipient != address(0),
            'Zero Address'
        );
        feeRecipient = newFeeRecipient;
        emit SetFeeRecipient(newFeeRecipient);
    }

    function withdrawForeignToken(address token_) external onlyOwner {
        require(
            token != token_,
            'Cannot Withdraw Staked Token'
        );
        require(
            IERC20(token_).transfer(
                msg.sender,
                IERC20(token_).balanceOf(address(this))
            ),
            'Failure On Token Withdraw'
        );
    }

    function claimRewards() external {
        _claimReward(msg.sender);
    }

    function withdraw(uint256 amount) external {
        require(
            amount <= userInfo[msg.sender].amount,
            'Insufficient Amount'
        );
        require(
            amount > 0,
            'Zero Amount'
        );
        if (userInfo[msg.sender].amount > 0) {
            _claimReward(msg.sender);
        }

        totalShares -= amount;
        userInfo[msg.sender].amount -= amount;
        userInfo[msg.sender].totalExcluded = getCumulativeDividends(userInfo[msg.sender].amount);

        uint fee = timeUntilUnlock(msg.sender) == 0 ? 0 : ( amount * leaveEarlyFee ) / 100;
        if (fee > 0) {
            require(
                IERC20(token).transfer(feeRecipient, fee),
                'Failure On Token Transfer'
            );
        }

        uint sendAmount = amount - fee;
        require(
            IERC20(token).transfer(msg.sender, sendAmount),
            'Failure On Token Transfer To Sender'
        );

        emit Transfer(msg.sender, address(0), amount);
    }

    function stake(uint256 amount) external {
        if (userInfo[msg.sender].amount > 0) {
            _claimReward(msg.sender);
        }

        // transfer in tokens
        uint received = _transferIn(token, amount);
        
        // update data
        unchecked {
            totalShares += received;
            userInfo[msg.sender].amount += received;
            userInfo[msg.sender].unlockTime = block.timestamp + lockTime;
        }
        userInfo[msg.sender].totalExcluded = getCumulativeDividends(userInfo[msg.sender].amount);

        emit Transfer(address(0), msg.sender, amount);
    }

    function depositRewards(uint256 amount) external {
        if (totalShares == 0) {
            return;
        }
        
        // transfer in reward token
        uint received = _transferIn(reward, amount);

        // update state
        unchecked {
            dividendsPerShare += ( received * precision ) / totalShares;
            totalRewards += received;
        }        
    }


    function _claimReward(address user) internal {

        // exit if zero value locked
        if (userInfo[user].amount == 0) {
            return;
        }

        // fetch pending rewards
        uint256 amount = pendingRewards(user);
        
        // exit if zero rewards
        if (amount == 0) {
            return;
        }

        // update total excluded
        userInfo[user].totalExcluded = getCumulativeDividends(userInfo[user].amount);

        // transfer reward to user
        require(
            IERC20(reward).transfer(user, amount),
            'Failure On Token Claim'
        );
    }

    function _transferIn(address _token, uint256 amount) internal returns (uint256) {
        uint before = IERC20(_token).balanceOf(address(this));
        IERC20(_token).transferFrom(msg.sender, address(this), amount);
        uint After = IERC20(_token).balanceOf(address(this));
        require(
            After > before,
            'Error On TransferIn'
        );
        return After - before;
    }

    function timeUntilUnlock(address user) public view returns (uint256) {
        return userInfo[user].unlockTime < block.timestamp ? 0 : userInfo[user].unlockTime - block.timestamp;
    }

    function pendingRewards(address shareholder) public view returns (uint256) {
        if(userInfo[shareholder].amount == 0){ return 0; }

        uint256 totalDividends = getCumulativeDividends(userInfo[shareholder].amount);
        uint256 tExcluded = userInfo[shareholder].totalExcluded;

        if(totalDividends <= tExcluded){ return 0; }

        return totalDividends <= tExcluded ? 0 : totalDividends - tExcluded;
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return ( share * dividendsPerShare ) / precision;
    }

    receive() external payable {}

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"earlyFee","type":"uint256"}],"name":"SetEarlyFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"FeeRecipient","type":"address"}],"name":"SetFeeRecipient","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"LockTime","type":"uint256"}],"name":"SetLockTime","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"changeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"leaveEarlyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reward","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newFeeRecipient","type":"address"}],"name":"setFeeRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newEarlyFee","type":"uint256"}],"name":"setLeaveEarlyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLockTime","type":"uint256"}],"name":"setLockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"timeUntilUnlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"unlockTime","type":"uint256"},{"internalType":"uint256","name":"totalExcluded","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"}],"name":"withdrawForeignToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600b60809081526a5374616b6564204649524560a81b60a0526001906200002c9082620001ba565b50604080518082019091526005815264534649524560d81b6020820152600290620000589082620001ba565b5062278d006003556019600455600580546001600160a01b0319167342290ba8c7770f7efa8d8224675ca3b658a9834c1790553480156200009857600080fd5b50600080546001600160a01b0319163390811782556040519091907f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a735908290a3604051600080825233917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a362000286565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014057607f821691505b6020821081036200016157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b557600081815260208120601f850160051c81016020861015620001905750805b601f850160051c820191505b81811015620001b1578281556001016200019c565b5050505b505050565b81516001600160401b03811115620001d657620001d662000115565b620001ee81620001e784546200012b565b8462000167565b602080601f8311600181146200022657600084156200020d5750858301515b600019600386901b1c1916600185901b178555620001b1565b600085815260208120601f198616915b82811015620002575788860151825594840194600190910190840162000236565b5085821015620002765787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61141280620002966000396000f3fe60806040526004361061014f5760003560e01c806370a08231116100b6578063a694fc3a1161006f578063a694fc3a146103de578063a6f9dae1146103fe578063ae04d45d1461041e578063d0228e8f1461043e578063e74b981b1461045e578063fc0c546a1461047e57600080fd5b806370a0823114610315578063885a4cd01461034b578063893d20e81461036b5780638bdf67f2146103895780638beceeea146103a957806395d89b41146103c957600080fd5b80632e1a7d4d116101085780632e1a7d4d1461026c578063313ce5671461028e57806331d7a262146102aa578063372500ab146102ca57806346904840146102df57806358d9e685146102ff57600080fd5b806306fdde031461015b5780630d668087146101865780630e15561a146101aa57806318160ddd146101c05780631959a002146101d5578063228cb7331461022c57600080fd5b3661015657005b600080fd5b34801561016757600080fd5b506101706104a6565b60405161017d919061122b565b60405180910390f35b34801561019257600080fd5b5061019c60035481565b60405190815260200161017d565b3480156101b657600080fd5b5061019c60075481565b3480156101cc57600080fd5b5060085461019c565b3480156101e157600080fd5b506102116101f0366004611279565b60066020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161017d565b34801561023857600080fd5b50610254732260fac5e5542a773aa44fbcfedf7c193bc2c59981565b6040516001600160a01b03909116815260200161017d565b34801561027857600080fd5b5061028c6102873660046112a9565b610538565b005b34801561029a57600080fd5b506040516012815260200161017d565b3480156102b657600080fd5b5061019c6102c5366004611279565b610885565b3480156102d657600080fd5b5061028c610920565b3480156102eb57600080fd5b50600554610254906001600160a01b031681565b34801561030b57600080fd5b5061019c60045481565b34801561032157600080fd5b5061019c610330366004611279565b6001600160a01b031660009081526006602052604090205490565b34801561035757600080fd5b5061028c610366366004611279565b61092b565b34801561037757600080fd5b506000546001600160a01b0316610254565b34801561039557600080fd5b5061028c6103a43660046112a9565b610af1565b3480156103b557600080fd5b5061028c6103c43660046112a9565b610b55565b3480156103d557600080fd5b50610170610bfa565b3480156103ea57600080fd5b5061028c6103f93660046112a9565b610c09565b34801561040a57600080fd5b5061028c610419366004611279565b610cd7565b34801561042a57600080fd5b5061028c6104393660046112a9565b610d5c565b34801561044a57600080fd5b5061019c610459366004611279565b610e03565b34801561046a57600080fd5b5061028c610479366004611279565b610e5a565b34801561048a57600080fd5b5061025473e0c18fe05895314f20e5100729f08bab3f3c3a4581565b6060600180546104b5906112c2565b80601f01602080910402602001604051908101604052809291908181526020018280546104e1906112c2565b801561052e5780601f106105035761010080835404028352916020019161052e565b820191906000526020600020905b81548152906001019060200180831161051157829003601f168201915b5050505050905090565b336000908152600660205260409020548111156105925760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b60448201526064015b60405180910390fd5b600081116105d05760405162461bcd60e51b815260206004820152600b60248201526a16995c9bc8105b5bdd5b9d60aa1b6044820152606401610589565b33600090815260066020526040902054156105ee576105ee33610f17565b80600860008282546106009190611312565b90915550503360009081526006602052604081208054839290610624908490611312565b9091555050336000908152600660205260409020546106429061105b565b3360008181526006602052604081206002019290925561066190610e03565b15610685576064600454836106769190611325565b6106809190611352565b610688565b60005b905080156107655760055460405163a9059cbb60e01b81526001600160a01b0390911660048201526024810182905273e0c18fe05895314f20e5100729f08bab3f3c3a459063a9059cbb906044016020604051808303816000875af11580156106f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107199190611374565b6107655760405162461bcd60e51b815260206004820152601960248201527f4661696c757265204f6e20546f6b656e205472616e73666572000000000000006044820152606401610589565b60006107718284611312565b60405163a9059cbb60e01b81523360048201526024810182905290915073e0c18fe05895314f20e5100729f08bab3f3c3a459063a9059cbb906044016020604051808303816000875af11580156107cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f09190611374565b6108485760405162461bcd60e51b815260206004820152602360248201527f4661696c757265204f6e20546f6b656e205472616e7366657220546f2053656e6044820152623232b960e91b6064820152608401610589565b60405183815260009033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b6001600160a01b03811660009081526006602052604081205481036108ac57506000919050565b6001600160a01b0382166000908152600660205260408120546108ce9061105b565b6001600160a01b0384166000908152600660205260409020600201549091508082116108fe575060009392505050565b80821115610915576109108183611312565b610918565b60005b949350505050565b61092933610f17565b565b6000546001600160a01b031633146109555760405162461bcd60e51b815260040161058990611396565b6001600160a01b03811673e0c18fe05895314f20e5100729f08bab3f3c3a45036109c15760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74205769746864726177205374616b656420546f6b656e000000006044820152606401610589565b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3391906113c3565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610a7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa29190611374565b610aee5760405162461bcd60e51b815260206004820152601960248201527f4661696c757265204f6e20546f6b656e205769746864726177000000000000006044820152606401610589565b50565b600854600003610afe5750565b6000610b1e732260fac5e5542a773aa44fbcfedf7c193bc2c5998361107e565b9050600854670de0b6b3a7640000820281610b3b57610b3b61133c565b600980549290910491909101905560078054909101905550565b6000546001600160a01b03163314610b7f5760405162461bcd60e51b815260040161058990611396565b60648110610bbe5760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40a8dede4090d2ced60a31b6044820152606401610589565b60048190556040518181527fb0e634e13e11168144d6e7d86eb92c547a79c0181bd24d62d324d567af12692a906020015b60405180910390a150565b6060600280546104b5906112c2565b3360009081526006602052604090205415610c2757610c2733610f17565b6000610c4773e0c18fe05895314f20e5100729f08bab3f3c3a458361107e565b600880548201905533600090815260066020526040902080548201808255600354420160019290920191909155909150610c809061105b565b336000818152600660205260408082206002019390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ccb9086815260200190565b60405180910390a35050565b6000546001600160a01b03163314610d015760405162461bcd60e51b815260040161058990611396565b600080546040516001600160a01b03808516939216917f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a73591a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d865760405162461bcd60e51b815260040161058990611396565b62989680811115610dce5760405162461bcd60e51b81526020600482015260126024820152714c6f636b2054696d6520546f6f204c6f6e6760701b6044820152606401610589565b60038190556040518181527fc086f5f6e9e89874e8a7189be0f242117750ec05ebe4fe22a4d33e5668acdbc090602001610bef565b6001600160a01b0381166000908152600660205260408120600101544211610e51576001600160a01b038216600090815260066020526040902060010154610e4c904290611312565b610e54565b60005b92915050565b6000546001600160a01b03163314610e845760405162461bcd60e51b815260040161058990611396565b6001600160a01b038116610ec95760405162461bcd60e51b815260206004820152600c60248201526b5a65726f204164647265737360a01b6044820152606401610589565b600580546001600160a01b0319166001600160a01b0383169081179091556040519081527f2e979f80fe4d43055c584cf4a8467c55875ea36728fc37176c05acd784eb7a7390602001610bef565b6001600160a01b0381166000908152600660205260408120549003610f395750565b6000610f4482610885565b905080600003610f52575050565b6001600160a01b038216600090815260066020526040902054610f749061105b565b6001600160a01b0383166000818152600660205260409081902060020192909255905163a9059cbb60e01b8152600481019190915260248101829052732260fac5e5542a773aa44fbcfedf7c193bc2c5999063a9059cbb906044016020604051808303816000875af1158015610fee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110129190611374565b6110575760405162461bcd60e51b81526020600482015260166024820152754661696c757265204f6e20546f6b656e20436c61696d60501b6044820152606401610589565b5050565b6000670de0b6b3a7640000600954836110749190611325565b610e549190611352565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa1580156110c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110eb91906113c3565b6040516323b872dd60e01b8152336004820152306024820152604481018590529091506001600160a01b038516906323b872dd906064016020604051808303816000875af1158015611141573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111659190611374565b506040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa1580156111ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d191906113c3565b90508181116112185760405162461bcd60e51b815260206004820152601360248201527222b93937b91027b7102a3930b739b332b924b760691b6044820152606401610589565b6112228282611312565b95945050505050565b600060208083528351808285015260005b818110156112585785810183015185820160400152820161123c565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561128b57600080fd5b81356001600160a01b03811681146112a257600080fd5b9392505050565b6000602082840312156112bb57600080fd5b5035919050565b600181811c908216806112d657607f821691505b6020821081036112f657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610e5457610e546112fc565b8082028115828204841417610e5457610e546112fc565b634e487b7160e01b600052601260045260246000fd5b60008261136f57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561138657600080fd5b815180151581146112a257600080fd5b60208082526013908201527221b0b63632b91034b9903737ba1037bbb732b960691b604082015260600190565b6000602082840312156113d557600080fd5b505191905056fea2646970667358221220b2aa5c2b579fe94eb46586fb2c6fe97fea6641b5e7845a63d69267dbf133bfc564736f6c63430008140033

Deployed Bytecode

0x60806040526004361061014f5760003560e01c806370a08231116100b6578063a694fc3a1161006f578063a694fc3a146103de578063a6f9dae1146103fe578063ae04d45d1461041e578063d0228e8f1461043e578063e74b981b1461045e578063fc0c546a1461047e57600080fd5b806370a0823114610315578063885a4cd01461034b578063893d20e81461036b5780638bdf67f2146103895780638beceeea146103a957806395d89b41146103c957600080fd5b80632e1a7d4d116101085780632e1a7d4d1461026c578063313ce5671461028e57806331d7a262146102aa578063372500ab146102ca57806346904840146102df57806358d9e685146102ff57600080fd5b806306fdde031461015b5780630d668087146101865780630e15561a146101aa57806318160ddd146101c05780631959a002146101d5578063228cb7331461022c57600080fd5b3661015657005b600080fd5b34801561016757600080fd5b506101706104a6565b60405161017d919061122b565b60405180910390f35b34801561019257600080fd5b5061019c60035481565b60405190815260200161017d565b3480156101b657600080fd5b5061019c60075481565b3480156101cc57600080fd5b5060085461019c565b3480156101e157600080fd5b506102116101f0366004611279565b60066020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161017d565b34801561023857600080fd5b50610254732260fac5e5542a773aa44fbcfedf7c193bc2c59981565b6040516001600160a01b03909116815260200161017d565b34801561027857600080fd5b5061028c6102873660046112a9565b610538565b005b34801561029a57600080fd5b506040516012815260200161017d565b3480156102b657600080fd5b5061019c6102c5366004611279565b610885565b3480156102d657600080fd5b5061028c610920565b3480156102eb57600080fd5b50600554610254906001600160a01b031681565b34801561030b57600080fd5b5061019c60045481565b34801561032157600080fd5b5061019c610330366004611279565b6001600160a01b031660009081526006602052604090205490565b34801561035757600080fd5b5061028c610366366004611279565b61092b565b34801561037757600080fd5b506000546001600160a01b0316610254565b34801561039557600080fd5b5061028c6103a43660046112a9565b610af1565b3480156103b557600080fd5b5061028c6103c43660046112a9565b610b55565b3480156103d557600080fd5b50610170610bfa565b3480156103ea57600080fd5b5061028c6103f93660046112a9565b610c09565b34801561040a57600080fd5b5061028c610419366004611279565b610cd7565b34801561042a57600080fd5b5061028c6104393660046112a9565b610d5c565b34801561044a57600080fd5b5061019c610459366004611279565b610e03565b34801561046a57600080fd5b5061028c610479366004611279565b610e5a565b34801561048a57600080fd5b5061025473e0c18fe05895314f20e5100729f08bab3f3c3a4581565b6060600180546104b5906112c2565b80601f01602080910402602001604051908101604052809291908181526020018280546104e1906112c2565b801561052e5780601f106105035761010080835404028352916020019161052e565b820191906000526020600020905b81548152906001019060200180831161051157829003601f168201915b5050505050905090565b336000908152600660205260409020548111156105925760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b60448201526064015b60405180910390fd5b600081116105d05760405162461bcd60e51b815260206004820152600b60248201526a16995c9bc8105b5bdd5b9d60aa1b6044820152606401610589565b33600090815260066020526040902054156105ee576105ee33610f17565b80600860008282546106009190611312565b90915550503360009081526006602052604081208054839290610624908490611312565b9091555050336000908152600660205260409020546106429061105b565b3360008181526006602052604081206002019290925561066190610e03565b15610685576064600454836106769190611325565b6106809190611352565b610688565b60005b905080156107655760055460405163a9059cbb60e01b81526001600160a01b0390911660048201526024810182905273e0c18fe05895314f20e5100729f08bab3f3c3a459063a9059cbb906044016020604051808303816000875af11580156106f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107199190611374565b6107655760405162461bcd60e51b815260206004820152601960248201527f4661696c757265204f6e20546f6b656e205472616e73666572000000000000006044820152606401610589565b60006107718284611312565b60405163a9059cbb60e01b81523360048201526024810182905290915073e0c18fe05895314f20e5100729f08bab3f3c3a459063a9059cbb906044016020604051808303816000875af11580156107cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f09190611374565b6108485760405162461bcd60e51b815260206004820152602360248201527f4661696c757265204f6e20546f6b656e205472616e7366657220546f2053656e6044820152623232b960e91b6064820152608401610589565b60405183815260009033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b6001600160a01b03811660009081526006602052604081205481036108ac57506000919050565b6001600160a01b0382166000908152600660205260408120546108ce9061105b565b6001600160a01b0384166000908152600660205260409020600201549091508082116108fe575060009392505050565b80821115610915576109108183611312565b610918565b60005b949350505050565b61092933610f17565b565b6000546001600160a01b031633146109555760405162461bcd60e51b815260040161058990611396565b6001600160a01b03811673e0c18fe05895314f20e5100729f08bab3f3c3a45036109c15760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74205769746864726177205374616b656420546f6b656e000000006044820152606401610589565b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3391906113c3565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610a7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa29190611374565b610aee5760405162461bcd60e51b815260206004820152601960248201527f4661696c757265204f6e20546f6b656e205769746864726177000000000000006044820152606401610589565b50565b600854600003610afe5750565b6000610b1e732260fac5e5542a773aa44fbcfedf7c193bc2c5998361107e565b9050600854670de0b6b3a7640000820281610b3b57610b3b61133c565b600980549290910491909101905560078054909101905550565b6000546001600160a01b03163314610b7f5760405162461bcd60e51b815260040161058990611396565b60648110610bbe5760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40a8dede4090d2ced60a31b6044820152606401610589565b60048190556040518181527fb0e634e13e11168144d6e7d86eb92c547a79c0181bd24d62d324d567af12692a906020015b60405180910390a150565b6060600280546104b5906112c2565b3360009081526006602052604090205415610c2757610c2733610f17565b6000610c4773e0c18fe05895314f20e5100729f08bab3f3c3a458361107e565b600880548201905533600090815260066020526040902080548201808255600354420160019290920191909155909150610c809061105b565b336000818152600660205260408082206002019390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ccb9086815260200190565b60405180910390a35050565b6000546001600160a01b03163314610d015760405162461bcd60e51b815260040161058990611396565b600080546040516001600160a01b03808516939216917f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a73591a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d865760405162461bcd60e51b815260040161058990611396565b62989680811115610dce5760405162461bcd60e51b81526020600482015260126024820152714c6f636b2054696d6520546f6f204c6f6e6760701b6044820152606401610589565b60038190556040518181527fc086f5f6e9e89874e8a7189be0f242117750ec05ebe4fe22a4d33e5668acdbc090602001610bef565b6001600160a01b0381166000908152600660205260408120600101544211610e51576001600160a01b038216600090815260066020526040902060010154610e4c904290611312565b610e54565b60005b92915050565b6000546001600160a01b03163314610e845760405162461bcd60e51b815260040161058990611396565b6001600160a01b038116610ec95760405162461bcd60e51b815260206004820152600c60248201526b5a65726f204164647265737360a01b6044820152606401610589565b600580546001600160a01b0319166001600160a01b0383169081179091556040519081527f2e979f80fe4d43055c584cf4a8467c55875ea36728fc37176c05acd784eb7a7390602001610bef565b6001600160a01b0381166000908152600660205260408120549003610f395750565b6000610f4482610885565b905080600003610f52575050565b6001600160a01b038216600090815260066020526040902054610f749061105b565b6001600160a01b0383166000818152600660205260409081902060020192909255905163a9059cbb60e01b8152600481019190915260248101829052732260fac5e5542a773aa44fbcfedf7c193bc2c5999063a9059cbb906044016020604051808303816000875af1158015610fee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110129190611374565b6110575760405162461bcd60e51b81526020600482015260166024820152754661696c757265204f6e20546f6b656e20436c61696d60501b6044820152606401610589565b5050565b6000670de0b6b3a7640000600954836110749190611325565b610e549190611352565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa1580156110c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110eb91906113c3565b6040516323b872dd60e01b8152336004820152306024820152604481018590529091506001600160a01b038516906323b872dd906064016020604051808303816000875af1158015611141573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111659190611374565b506040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa1580156111ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d191906113c3565b90508181116112185760405162461bcd60e51b815260206004820152601360248201527222b93937b91027b7102a3930b739b332b924b760691b6044820152606401610589565b6112228282611312565b95945050505050565b600060208083528351808285015260005b818110156112585785810183015185820160400152820161123c565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561128b57600080fd5b81356001600160a01b03811681146112a257600080fd5b9392505050565b6000602082840312156112bb57600080fd5b5035919050565b600181811c908216806112d657607f821691505b6020821081036112f657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610e5457610e546112fc565b8082028115828204841417610e5457610e546112fc565b634e487b7160e01b600052601260045260246000fd5b60008261136f57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561138657600080fd5b815180151581146112a257600080fd5b60208082526013908201527221b0b63632b91034b9903737ba1037bbb732b960691b604082015260600190565b6000602082840312156113d557600080fd5b505191905056fea2646970667358221220b2aa5c2b579fe94eb46586fb2c6fe97fea6641b5e7845a63d69267dbf133bfc564736f6c63430008140033

Deployed Bytecode Sourcemap

4356:7344:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6119:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4605:33;;;;;;;;;;;;;;;;;;;713:25:1;;;701:2;686:18;4605:33:0;567:177:1;5286:27:0;;;;;;;;;;;;;;;;5809:94;;;;;;;;;;-1:-1:-1;5883:11:0;;5809:94;;5205:47;;;;;;;;;;-1:-1:-1;5205:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1242:25:1;;;1298:2;1283:18;;1276:34;;;;1326:18;;;1319:34;1230:2;1215:18;5205:47:0;1040:319:1;4959:75:0;;;;;;;;;;;;4992:42;4959:75;;;;;-1:-1:-1;;;;;1528:32:1;;;1510:51;;1498:2;1483:18;4959:75:0;1364:203:1;7711:1045:0;;;;;;;;;;-1:-1:-1;7711:1045:0;;;;;:::i;:::-;;:::i;:::-;;6365:83;;;;;;;;;;-1:-1:-1;6365:83:0;;4565:2;1899:36:1;;1887:2;1872:18;6365:83:0;1757:184:1;11069:435:0;;;;;;;;;;-1:-1:-1;11069:435:0;;;;;:::i;:::-;;:::i;7627:76::-;;;;;;;;;;;;;:::i;4752:72::-;;;;;;;;;;-1:-1:-1;4752:72:0;;;;-1:-1:-1;;;;;4752:72:0;;;4685:33;;;;;;;;;;;;;;;;5971:117;;;;;;;;;;-1:-1:-1;5971:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;6056:17:0;6028:7;6056:17;;;:8;:17;;;;;:24;;5971:117;7231:388;;;;;;;;;;-1:-1:-1;7231:388:0;;;;;:::i;:::-;;:::i;1437:83::-;;;;;;;;;;-1:-1:-1;1480:7:0;1507:5;-1:-1:-1;;;;;1507:5:0;1437:83;;9394:403;;;;;;;;;;-1:-1:-1;9394:403:0;;;;;:::i;:::-;;:::i;6705:242::-;;;;;;;;;;-1:-1:-1;6705:242:0;;;;;:::i;:::-;;:::i;6242:87::-;;;;;;;;;;;;;:::i;8764:622::-;;;;;;;;;;-1:-1:-1;8764:622:0;;;;;:::i;:::-;;:::i;1211:132::-;;;;;;;;;;-1:-1:-1;1211:132:0;;;;;:::i;:::-;;:::i;6456:241::-;;;;;;;;;;-1:-1:-1;6456:241:0;;;;;:::i;:::-;;:::i;10873:188::-;;;;;;;;;;-1:-1:-1;10873:188:0;;;;;:::i;:::-;;:::i;6955:268::-;;;;;;;;;;-1:-1:-1;6955:268:0;;;;;:::i;:::-;;:::i;4855:74::-;;;;;;;;;;;;4887:42;4855:74;;6119:83;6156:13;6189:5;6182:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6119:83;:::o;7711:1045::-;7806:10;7797:20;;;;:8;:20;;;;;:27;7787:37;;;7765:106;;;;-1:-1:-1;;;7765:106:0;;2533:2:1;7765:106:0;;;2515:21:1;2572:2;2552:18;;;2545:30;-1:-1:-1;;;2591:18:1;;;2584:49;2650:18;;7765:106:0;;;;;;;;;7913:1;7904:6;:10;7882:71;;;;-1:-1:-1;;;7882:71:0;;2881:2:1;7882:71:0;;;2863:21:1;2920:2;2900:18;;;2893:30;-1:-1:-1;;;2939:18:1;;;2932:41;2990:18;;7882:71:0;2679:335:1;7882:71:0;7977:10;7998:1;7968:20;;;:8;:20;;;;;:27;:31;7964:88;;8016:24;8029:10;8016:12;:24::i;:::-;8079:6;8064:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;8105:10:0;8096:20;;;;:8;:20;;;;;:37;;8127:6;;8096:20;:37;;8127:6;;8096:37;:::i;:::-;;;;-1:-1:-1;;8213:10:0;8204:20;;;;:8;:20;;;;;:27;8181:51;;:22;:51::i;:::-;8153:10;8144:20;;;;:8;:20;;;;;:34;;:88;;;;8256:27;;:15;:27::i;:::-;:32;:71;;8324:3;8306:13;;8297:6;:22;;;;:::i;:::-;8295:32;;;;:::i;:::-;8256:71;;;8291:1;8256:71;8245:82;-1:-1:-1;8342:7:0;;8338:168;;8415:12;;8392:41;;-1:-1:-1;;;8392:41:0;;-1:-1:-1;;;;;8415:12:0;;;8392:41;;;3985:51:1;4052:18;;;4045:34;;;4887:42:0;;8392:22;;3958:18:1;;8392:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8366:128;;;;-1:-1:-1;;;8366:128:0;;4574:2:1;8366:128:0;;;4556:21:1;4613:2;4593:18;;;4586:30;4652:27;4632:18;;;4625:55;4697:18;;8366:128:0;4372:349:1;8366:128:0;8518:15;8536:12;8545:3;8536:6;:12;:::i;:::-;8581:46;;-1:-1:-1;;;8581:46:0;;8604:10;8581:46;;;3985:51:1;4052:18;;;4045:34;;;8518:30:0;;-1:-1:-1;4887:42:0;;8581:22;;3958:18:1;;8581:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8559:131;;;;-1:-1:-1;;;8559:131:0;;4928:2:1;8559:131:0;;;4910:21:1;4967:2;4947:18;;;4940:30;5006:34;4986:18;;;4979:62;-1:-1:-1;;;5057:18:1;;;5050:33;5100:19;;8559:131:0;4726:399:1;8559:131:0;8708:40;;713:25:1;;;8737:1:0;;8717:10;;8708:40;;701:2:1;686:18;8708:40:0;;;;;;;7754:1002;;7711:1045;:::o;11069:435::-;-1:-1:-1;;;;;11158:21:0;;11135:7;11158:21;;;:8;:21;;;;;:28;:33;;11155:50;;-1:-1:-1;11201:1:0;;11069:435;-1:-1:-1;11069:435:0:o;11155:50::-;-1:-1:-1;;;;;11265:21:0;;11217:22;11265:21;;;:8;:21;;;;;:28;11242:52;;:22;:52::i;:::-;-1:-1:-1;;;;;11325:21:0;;11305:17;11325:21;;;:8;:21;;;;;:35;;;11217:77;;-1:-1:-1;11376:27:0;;;11373:44;;-1:-1:-1;11413:1:0;;11069:435;-1:-1:-1;;;11069:435:0:o;11373:44::-;11454:9;11436:14;:27;;:60;;11470:26;11487:9;11470:14;:26;:::i;:::-;11436:60;;;11466:1;11436:60;11429:67;11069:435;-1:-1:-1;;;;11069:435:0:o;7627:76::-;7671:24;7684:10;7671:12;:24::i;:::-;7627:76::o;7231:388::-;818:5;;-1:-1:-1;;;;;818:5:0;804:10;:19;796:51;;;;-1:-1:-1;;;796:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7329:15:0;::::1;4887:42;7329:15:::0;7307:93:::1;;;::::0;-1:-1:-1;;;7307:93:0;;5680:2:1;7307:93:0::1;::::0;::::1;5662:21:1::0;5719:2;5699:18;;;5692:30;5758;5738:18;;;5731:58;5806:18;;7307:93:0::1;5478:352:1::0;7307:93:0::1;7504:39;::::0;-1:-1:-1;;;7504:39:0;;7537:4:::1;7504:39;::::0;::::1;1510:51:1::0;-1:-1:-1;;;;;7433:23:0;::::1;::::0;::::1;::::0;7475:10:::1;::::0;7433:23;;7504:24:::1;::::0;1483:18:1;;7504:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7433:125;::::0;-1:-1:-1;;;;;;7433:125:0::1;::::0;;;;;;-1:-1:-1;;;;;4003:32:1;;;7433:125:0::1;::::0;::::1;3985:51:1::0;4052:18;;;4045:34;3958:18;;7433:125:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7411:200;;;::::0;-1:-1:-1;;;7411:200:0;;6226:2:1;7411:200:0::1;::::0;::::1;6208:21:1::0;6265:2;6245:18;;;6238:30;6304:27;6284:18;;;6277:55;6349:18;;7411:200:0::1;6024:349:1::0;7411:200:0::1;7231:388:::0;:::o;9394:403::-;9458:11;;9473:1;9458:16;9454:55;;9394:403;:::o;9454:55::-;9566:13;9582:27;4992:42;9602:6;9582:11;:27::i;:::-;9566:43;;9720:11;;5431:6;9695:8;:20;9693:38;;;;;:::i;:::-;9672:17;:59;;9693:38;;;;9672:59;;;;;;9746:12;:24;;;;;;;-1:-1:-1;9394:403:0:o;6705:242::-;818:5;;-1:-1:-1;;;;;818:5:0;804:10;:19;796:51;;;;-1:-1:-1;;;796:51:0;;;;;;;:::i;:::-;6818:3:::1;6804:11;:17;6782:79;;;::::0;-1:-1:-1;;;6782:79:0;;6580:2:1;6782:79:0::1;::::0;::::1;6562:21:1::0;6619:2;6599:18;;;6592:30;-1:-1:-1;;;6638:18:1;;;6631:42;6690:18;;6782:79:0::1;6378:336:1::0;6782:79:0::1;6872:13;:27:::0;;;6915:24:::1;::::0;713:25:1;;;6915:24:0::1;::::0;701:2:1;686:18;6915:24:0::1;;;;;;;;6705:242:::0;:::o;6242:87::-;6281:13;6314:7;6307:14;;;;;:::i;8764:622::-;8828:10;8849:1;8819:20;;;:8;:20;;;;;:27;:31;8815:88;;8867:24;8880:10;8867:12;:24::i;:::-;8946:13;8962:26;4887:42;8981:6;8962:11;:26::i;:::-;9058:11;:23;;;;;;9105:10;9058:11;9096:20;;;:8;:20;;;;;:39;;;;;;;9202:8;;9184:15;:26;-1:-1:-1;9150:31:0;;;;:60;;;;8946:42;;-1:-1:-1;9269:51:0;;:22;:51::i;:::-;9241:10;9232:20;;;;:8;:20;;;;;;:34;;:88;;;;9338:40;;9241:10;;9232:20;9338:40;;;;9371:6;713:25:1;;701:2;686:18;;567:177;9338:40:0;;;;;;;;8804:582;8764:622;:::o;1211:132::-;818:5;;-1:-1:-1;;;;;818:5:0;804:10;:19;796:51;;;;-1:-1:-1;;;796:51:0;;;;;;;:::i;:::-;1292:5:::1;::::0;;1283:25:::1;::::0;-1:-1:-1;;;;;1283:25:0;;::::1;::::0;1292:5;::::1;::::0;1283:25:::1;::::0;::::1;1319:5;:16:::0;;-1:-1:-1;;;;;;1319:16:0::1;-1:-1:-1::0;;;;;1319:16:0;;;::::1;::::0;;;::::1;::::0;;1211:132::o;6456:241::-;818:5;;-1:-1:-1;;;;;818:5:0;804:10;:19;796:51;;;;-1:-1:-1;;;796:51:0;;;;;;;:::i;:::-;6565:5:::1;6550:11;:20;;6528:88;;;::::0;-1:-1:-1;;;6528:88:0;;6921:2:1;6528:88:0::1;::::0;::::1;6903:21:1::0;6960:2;6940:18;;;6933:30;-1:-1:-1;;;6979:18:1;;;6972:48;7037:18;;6528:88:0::1;6719:342:1::0;6528:88:0::1;6627:8;:22:::0;;;6665:24:::1;::::0;713:25:1;;;6665:24:0::1;::::0;701:2:1;686:18;6665:24:0::1;567:177:1::0;10873:188:0;-1:-1:-1;;;;;10960:14:0;;10933:7;10960:14;;;:8;:14;;;;;:25;;;10988:15;-1:-1:-1;10960:93:0;;-1:-1:-1;;;;;11010:14:0;;;;;;:8;:14;;;;;:25;;;:43;;11038:15;;11010:43;:::i;:::-;10960:93;;;11006:1;10960:93;10953:100;10873:188;-1:-1:-1;;10873:188:0:o;6955:268::-;818:5;;-1:-1:-1;;;;;818:5:0;804:10;:19;796:51;;;;-1:-1:-1;;;796:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7057:29:0;::::1;7035:91;;;::::0;-1:-1:-1;;;7035:91:0;;7268:2:1;7035:91:0::1;::::0;::::1;7250:21:1::0;7307:2;7287:18;;;7280:30;-1:-1:-1;;;7326:18:1;;;7319:42;7378:18;;7035:91:0::1;7066:336:1::0;7035:91:0::1;7137:12;:30:::0;;-1:-1:-1;;;;;;7137:30:0::1;-1:-1:-1::0;;;;;7137:30:0;::::1;::::0;;::::1;::::0;;;7183:32:::1;::::0;1510:51:1;;;7183:32:0::1;::::0;1498:2:1;1483:18;7183:32:0::1;1364:203:1::0;9807:636:0;-1:-1:-1;;;;;9907:14:0;;;;;;:8;:14;;;;;:21;:26;;9903:65;;9807:636;:::o;9903:65::-;10014:14;10031:20;10046:4;10031:14;:20::i;:::-;10014:37;;10109:6;10119:1;10109:11;10105:50;;10137:7;9807:636;:::o;10105:50::-;-1:-1:-1;;;;;10255:14:0;;;;;;:8;:14;;;;;:21;10232:45;;:22;:45::i;:::-;-1:-1:-1;;;;;10201:14:0;;;;;;:8;:14;;;;;;;:28;;:76;;;;10348:37;;-1:-1:-1;;;10348:37:0;;;;;3985:51:1;;;;4052:18;;;4045:34;;;4992:42:0;;10348:23;;3958:18:1;;10348:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10326:109;;;;-1:-1:-1;;;10326:109:0;;7609:2:1;10326:109:0;;;7591:21:1;7648:2;7628:18;;;7621:30;-1:-1:-1;;;7667:18:1;;;7660:52;7729:18;;10326:109:0;7407:346:1;10326:109:0;9852:591;9807:636;:::o;11512:146::-;11582:7;5431:6;11619:17;;11611:5;:25;;;;:::i;:::-;11609:41;;;;:::i;10451:414::-;10556:39;;-1:-1:-1;;;10556:39:0;;10589:4;10556:39;;;1510:51:1;10522:7:0;;;;-1:-1:-1;;;;;10556:24:0;;;;;1483:18:1;;10556:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10606:62;;-1:-1:-1;;;10606:62:0;;10634:10;10606:62;;;7998:34:1;10654:4:0;8048:18:1;;;8041:43;8100:18;;;8093:34;;;10542:53:0;;-1:-1:-1;;;;;;10606:27:0;;;;;7933:18:1;;10606:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10692:39:0;;-1:-1:-1;;;10692:39:0;;10725:4;10692:39;;;1510:51:1;10679:10:0;;-1:-1:-1;;;;;10692:24:0;;;;;1483:18:1;;10692:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10679:52;;10772:6;10764:5;:14;10742:83;;;;-1:-1:-1;;;10742:83:0;;8340:2:1;10742:83:0;;;8322:21:1;8379:2;8359:18;;;8352:30;-1:-1:-1;;;8398:18:1;;;8391:49;8457:18;;10742:83:0;8138:343:1;10742:83:0;10843:14;10851:6;10843:5;:14;:::i;:::-;10836:21;10451:414;-1:-1:-1;;;;;10451:414:0:o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;749:286::-;808:6;861:2;849:9;840:7;836:23;832:32;829:52;;;877:1;874;867:12;829:52;903:23;;-1:-1:-1;;;;;955:31:1;;945:42;;935:70;;1001:1;998;991:12;935:70;1024:5;749:286;-1:-1:-1;;;749:286:1:o;1572:180::-;1631:6;1684:2;1672:9;1663:7;1659:23;1655:32;1652:52;;;1700:1;1697;1690:12;1652:52;-1:-1:-1;1723:23:1;;1572:180;-1:-1:-1;1572:180:1:o;1946:380::-;2025:1;2021:12;;;;2068;;;2089:61;;2143:4;2135:6;2131:17;2121:27;;2089:61;2196:2;2188:6;2185:14;2165:18;2162:38;2159:161;;2242:10;2237:3;2233:20;2230:1;2223:31;2277:4;2274:1;2267:15;2305:4;2302:1;2295:15;2159:161;;1946:380;;;:::o;3019:127::-;3080:10;3075:3;3071:20;3068:1;3061:31;3111:4;3108:1;3101:15;3135:4;3132:1;3125:15;3151:128;3218:9;;;3239:11;;;3236:37;;;3253:18;;:::i;3284:168::-;3357:9;;;3388;;3405:15;;;3399:22;;3385:37;3375:71;;3426:18;;:::i;3457:127::-;3518:10;3513:3;3509:20;3506:1;3499:31;3549:4;3546:1;3539:15;3573:4;3570:1;3563:15;3589:217;3629:1;3655;3645:132;;3699:10;3694:3;3690:20;3687:1;3680:31;3734:4;3731:1;3724:15;3762:4;3759:1;3752:15;3645:132;-1:-1:-1;3791:9:1;;3589:217::o;4090:277::-;4157:6;4210:2;4198:9;4189:7;4185:23;4181:32;4178:52;;;4226:1;4223;4216:12;4178:52;4258:9;4252:16;4311:5;4304:13;4297:21;4290:5;4287:32;4277:60;;4333:1;4330;4323:12;5130:343;5332:2;5314:21;;;5371:2;5351:18;;;5344:30;-1:-1:-1;;;5405:2:1;5390:18;;5383:49;5464:2;5449:18;;5130:343::o;5835:184::-;5905:6;5958:2;5946:9;5937:7;5933:23;5929:32;5926:52;;;5974:1;5971;5964:12;5926:52;-1:-1:-1;5997:16:1;;5835:184;-1:-1:-1;5835:184:1:o

Swarm Source

ipfs://b2aa5c2b579fe94eb46586fb2c6fe97fea6641b5e7845a63d69267dbf133bfc5

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.