Contract 0xE1C8f3d529BEa8E3fA1FAC5B416335a2f998EE1C 12

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x2f6e08a62c7cb0a6ddb2454be110134152358606a6564cd126883f2e7caebf3dApprove377588132022-05-07 12:28:5712 days 3 hrs ago0x1cf126f60040dae10b8108669900bec1e7455044 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.004163968546
0x035c000549a223b204bb9b7de54baf31e6f3c3117d78e71008e79bca7c70b167Approve361431462022-04-15 19:14:0533 days 20 hrs ago0x1ae74f5f0d55d82ab60b381cacec1445eaa1b26a IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.004903185
0x4688dcf2514c08cbf5b12e09105aec99ba3a83c9b10355a21aa20d247dab9803Approve360526182022-04-14 17:04:3534 days 23 hrs ago0x0454efd3a135c9db847d6dcfb3999a4dbe7428f4 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.0142746317
0x42239944a30ff9c207d6f7c214fb141a91ae6d62bb0e0d118212a1c2203ff3a6Transfer358933532022-04-12 17:20:3836 days 22 hrs ago0xf1e43ede41881fdfb7868ab506236dbd6ec63329 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.008401857259
0x51a68ae4454bd04a1ce9ee57153dab75503d146b58882e55720164470e4c1eddApprove357489722022-04-10 22:42:0838 days 17 hrs ago0x3376e7f9510b566f8cc6ab9e4f4588d941a64685 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.009560297033
0xc1177552edff40316a26d21bf6773e48618950623c495919fc9b99329f37058eApprove356193792022-04-09 9:27:4140 days 6 hrs ago0x5638f545c240e52920f49c035ba6e85846d229d6 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.008424729187
0xf2c4e0978a3581ddb5bee6d1758c61091e76c4f0ee9957c03a6b12917dac0bcdApprove355224712022-04-08 6:04:4141 days 10 hrs ago0x0b15d64eaf9c5fe6709476b5b2e87306129a1b44 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.008704320114
0x16f6a55e0366777b2fb0840802f1df1e20578547520ae628ab25bf7500aaeffdApprove353881472022-04-06 15:25:5043 days 45 mins ago0x44af194dc092f7a6b8156ae32068b0c7d2321404 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.02365842546
0x66ea4fa5b54635ce16d009e05a16c0c7eaa38230614d2c26ffb5598b75ae55dbApprove353672852022-04-06 9:08:5243 days 7 hrs ago0x44af194dc092f7a6b8156ae32068b0c7d2321404 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.029461606626
0xe7a6fa8e258cfcc9e89856cf10f9f4cd1dc335a65962ae896147920f54f06546Approve352770552022-04-05 6:48:0744 days 9 hrs ago0x44af194dc092f7a6b8156ae32068b0c7d2321404 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.009920397232
0xd3f35e6f9bc711b3d1010724ba0d824e976e22051adbc3855b58cf02ace30806Approve352510012022-04-04 23:30:5044 days 16 hrs ago0x44af194dc092f7a6b8156ae32068b0c7d2321404 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.006625977289
0xa105e61ae0517401b1eb31401f3f872dc279e76a5c89468cb7a57e949abd719eApprove352501292022-04-04 23:17:2244 days 16 hrs ago0x44af194dc092f7a6b8156ae32068b0c7d2321404 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.007465998851
0x748070fe51bc4e17d093edbaaafdc0d6fb9dd4c2e7993495d6ff41d38a776899Approve352428922022-04-04 21:20:3744 days 18 hrs ago0x44af194dc092f7a6b8156ae32068b0c7d2321404 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.007101452435
0x108320807d06e66a3ebc79171b19ab8affd84e7e4fbcd33ffa65aba2dea7b3d0Approve343396652022-03-25 6:10:0855 days 10 hrs ago0x1fb4820c368efa3282e696ca9aaed9c3cade2340 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.007961492057
0x0f28e147eac1ad03d2d76b38e86f286dfe03171b1873a7812d4be9ce72f05379Approve340128732022-03-21 11:05:1259 days 5 hrs ago0x39ca365d4ff480a09f03b6ef90f757cca9956a56 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.005785110535
0x700f35b19428960c46447f7c501b7a68223e24c1d7d6060270b532ce3d3dda27Approve337935712022-03-18 23:54:0961 days 16 hrs ago0xcde1e03c2aa571ea02488698029b447f02e192d5 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.008472445528
0x342383c8015ff1482cfb402263a989b9f2afe07ac013aa055c2448e2679e6c81Approve331200312022-03-11 7:46:4869 days 8 hrs ago0x1e58937f946de349f38e63f4b944c78cb20dcd33 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.02792095776
0xafda8047f6798c74d7099785878d816042ce700b2777b25f352bfafd14519471Approve323042912022-03-01 21:04:3878 days 19 hrs ago0x725c793f53d1022ca7e3da103ab2bf932f6206cb IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.02162994071
0x5c4319878442e7bac6ba7865a97f461911561e91b539beaeae35e49633d08eb5Approve318169752022-02-23 20:50:0684 days 19 hrs ago0xacf87623ce89e5b0976d137406d77b271f31c422 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.043130141472
0x18d57aef17b1f3b5f7d079d559d92ed8b9065a4c6dd107e63beaf7bfa2ee3bc8Approve314933742022-02-20 6:48:5588 days 9 hrs ago0x58bbd2652b5085d4321bf874f10516fda2b2fad6 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.017772979
0xa1c1d57b2c92eb070136f58b732a5e2d120d32652142af533519afa3585286e3Approve311539892022-02-16 16:55:4891 days 23 hrs ago0x8f5e9b62897e34ff7b67f8ceebe00d783077e264 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.012100156252
0x25ae804063775785fd2a264a1173d0ea3a8815edb33d09cc384f8fb845a672bcApprove311169252022-02-16 7:33:2192 days 8 hrs ago0x6c977e71d82baf2ab07aa1c8009fed0497c75bd6 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.008862415394
0x90066db7a5b4b58b184aff9e31698fdcf220a2fc4af68567d30876e97aa61474Approve310091622022-02-15 4:49:2293 days 11 hrs ago0xb46128ea69e3aa2db07640a78bfb749132ab557e IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.007184974816
0xa5694b4dfaf3f930282ea59beca685458d3e9633db8204c5851d79660859b589Approve310082882022-02-15 4:37:0793 days 11 hrs ago0xfce098c4cffc50ae339abf95c5375735de834c50 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.007435457771
0x87c283ac28e8c2b5195b3935c5a22d2d90b409e46ade46c4410a798c5c6d116dApprove309756612022-02-14 20:56:5293 days 19 hrs ago0xa989af54f1ba33c8cac7af220d14ea05aedb4cc7 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.017096902617
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x323c7ab63427819ddac828d160841b0dc9e5318412304c22b6d7c672bde45ff068072992021-05-18 10:14:57366 days 5 hrs ago 0xc20752024c3288efafda4d93f5dbd0df25eb0631  Contract Creation0 FTM
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Elk

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at FtmScan.com on 2021-05-28
*/

// Sources flattened with hardhat v2.1.1 https://hardhat.org

// File contracts/SafeMath.sol

// SPDX-License-Identifier: MIT

pragma solidity ^0.5.16;

// From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/Math.sol
// Subject to the MIT license.

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

        return c;
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting with custom message on overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, errorMessage);

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

        uint256 c = a * b;
        require(c / a == b, errorMessage);

        return c;
    }

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

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

        return c;
    }

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

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


// File contracts/Elk.sol

// SPDX-License-Identifier: MIT

pragma solidity ^0.5.16;
pragma experimental ABIEncoderV2;

contract Elk {
    /// @notice EIP-20 token name for this token
    string public constant name = "Elk";

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

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

    /// @notice Total number of tokens in circulation
    uint public totalSupply = 4_242_424e18; // 4.2 million ELK

    /// @notice Allowance amounts on behalf of others
    mapping (address => mapping (address => uint96)) internal allowances;

    /// @notice Official record of token balances for each account
    mapping (address => uint96) internal balances;

    /// @notice A record of each accounts delegate
    mapping (address => address) public delegates;

    /// @notice A checkpoint for marking number of votes from a given block
    struct Checkpoint {
        uint32 fromBlock;
        uint96 votes;
    }

    /// @notice A record of votes checkpoints for each account, by index
    mapping (address => mapping (uint32 => Checkpoint)) public checkpoints;

    /// @notice The number of checkpoints for each account
    mapping (address => uint32) public numCheckpoints;

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

    /// @notice The EIP-712 typehash for the delegation struct used by the contract
    bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)");

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

    /// @notice A record of states for signing / validating signatures
    mapping (address => uint) public nonces;

    /// @notice An event thats emitted when an account changes its delegate
    event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);

    /// @notice An event thats emitted when a delegate account's vote balance changes
    event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance);

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

    /// @notice The standard EIP-20 approval event
    event Approval(address indexed owner, address indexed spender, uint256 amount);

    /**
     * @notice Construct a new ELK token
     * @param account The initial account to grant all the tokens
     */
    constructor(address account) public {
        balances[account] = uint96(totalSupply);
        emit Transfer(address(0), account, totalSupply);
    }

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

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

        allowances[msg.sender][spender] = amount;

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

    /**
     * @notice Triggers an approval from owner to spends
     * @param owner The address to approve from
     * @param spender The address to be approved
     * @param rawAmount The number of tokens that are approved (2^256-1 means infinite)
     * @param deadline The time at which to expire the signature
     * @param v The recovery byte of the signature
     * @param r Half of the ECDSA signature pair
     * @param s Half of the ECDSA signature pair
     */
    function permit(address owner, address spender, uint rawAmount, uint deadline, uint8 v, bytes32 r, bytes32 s) external {
        uint96 amount;
        if (rawAmount == uint(-1)) {
            amount = uint96(-1);
        } else {
            amount = safe96(rawAmount, "ELK::permit: amount exceeds 96 bits");
        }

        bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this)));
        bytes32 structHash = keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, rawAmount, nonces[owner]++, deadline));
        bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "ELK::permit: invalid signature");
        require(signatory == owner, "ELK::permit: unauthorized");
        require(now <= deadline, "ELK::permit: signature expired");

        allowances[owner][spender] = amount;

        emit Approval(owner, spender, amount);
    }

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

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

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

        if (spender != src && spenderAllowance != uint96(-1)) {
            uint96 newAllowance = sub96(spenderAllowance, amount, "ELK::transferFrom: transfer amount exceeds spender allowance");
            allowances[src][spender] = newAllowance;

            emit Approval(src, spender, newAllowance);
        }

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

    /**
     * @notice Delegate votes from `msg.sender` to `delegatee`
     * @param delegatee The address to delegate votes to
     */
    function delegate(address delegatee) public {
        return _delegate(msg.sender, delegatee);
    }

    /**
     * @notice Delegates votes from signatory to `delegatee`
     * @param delegatee The address to delegate votes to
     * @param nonce The contract state required to match the signature
     * @param expiry The time at which to expire the signature
     * @param v The recovery byte of the signature
     * @param r Half of the ECDSA signature pair
     * @param s Half of the ECDSA signature pair
     */
    function delegateBySig(address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) public {
        bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this)));
        bytes32 structHash = keccak256(abi.encode(DELEGATION_TYPEHASH, delegatee, nonce, expiry));
        bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "ELK::delegateBySig: invalid signature");
        require(nonce == nonces[signatory]++, "ELK::delegateBySig: invalid nonce");
        require(now <= expiry, "ELK::delegateBySig: signature expired");
        return _delegate(signatory, delegatee);
    }

    /**
     * @notice Gets the current votes balance for `account`
     * @param account The address to get votes balance
     * @return The number of current votes for `account`
     */
    function getCurrentVotes(address account) external view returns (uint96) {
        uint32 nCheckpoints = numCheckpoints[account];
        return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0;
    }

    /**
     * @notice Determine the prior number of votes for an account as of a block number
     * @dev Block number must be a finalized block or else this function will revert to prevent misinformation.
     * @param account The address of the account to check
     * @param blockNumber The block number to get the vote balance at
     * @return The number of votes the account had as of the given block
     */
    function getPriorVotes(address account, uint blockNumber) public view returns (uint96) {
        require(blockNumber < block.number, "ELK::getPriorVotes: not yet determined");

        uint32 nCheckpoints = numCheckpoints[account];
        if (nCheckpoints == 0) {
            return 0;
        }

        // First check most recent balance
        if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) {
            return checkpoints[account][nCheckpoints - 1].votes;
        }

        // Next check implicit zero balance
        if (checkpoints[account][0].fromBlock > blockNumber) {
            return 0;
        }

        uint32 lower = 0;
        uint32 upper = nCheckpoints - 1;
        while (upper > lower) {
            uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow
            Checkpoint memory cp = checkpoints[account][center];
            if (cp.fromBlock == blockNumber) {
                return cp.votes;
            } else if (cp.fromBlock < blockNumber) {
                lower = center;
            } else {
                upper = center - 1;
            }
        }
        return checkpoints[account][lower].votes;
    }

    function _delegate(address delegator, address delegatee) internal {
        address currentDelegate = delegates[delegator];
        uint96 delegatorBalance = balances[delegator];
        delegates[delegator] = delegatee;

        emit DelegateChanged(delegator, currentDelegate, delegatee);

        _moveDelegates(currentDelegate, delegatee, delegatorBalance);
    }

    function _transferTokens(address src, address dst, uint96 amount) internal {
        require(src != address(0), "ELK::_transferTokens: cannot transfer from the zero address");
        require(dst != address(0), "ELK::_transferTokens: cannot transfer to the zero address");

        balances[src] = sub96(balances[src], amount, "ELK::_transferTokens: transfer amount exceeds balance");
        balances[dst] = add96(balances[dst], amount, "ELK::_transferTokens: transfer amount overflows");
        emit Transfer(src, dst, amount);

        _moveDelegates(delegates[src], delegates[dst], amount);
    }

    function _moveDelegates(address srcRep, address dstRep, uint96 amount) internal {
        if (srcRep != dstRep && amount > 0) {
            if (srcRep != address(0)) {
                uint32 srcRepNum = numCheckpoints[srcRep];
                uint96 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0;
                uint96 srcRepNew = sub96(srcRepOld, amount, "ELK::_moveVotes: vote amount underflows");
                _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew);
            }

            if (dstRep != address(0)) {
                uint32 dstRepNum = numCheckpoints[dstRep];
                uint96 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0;
                uint96 dstRepNew = add96(dstRepOld, amount, "ELK::_moveVotes: vote amount overflows");
                _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew);
            }
        }
    }

    function _writeCheckpoint(address delegatee, uint32 nCheckpoints, uint96 oldVotes, uint96 newVotes) internal {
      uint32 blockNumber = safe32(block.number, "ELK::_writeCheckpoint: block number exceeds 32 bits");

      if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) {
          checkpoints[delegatee][nCheckpoints - 1].votes = newVotes;
      } else {
          checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes);
          numCheckpoints[delegatee] = nCheckpoints + 1;
      }

      emit DelegateVotesChanged(delegatee, oldVotes, newVotes);
    }

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

    function safe96(uint n, string memory errorMessage) internal pure returns (uint96) {
        require(n < 2**96, errorMessage);
        return uint96(n);
    }

    function add96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) {
        uint96 c = a + b;
        require(c >= a, errorMessage);
        return c;
    }

    function sub96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) {
        require(b <= a, errorMessage);
        return a - b;
    }

    function getChainId() internal pure returns (uint) {
        uint256 chainId;
        assembly { chainId := chainid() }
        return chainId;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"account","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint96","name":"votes","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040526a03825e4410125034e000006000553480156200002057600080fd5b50604051620022a8380380620022a88339810160408190526200004391620000d3565b600080546001600160a01b0383168083526002602052604080842080546001600160601b0319166001600160601b0390941693909317909255825491519092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620000b191906200010d565b60405180910390a3506200014c565b8051620000cd8162000132565b92915050565b600060208284031215620000e657600080fd5b6000620000f48484620000c0565b949350505050565b62000107816200012f565b82525050565b60208101620000cd8284620000fc565b60006001600160a01b038216620000cd565b90565b6200013d816200011d565b81146200014957600080fd5b50565b61214c806200015c6000396000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063b4b5ea571161008c578063dd62ed3e11610066578063dd62ed3e146102f6578063e7a324dc14610309578063f1127ed81461031157610177565b8063b4b5ea57146102bd578063c3cda520146102d0578063d505accf146102e357610177565b80637ecebe00116100bd5780637ecebe001461028f57806395d89b41146102a2578063a9059cbb146102aa57610177565b806370a082311461025c578063782d6fe11461026f57610177565b806330adf81f1161012f578063587cde1e11610114578063587cde1e146102075780635c19a95c146102275780636fcfff451461023c57610177565b806330adf81f146101ea578063313ce567146101f257610177565b806318160ddd1161016057806318160ddd146101ba57806320606b70146101cf57806323b872dd146101d757610177565b806306fdde031461017c578063095ea7b31461019a575b600080fd5b610184610332565b6040516101919190611db2565b60405180910390f35b6101ad6101a8366004611652565b610351565b6040516101919190611cae565b6101c2610415565b6040516101919190611cbc565b6101c261041b565b6101ad6101e5366004611569565b610432565b6101c2610580565b6101fa61058c565b6040516101919190611e7c565b61021a610215366004611509565b610591565b6040516101919190611ca0565b61023a610235366004611509565b6105ac565b005b61024f61024a366004611509565b6105b9565b6040516101919190611e53565b6101c261026a366004611509565b6105d1565b61028261027d366004611652565b6105f5565b6040516101919190611e98565b6101c261029d366004611509565b61080f565b610184610821565b6101ad6102b8366004611652565b61085a565b6102826102cb366004611509565b610896565b61023a6102de366004611682565b610907565b61023a6102f13660046115b6565b610aec565b6101c261030436600461152f565b610dd3565b6101c2610e07565b61032461031f366004611709565b610e13565b604051610191929190611e61565b60405180604001604052806003815260200162456c6b60e81b81525081565b600080600019831415610367575060001961038c565b6103898360405180606001604052806024815260200161206660249139610e49565b90505b3360008181526001602090815260408083206001600160a01b03891680855292529182902080546bffffffffffffffffffffffff19166001600160601b03861617905590519091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610401908590611e8a565b60405180910390a360019150505b92915050565b60005481565b60405161042790611c8a565b604051809103902081565b6001600160a01b03831660009081526001602090815260408083203380855290835281842054825160608101909352602480845291936001600160601b0390911692859261048a928892919061206690830139610e49565b9050866001600160a01b0316836001600160a01b0316141580156104b757506001600160601b0382811614155b156105665760006104e183836040518060600160405280603c8152602001611f7e603c9139610e81565b6001600160a01b038981166000818152600160209081526040808320948a16808452949091529081902080546bffffffffffffffffffffffff19166001600160601b0386161790555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061055c908590611e8a565b60405180910390a3505b610571878783610ec0565b600193505050505b9392505050565b60405161042790611c7f565b601281565b6003602052600090815260409020546001600160a01b031681565b6105b63382611075565b50565b60056020526000908152604090205463ffffffff1681565b6001600160a01b03166000908152600260205260409020546001600160601b031690565b600043821061061f5760405162461bcd60e51b815260040161061690611de3565b60405180910390fd5b6001600160a01b03831660009081526005602052604090205463ffffffff168061064d57600091505061040f565b6001600160a01b038416600090815260046020908152604080832063ffffffff6000198601811685529252909120541683106106ca576001600160a01b03841660009081526004602090815260408083206000199490940163ffffffff168352929052205464010000000090046001600160601b0316905061040f565b6001600160a01b038416600090815260046020908152604080832083805290915290205463ffffffff1683101561070557600091505061040f565b600060001982015b8163ffffffff168163ffffffff1611156107c957600282820363ffffffff160481036107376114c6565b506001600160a01b038716600090815260046020908152604080832063ffffffff8581168552908352928190208151808301909252549283168082526401000000009093046001600160601b031691810191909152908714156107a45760200151945061040f9350505050565b805163ffffffff168711156107bb578193506107c2565b6001820392505b505061070d565b506001600160a01b038516600090815260046020908152604080832063ffffffff909416835292905220546001600160601b036401000000009091041691505092915050565b60066020526000908152604090205481565b6040518060400160405280600381526020017f454c4b000000000000000000000000000000000000000000000000000000000081525081565b60008061087f8360405180606001604052806025815260200161204160259139610e49565b905061088c338583610ec0565b5060019392505050565b6001600160a01b03811660009081526005602052604081205463ffffffff16806108c1576000610579565b6001600160a01b0383166000908152600460209081526040808320600019850163ffffffff16845290915290205464010000000090046001600160601b03169392505050565b600060405161091590611c8a565b604080519182900382208282019091526003825262456c6b60e81b6020909201919091527f23f5c44ca2b306f4e83d6b0757f1e134ea5717fa5e929cb430b57243cf456c60610962611117565b306040516020016109769493929190611d62565b604051602081830303815290604052805190602001209050600060405161099c90611c95565b6040519081900381206109b7918a908a908a90602001611d24565b604051602081830303815290604052805190602001209050600082826040516020016109e4929190611c4e565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610a219493929190611d97565b6020604051602081039080840390855afa158015610a43573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610a765760405162461bcd60e51b815260040161061690611e13565b6001600160a01b03811660009081526006602052604090208054600181019091558914610ab55760405162461bcd60e51b815260040161061690611e33565b87421115610ad55760405162461bcd60e51b815260040161061690611e43565b610adf818b611075565b505050505b505050505050565b6000600019861415610b015750600019610b26565b610b238660405180606001604052806023815260200161201e60239139610e49565b90505b6000604051610b3490611c8a565b604080519182900382208282019091526003825262456c6b60e81b6020909201919091527f23f5c44ca2b306f4e83d6b0757f1e134ea5717fa5e929cb430b57243cf456c60610b81611117565b30604051602001610b959493929190611d62565b6040516020818303038152906040528051906020012090506000604051610bbb90611c7f565b604080519182900382206001600160a01b038d16600090815260066020908152929020805460018101909155610bfd9391928e928e928e9290918e9101611cca565b60405160208183030381529060405280519060200120905060008282604051602001610c2a929190611c4e565b604051602081830303815290604052805190602001209050600060018289898960405160008152602001604052604051610c679493929190611d97565b6020604051602081039080840390855afa158015610c89573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610cbc5760405162461bcd60e51b815260040161061690611e03565b8b6001600160a01b0316816001600160a01b031614610ced5760405162461bcd60e51b815260040161061690611dc3565b88421115610d0d5760405162461bcd60e51b815260040161061690611df3565b84600160008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160601b0302191690836001600160601b031602179055508a6001600160a01b03168c6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92587604051610dbd9190611e8a565b60405180910390a3505050505050505050505050565b6001600160a01b0391821660009081526001602090815260408083209390941682529190915220546001600160601b031690565b60405161042790611c95565b600460209081526000928352604080842090915290825290205463ffffffff81169064010000000090046001600160601b031682565b6000816c010000000000000000000000008410610e795760405162461bcd60e51b81526004016106169190611db2565b509192915050565b6000836001600160601b0316836001600160601b031611158290610eb85760405162461bcd60e51b81526004016106169190611db2565b505050900390565b6001600160a01b038316610ee65760405162461bcd60e51b815260040161061690611dd3565b6001600160a01b038216610f0c5760405162461bcd60e51b815260040161061690611e23565b6001600160a01b038316600090815260026020908152604091829020548251606081019093526035808452610f57936001600160601b039092169285929190611fe990830139610e81565b6001600160a01b03848116600090815260026020908152604080832080546bffffffffffffffffffffffff19166001600160601b0396871617905592861682529082902054825160608101909352602f808452610fc49491909116928592909190611fba9083013961111b565b6001600160a01b038381166000818152600260205260409081902080546bffffffffffffffffffffffff19166001600160601b0395909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611036908590611e8a565b60405180910390a36001600160a01b0380841660009081526003602052604080822054858416835291205461107092918216911683611157565b505050565b6001600160a01b03808316600081815260036020818152604080842080546002845282862054949093528787167fffffffffffffffffffffffff000000000000000000000000000000000000000084168117909155905191909516946001600160601b039092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611111828483611157565b50505050565b4690565b6000838301826001600160601b03808716908316101561114e5760405162461bcd60e51b81526004016106169190611db2565b50949350505050565b816001600160a01b0316836001600160a01b03161415801561118257506000816001600160601b0316115b15611070576001600160a01b0383161561123b576001600160a01b03831660009081526005602052604081205463ffffffff1690816111c2576000611202565b6001600160a01b0385166000908152600460209081526040808320600019860163ffffffff16845290915290205464010000000090046001600160601b03165b90506000611229828560405180606001604052806027815260200161208a60279139610e81565b9050611237868484846112e7565b5050505b6001600160a01b03821615611070576001600160a01b03821660009081526005602052604081205463ffffffff1690816112765760006112b6565b6001600160a01b0384166000908152600460209081526040808320600019860163ffffffff16845290915290205464010000000090046001600160601b03165b905060006112dd82856040518060600160405280602681526020016120e46026913961111b565b9050610ae4858484845b600061130b436040518060600160405280603381526020016120b16033913961149e565b905060008463ffffffff1611801561135457506001600160a01b038516600090815260046020908152604080832063ffffffff6000198901811685529252909120548282169116145b156113b4576001600160a01b0385166000908152600460209081526040808320600019880163ffffffff168452909152902080546fffffffffffffffffffffffff0000000019166401000000006001600160601b03851602179055611454565b60408051808201825263ffffffff80841682526001600160601b0380861660208085019182526001600160a01b038b166000818152600483528781208c871682528352878120965187549451909516640100000000026fffffffffffffffffffffffff000000001995871663ffffffff19958616179590951694909417909555938252600590935292909220805460018801909316929091169190911790555b846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724848460405161148f929190611ea6565b60405180910390a25050505050565b6000816401000000008410610e795760405162461bcd60e51b81526004016106169190611db2565b604080518082019091526000808252602082015290565b803561040f81611f4e565b803561040f81611f62565b803561040f81611f6b565b803561040f81611f74565b60006020828403121561151b57600080fd5b600061152784846114dd565b949350505050565b6000806040838503121561154257600080fd5b600061154e85856114dd565b925050602061155f858286016114dd565b9150509250929050565b60008060006060848603121561157e57600080fd5b600061158a86866114dd565b935050602061159b868287016114dd565b92505060406115ac868287016114e8565b9150509250925092565b600080600080600080600060e0888a0312156115d157600080fd5b60006115dd8a8a6114dd565b97505060206115ee8a828b016114dd565b96505060406115ff8a828b016114e8565b95505060606116108a828b016114e8565b94505060806116218a828b016114fe565b93505060a06116328a828b016114e8565b92505060c06116438a828b016114e8565b91505092959891949750929550565b6000806040838503121561166557600080fd5b600061167185856114dd565b925050602061155f858286016114e8565b60008060008060008060c0878903121561169b57600080fd5b60006116a789896114dd565b96505060206116b889828a016114e8565b95505060406116c989828a016114e8565b94505060606116da89828a016114fe565b93505060806116eb89828a016114e8565b92505060a06116fc89828a016114e8565b9150509295509295509295565b6000806040838503121561171c57600080fd5b600061172885856114dd565b925050602061155f858286016114f3565b61174281611ed3565b82525050565b61174281611ede565b61174281611ee3565b61174261176682611ee3565b611ee3565b600061177682611ec1565b6117808185611ec5565b9350611790818560208601611f18565b61179981611f44565b9093019392505050565b60006117b0601983611ec5565b7f454c4b3a3a7065726d69743a20756e617574686f72697a656400000000000000815260200192915050565b60006117e9600283611ece565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b6000611822603b83611ec5565b7f454c4b3a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e736665722066726f6d20746865207a65726f20616464726573730000000000602082015260400192915050565b6000611881602683611ec5565b7f454c4b3a3a6765745072696f72566f7465733a206e6f7420796574206465746581527f726d696e65640000000000000000000000000000000000000000000000000000602082015260400192915050565b60006118e0601e83611ec5565b7f454c4b3a3a7065726d69743a207369676e617475726520657870697265640000815260200192915050565b6000611919605283611ece565b7f5065726d69742861646472657373206f776e65722c616464726573732073706581527f6e6465722c75696e743235362076616c75652c75696e74323536206e6f6e636560208201527f2c75696e7432353620646561646c696e65290000000000000000000000000000604082015260520192915050565b600061199e601e83611ec5565b7f454c4b3a3a7065726d69743a20696e76616c6964207369676e61747572650000815260200192915050565b60006119d7602583611ec5565b7f454c4b3a3a64656c656761746542795369673a20696e76616c6964207369676e81527f6174757265000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000611a36604383611ece565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b6000611abb603983611ec5565b7f454c4b3a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e7366657220746f20746865207a65726f206164647265737300000000000000602082015260400192915050565b6000611b1a602183611ec5565b7f454c4b3a3a64656c656761746542795369673a20696e76616c6964206e6f6e6381527f6500000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000611b79602583611ec5565b7f454c4b3a3a64656c656761746542795369673a207369676e617475726520657881527f7069726564000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000611bd8603a83611ece565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020820152603a0192915050565b61174281611ef2565b61174281611efb565b61174281611f0d565b61174281611f01565b6000611c59826117dc565b9150611c65828561175a565b602082019150611c75828461175a565b5060200192915050565b600061040f8261190c565b600061040f82611a29565b600061040f82611bcb565b6020810161040f8284611739565b6020810161040f8284611748565b6020810161040f8284611751565b60c08101611cd88289611751565b611ce56020830188611739565b611cf26040830187611739565b611cff6060830186611751565b611d0c6080830185611751565b611d1960a0830184611751565b979650505050505050565b60808101611d328287611751565b611d3f6020830186611739565b611d4c6040830185611751565b611d596060830184611751565b95945050505050565b60808101611d708287611751565b611d7d6020830186611751565b611d8a6040830185611751565b611d596060830184611739565b60808101611da58287611751565b611d3f6020830186611c33565b60208082528101610579818461176b565b6020808252810161040f816117a3565b6020808252810161040f81611815565b6020808252810161040f81611874565b6020808252810161040f816118d3565b6020808252810161040f81611991565b6020808252810161040f816119ca565b6020808252810161040f81611aae565b6020808252810161040f81611b0d565b6020808252810161040f81611b6c565b6020810161040f8284611c2a565b60408101611e6f8285611c2a565b6105796020830184611c45565b6020810161040f8284611c33565b6020810161040f8284611c3c565b6020810161040f8284611c45565b60408101611eb48285611c3c565b6105796020830184611c3c565b5190565b90815260200190565b919050565b600061040f82611ee6565b151590565b90565b6001600160a01b031690565b63ffffffff1690565b60ff1690565b6001600160601b031690565b600061040f82611f01565b60005b83811015611f33578181015183820152602001611f1b565b838111156111115750506000910152565b601f01601f191690565b611f5781611ed3565b81146105b657600080fd5b611f5781611ee3565b611f5781611ef2565b611f5781611efb56fe454c4b3a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365454c4b3a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773454c4b3a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365454c4b3a3a7065726d69743a20616d6f756e7420657863656564732039362062697473454c4b3a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473454c4b3a3a617070726f76653a20616d6f756e7420657863656564732039362062697473454c4b3a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773454c4b3a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473454c4b3a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f7773a365627a7a723158202e190004b516e0e505766c2711f223067444f31660b8c09006a532cb6ab629fe6c6578706572696d656e74616cf564736f6c63430005110040000000000000000000000000c20752024c3288efafda4d93f5dbd0df25eb0631

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

000000000000000000000000c20752024c3288efafda4d93f5dbd0df25eb0631

-----Decoded View---------------
Arg [0] : account (address): 0xc20752024c3288efafda4d93f5dbd0df25eb0631

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


Deployed ByteCode Sourcemap

6862:14568:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6862:14568:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6932:35;;;:::i;:::-;;;;;;;;;;;;;;;;10686:418;;;;;;;;;:::i;:::-;;;;;;;;7227:38;;;:::i;:::-;;;;;;;;8149:122;;;:::i;13766:670::-;;;;;;;;;:::i;8572:137::-;;;:::i;7128:35::-;;;:::i;:::-;;;;;;;;7599:45;;;;;;;;;:::i;:::-;;;;;;;;14584:102;;;;;;;;;:::i;:::-;;8027:49;;;;;;;;;:::i;:::-;;;;;;;;12847:108;;;;;;;;;:::i;16760:1217::-;;;;;;;;;:::i;:::-;;;;;;;;8790:39;;;;;;;;;:::i;7028:37::-;;;:::i;13219:237::-;;;;;;;;;:::i;16107:222::-;;;;;;;;;:::i;15120:786::-;;;;;;;;;:::i;11594:1050::-;;;;;;;;;:::i;10072:136::-;;;;;;;;;:::i;8365:117::-;;;:::i;7888:70::-;;;;;;;;;:::i;:::-;;;;;;;;;6932:35;;;;;;;;;;;;;;-1:-1:-1;;;6932:35:0;;;;:::o;10686:418::-;10754:4;10771:13;-1:-1:-1;;10799:9:0;:21;10795:172;;;-1:-1:-1;;;10795:172:0;;;10898:57;10905:9;10898:57;;;;;;;;;;;;;;;;;:6;:57::i;:::-;10889:66;;10795:172;10990:10;10979:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;10979:31:0;;;;;;;;;;;:40;;-1:-1:-1;;10979:40:0;-1:-1:-1;;;;;10979:40:0;;;;;11037:37;;10979:31;;10990:10;11037:37;;;;10979:40;;11037:37;;;;;;;;;;11092:4;11085:11;;;10686:418;;;;;:::o;7227:38::-;;;;:::o;8149:122::-;8191:80;;;;;;;;;;;;;;8149:122;:::o;13766:670::-;-1:-1:-1;;;;;13930:15:0;;13848:4;13930:15;;;:10;:15;;;;;;;;13883:10;13930:24;;;;;;;;;;13981:57;;;;;;;;;;;;13883:10;;-1:-1:-1;;;;;13930:24:0;;;;13848:4;;13981:57;;13988:9;;13981:57;;;;;;;:6;:57::i;:::-;13965:73;;14066:3;-1:-1:-1;;;;;14055:14:0;:7;-1:-1:-1;;;;;14055:14:0;;;:48;;;;-1:-1:-1;;;;;;14073:30:0;;;;;14055:48;14051:310;;;14120:19;14142:95;14148:16;14166:6;14142:95;;;;;;;;;;;;;;;;;:5;:95::i;:::-;-1:-1:-1;;;;;14252:15:0;;;;;;;:10;:15;;;;;;;;:24;;;;;;;;;;;;;;:39;;-1:-1:-1;;14252:39:0;-1:-1:-1;;;;;14252:39:0;;;;;14313:36;14252:39;;-1:-1:-1;14252:24:0;;14313:36;;;;14252:39;;14313:36;;;;;;;;;;14051:310;;14373:33;14389:3;14394;14399:6;14373:15;:33::i;:::-;14424:4;14417:11;;;;;13766:670;;;;;;:::o;8572:137::-;8614:95;;;;;;7128:35;7161:2;7128:35;:::o;7599:45::-;;;;;;;;;;;;-1:-1:-1;;;;;7599:45:0;;:::o;14584:102::-;14646:32;14656:10;14668:9;14646;:32::i;:::-;14584:102;:::o;8027:49::-;;;;;;;;;;;;;;;:::o;12847:108::-;-1:-1:-1;;;;;12930:17:0;12906:4;12930:17;;;:8;:17;;;;;;-1:-1:-1;;;;;12930:17:0;;12847:108::o;16760:1217::-;16839:6;16880:12;16866:11;:26;16858:77;;;;-1:-1:-1;;;16858:77:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16970:23:0;;16948:19;16970:23;;;:14;:23;;;;;;;;17008:17;17004:58;;17049:1;17042:8;;;;;17004:58;-1:-1:-1;;;;;17122:20:0;;;;;;:11;:20;;;;;;;;:38;-1:-1:-1;;17143:16:0;;17122:38;;;;;;;;;:48;;:63;-1:-1:-1;17118:147:0;;-1:-1:-1;;;;;17209:20:0;;;;;;:11;:20;;;;;;;;-1:-1:-1;;17230:16:0;;;;17209:38;;;;;;;;:44;;;;-1:-1:-1;;;;;17209:44:0;;-1:-1:-1;17202:51:0;;17118:147;-1:-1:-1;;;;;17326:20:0;;;;;;:11;:20;;;;;;;;:23;;;;;;;;:33;:23;:33;:47;-1:-1:-1;17322:88:0;;;17397:1;17390:8;;;;;17322:88;17422:12;-1:-1:-1;;17464:16:0;;17491:428;17506:5;17498:13;;:5;:13;;;17491:428;;;17570:1;17553:13;;;17552:19;;;17544:27;;17613:20;;:::i;:::-;-1:-1:-1;;;;;;17636:20:0;;;;;;:11;:20;;;;;;;;:28;;;;;;;;;;;;;17613:51;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17613:51:0;;;;;;;;;17683:27;;17679:229;;;17738:8;;;;-1:-1:-1;17731:15:0;;-1:-1:-1;;;;17731:15:0;17679:229;17772:12;;:26;;;-1:-1:-1;17768:140:0;;;17827:6;17819:14;;17768:140;;;17891:1;17882:6;:10;17874:18;;17768:140;17491:428;;;;;-1:-1:-1;;;;;;17936:20:0;;;;;;:11;:20;;;;;;;;:27;;;;;;;;;;:33;-1:-1:-1;;;;;17936:33:0;;;;;;-1:-1:-1;;16760:1217:0;;;;:::o;8790:39::-;;;;;;;;;;;;;:::o;7028:37::-;;;;;;;;;;;;;;;;;;;:::o;13219:237::-;13284:4;13301:13;13317:58;13324:9;13317:58;;;;;;;;;;;;;;;;;:6;:58::i;:::-;13301:74;;13386:40;13402:10;13414:3;13419:6;13386:15;:40::i;:::-;-1:-1:-1;13444:4:0;;13219:237;-1:-1:-1;;;13219:237:0:o;16107:222::-;-1:-1:-1;;;;;16213:23:0;;16172:6;16213:23;;;:14;:23;;;;;;;;16254:16;:67;;16320:1;16254:67;;;-1:-1:-1;;;;;16273:20:0;;;;;;:11;:20;;;;;;;;-1:-1:-1;;16294:16:0;;16273:38;;;;;;;;;:44;;;;-1:-1:-1;;;;;16273:44:0;16247:74;16107:222;-1:-1:-1;;;16107:222:0:o;15120:786::-;15236:23;8191:80;;;;;;;;;;;;;;;;15316:4;;;;;;;;;-1:-1:-1;;;15316:4:0;;;;;;;;15300:22;15324:12;:10;:12::i;:::-;15346:4;15272:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15272:80:0;;;15262:91;;;;;;15236:117;;15364:18;8411:71;;;;;;;;;;;;;;;15395:57;;15427:9;;15438:5;;15445:6;;15395:57;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15395:57:0;;;15385:68;;;;;;15364:89;;15464:14;15520:15;15537:10;15491:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15491:57:0;;;15481:68;;;;;;15464:85;;15560:17;15580:26;15590:6;15598:1;15601;15604;15580:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;15580:26:0;;-1:-1:-1;;15580:26:0;;;-1:-1:-1;;;;;;;15625:23:0;;15617:73;;;;-1:-1:-1;;;15617:73:0;;;;;;;;;-1:-1:-1;;;;;15718:17:0;;;;;;:6;:17;;;;;:19;;;;;;;;15709:28;;15701:74;;;;-1:-1:-1;;;15701:74:0;;;;;;;;;15801:6;15794:3;:13;;15786:63;;;;-1:-1:-1;;;15786:63:0;;;;;;;;;15867:31;15877:9;15888;15867;:31::i;:::-;15860:38;;;;15120:786;;;;;;;:::o;11594:1050::-;11724:13;-1:-1:-1;;11752:9:0;:21;11748:171;;;-1:-1:-1;;;11748:171:0;;;11851:56;11858:9;11851:56;;;;;;;;;;;;;;;;;:6;:56::i;:::-;11842:65;;11748:171;11931:23;8191:80;;;;;;;;;;;;;;;;12011:4;;;;;;;;;-1:-1:-1;;;12011:4:0;;;;;;;;11995:22;12019:12;:10;:12::i;:::-;12041:4;11967:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11967:80:0;;;11957:91;;;;;;11931:117;;12059:18;8614:95;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12145:13:0;;;;;;:6;:13;;;;;;;:15;;;;;;;;12090:81;;8614:95;;12118:5;;12125:7;;12134:9;;12145:15;;12162:8;;12090:81;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12090:81:0;;;12080:92;;;;;;12059:113;;12183:14;12239:15;12256:10;12210:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12210:57:0;;;12200:68;;;;;;12183:85;;12279:17;12299:26;12309:6;12317:1;12320;12323;12299:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;12299:26:0;;-1:-1:-1;;12299:26:0;;;-1:-1:-1;;;;;;;12344:23:0;;12336:66;;;;-1:-1:-1;;;12336:66:0;;;;;;;;;12434:5;-1:-1:-1;;;;;12421:18:0;:9;-1:-1:-1;;;;;12421:18:0;;12413:56;;;;-1:-1:-1;;;12413:56:0;;;;;;;;;12495:8;12488:3;:15;;12480:58;;;;-1:-1:-1;;;12480:58:0;;;;;;;;;12580:6;12551:10;:17;12562:5;-1:-1:-1;;;;;12551:17:0;-1:-1:-1;;;;;12551:17:0;;;;;;;;;;;;:26;12569:7;-1:-1:-1;;;;;12551:26:0;-1:-1:-1;;;;;12551:26:0;;;;;;;;;;;;;:35;;;;;-1:-1:-1;;;;;12551:35:0;;;;;-1:-1:-1;;;;;12551:35:0;;;;;;12620:7;-1:-1:-1;;;;;12604:32:0;12613:5;-1:-1:-1;;;;;12604:32:0;;12629:6;12604:32;;;;;;;;;;;;;;;11594:1050;;;;;;;;;;;;:::o;10072:136::-;-1:-1:-1;;;;;10172:19:0;;;10148:4;10172:19;;;:10;:19;;;;;;;;:28;;;;;;;;;;;;-1:-1:-1;;;;;10172:28:0;;10072:136::o;8365:117::-;8411:71;;;;;;7888:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7888:70:0;;:::o;20736:161::-;20811:6;20849:12;20842:5;20838:9;;20830:32;;;;-1:-1:-1;;;20830:32:0;;;;;;;;;;-1:-1:-1;20887:1:0;;20736:161;-1:-1:-1;;20736:161:0:o;21101:165::-;21187:6;21219:1;-1:-1:-1;;;;;21214:6:0;:1;-1:-1:-1;;;;;21214:6:0;;;21222:12;21206:29;;;;;-1:-1:-1;;;21206:29:0;;;;;;;;;;-1:-1:-1;;;21253:5:0;;;21101:165::o;18368:610::-;-1:-1:-1;;;;;18462:17:0;;18454:89;;;;-1:-1:-1;;;18454:89:0;;;;;;;;;-1:-1:-1;;;;;18562:17:0;;18554:87;;;;-1:-1:-1;;;18554:87:0;;;;;;;;;-1:-1:-1;;;;;18676:13:0;;;;;;:8;:13;;;;;;;;;;18670:85;;;;;;;;;;;;;;-1:-1:-1;;;;;18676:13:0;;;;18691:6;;18670:85;;;;;;;:5;:85::i;:::-;-1:-1:-1;;;;;18654:13:0;;;;;;;:8;:13;;;;;;;;:101;;-1:-1:-1;;18654:101:0;-1:-1:-1;;;;;18654:101:0;;;;;;18788:13;;;;;;;;;;18782:79;;;;;;;;;;;;;;18788:13;;;;;18803:6;;18782:79;;;;;;;;:5;:79::i;:::-;-1:-1:-1;;;;;18766:13:0;;;;;;;:8;:13;;;;;;;:95;;-1:-1:-1;;18766:95:0;-1:-1:-1;;;;;18766:95:0;;;;;;;;;;;18877:26;;;;;;;;;;18896:6;;18877:26;;;;;;;;;;-1:-1:-1;;;;;18931:14:0;;;;;;;:9;:14;;;;;;;18947;;;;;;;;18916:54;;18931:14;;;;18947;18963:6;18916:14;:54::i;:::-;18368:610;;;:::o;17985:375::-;-1:-1:-1;;;;;18088:20:0;;;18062:23;18088:20;;;:9;:20;;;;;;;;;;18145:8;:19;;;;;;18175:20;;;;:32;;;;;;;;;;;18225:54;;18088:20;;;;;-1:-1:-1;;;;;18145:19:0;;;;18175:32;;18088:20;;;18225:54;;18062:23;18225:54;18292:60;18307:15;18324:9;18335:16;18292:14;:60::i;:::-;17985:375;;;;:::o;21274:153::-;21384:9;21274:153;:::o;20905:188::-;20991:6;21021:5;;;21053:12;-1:-1:-1;;;;;21045:6:0;;;;;;;;21037:29;;;;-1:-1:-1;;;21037:29:0;;;;;;;;;;-1:-1:-1;21084:1:0;20905:188;-1:-1:-1;;;;20905:188:0:o;18986:937::-;19091:6;-1:-1:-1;;;;;19081:16:0;:6;-1:-1:-1;;;;;19081:16:0;;;:30;;;;;19110:1;19101:6;-1:-1:-1;;;;;19101:10:0;;19081:30;19077:839;;;-1:-1:-1;;;;;19132:20:0;;;19128:381;;-1:-1:-1;;;;;19192:22:0;;19173:16;19192:22;;;:14;:22;;;;;;;;;19252:13;:60;;19311:1;19252:60;;;-1:-1:-1;;;;;19268:19:0;;;;;;:11;:19;;;;;;;;-1:-1:-1;;19288:13:0;;19268:34;;;;;;;;;:40;;;;-1:-1:-1;;;;;19268:40:0;19252:60;19233:79;;19331:16;19350:67;19356:9;19367:6;19350:67;;;;;;;;;;;;;;;;;:5;:67::i;:::-;19331:86;;19436:57;19453:6;19461:9;19472;19483;19436:16;:57::i;:::-;19128:381;;;;-1:-1:-1;;;;;19529:20:0;;;19525:380;;-1:-1:-1;;;;;19589:22:0;;19570:16;19589:22;;;:14;:22;;;;;;;;;19649:13;:60;;19708:1;19649:60;;;-1:-1:-1;;;;;19665:19:0;;;;;;:11;:19;;;;;;;;-1:-1:-1;;19685:13:0;;19665:34;;;;;;;;;:40;;;;-1:-1:-1;;;;;19665:40:0;19649:60;19630:79;;19728:16;19747:66;19753:9;19764:6;19747:66;;;;;;;;;;;;;;;;;:5;:66::i;:::-;19728:85;;19832:57;19849:6;19857:9;19868;19879;19931:628;20049:18;20070:75;20077:12;20070:75;;;;;;;;;;;;;;;;;:6;:75::i;:::-;20049:96;;20175:1;20160:12;:16;;;:85;;;;-1:-1:-1;;;;;;20180:22:0;;;;;;:11;:22;;;;;;;;:65;-1:-1:-1;;20203:16:0;;20180:40;;;;;;;;;:50;:65;;;:50;;:65;20160:85;20156:329;;;-1:-1:-1;;;;;20260:22:0;;;;;;:11;:22;;;;;;;;-1:-1:-1;;20283:16:0;;20260:40;;;;;;;;;:57;;-1:-1:-1;;20260:57:0;;-1:-1:-1;;;;;20260:57:0;;;;;;20156:329;;;20385:33;;;;;;;;;;;;;;-1:-1:-1;;;;;20385:33:0;;;;;;;;;;-1:-1:-1;;;;;20346:22:0;;-1:-1:-1;20346:22:0;;;:11;:22;;;;;:36;;;;;;;;;;:72;;;;;;;;;;;-1:-1:-1;;20346:72:0;;;-1:-1:-1;;20346:72:0;;;;;;;;;;;;;;;20431:25;;;:14;:25;;;;;;;:44;;20346:72;20459:16;;20431:44;;;;;;;;;;;;;20156:329;20521:9;-1:-1:-1;;;;;20500:51:0;;20532:8;20542;20500:51;;;;;;;;;;;;;;;;19931:628;;;;;:::o;20567:161::-;20642:6;20680:12;20673:5;20669:9;;20661:32;;;;-1:-1:-1;;;20661:32:0;;;;;;;;;6862:14568;;;;;;;;;;-1:-1:-1;6862:14568:0;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:130;209:20;;234:33;209:20;234:33;;416:128;482:20;;507:32;482:20;507:32;;551:126;616:20;;641:31;616:20;641:31;;684:241;;788:2;776:9;767:7;763:23;759:32;756:2;;;804:1;801;794:12;756:2;839:1;856:53;901:7;881:9;856:53;;;846:63;750:175;-1:-1;;;;750:175;932:366;;;1053:2;1041:9;1032:7;1028:23;1024:32;1021:2;;;1069:1;1066;1059:12;1021:2;1104:1;1121:53;1166:7;1146:9;1121:53;;;1111:63;;1083:97;1211:2;1229:53;1274:7;1265:6;1254:9;1250:22;1229:53;;;1219:63;;1190:98;1015:283;;;;;;1305:491;;;;1443:2;1431:9;1422:7;1418:23;1414:32;1411:2;;;1459:1;1456;1449:12;1411:2;1494:1;1511:53;1556:7;1536:9;1511:53;;;1501:63;;1473:97;1601:2;1619:53;1664:7;1655:6;1644:9;1640:22;1619:53;;;1609:63;;1580:98;1709:2;1727:53;1772:7;1763:6;1752:9;1748:22;1727:53;;;1717:63;;1688:98;1405:391;;;;;;1803:991;;;;;;;;2007:3;1995:9;1986:7;1982:23;1978:33;1975:2;;;2024:1;2021;2014:12;1975:2;2059:1;2076:53;2121:7;2101:9;2076:53;;;2066:63;;2038:97;2166:2;2184:53;2229:7;2220:6;2209:9;2205:22;2184:53;;;2174:63;;2145:98;2274:2;2292:53;2337:7;2328:6;2317:9;2313:22;2292:53;;;2282:63;;2253:98;2382:2;2400:53;2445:7;2436:6;2425:9;2421:22;2400:53;;;2390:63;;2361:98;2490:3;2509:51;2552:7;2543:6;2532:9;2528:22;2509:51;;;2499:61;;2469:97;2597:3;2616:53;2661:7;2652:6;2641:9;2637:22;2616:53;;;2606:63;;2576:99;2706:3;2725:53;2770:7;2761:6;2750:9;2746:22;2725:53;;;2715:63;;2685:99;1969:825;;;;;;;;;;;2801:366;;;2922:2;2910:9;2901:7;2897:23;2893:32;2890:2;;;2938:1;2935;2928:12;2890:2;2973:1;2990:53;3035:7;3015:9;2990:53;;;2980:63;;2952:97;3080:2;3098:53;3143:7;3134:6;3123:9;3119:22;3098:53;;3174:865;;;;;;;3361:3;3349:9;3340:7;3336:23;3332:33;3329:2;;;3378:1;3375;3368:12;3329:2;3413:1;3430:53;3475:7;3455:9;3430:53;;;3420:63;;3392:97;3520:2;3538:53;3583:7;3574:6;3563:9;3559:22;3538:53;;;3528:63;;3499:98;3628:2;3646:53;3691:7;3682:6;3671:9;3667:22;3646:53;;;3636:63;;3607:98;3736:2;3754:51;3797:7;3788:6;3777:9;3773:22;3754:51;;;3744:61;;3715:96;3842:3;3861:53;3906:7;3897:6;3886:9;3882:22;3861:53;;;3851:63;;3821:99;3951:3;3970:53;4015:7;4006:6;3995:9;3991:22;3970:53;;;3960:63;;3930:99;3323:716;;;;;;;;;4046:364;;;4166:2;4154:9;4145:7;4141:23;4137:32;4134:2;;;4182:1;4179;4172:12;4134:2;4217:1;4234:53;4279:7;4259:9;4234:53;;;4224:63;;4196:97;4324:2;4342:52;4386:7;4377:6;4366:9;4362:22;4342:52;;4417:113;4500:24;4518:5;4500:24;;;4495:3;4488:37;4482:48;;;4537:104;4614:21;4629:5;4614:21;;4648:113;4731:24;4749:5;4731:24;;4768:152;4869:45;4889:24;4907:5;4889:24;;;4869:45;;4927:347;;5039:39;5072:5;5039:39;;;5090:71;5154:6;5149:3;5090:71;;;5083:78;;5166:52;5211:6;5206:3;5199:4;5192:5;5188:16;5166:52;;;5239:29;5261:6;5239:29;;;5230:39;;;;5019:255;-1:-1;;;5019:255;5628:325;;5788:67;5852:2;5847:3;5788:67;;;5888:27;5868:48;;5944:2;5935:12;;5774:179;-1:-1;;5774:179;5962:398;;6140:84;6222:1;6217:3;6140:84;;;6257:66;6237:87;;6352:1;6343:11;;6126:234;-1:-1;;6126:234;6369:396;;6529:67;6593:2;6588:3;6529:67;;;6629:34;6609:55;;6698:29;6693:2;6684:12;;6677:51;6756:2;6747:12;;6515:250;-1:-1;;6515:250;6774:375;;6934:67;6998:2;6993:3;6934:67;;;7034:34;7014:55;;7103:8;7098:2;7089:12;;7082:30;7140:2;7131:12;;6920:229;-1:-1;;6920:229;7158:330;;7318:67;7382:2;7377:3;7318:67;;;7418:32;7398:53;;7479:2;7470:12;;7304:184;-1:-1;;7304:184;7497:492;;7675:85;7757:2;7752:3;7675:85;;;7793:34;7773:55;;7862:34;7857:2;7848:12;;7841:56;7931:20;7926:2;7917:12;;7910:42;7980:2;7971:12;;7661:328;-1:-1;;7661:328;7998:330;;8158:67;8222:2;8217:3;8158:67;;;8258:32;8238:53;;8319:2;8310:12;;8144:184;-1:-1;;8144:184;8337:374;;8497:67;8561:2;8556:3;8497:67;;;8597:34;8577:55;;8666:7;8661:2;8652:12;;8645:29;8702:2;8693:12;;8483:228;-1:-1;;8483:228;8720:477;;8898:85;8980:2;8975:3;8898:85;;;9016:34;8996:55;;9085:34;9080:2;9071:12;;9064:56;9154:5;9149:2;9140:12;;9133:27;9188:2;9179:12;;8884:313;-1:-1;;8884:313;9206:394;;9366:67;9430:2;9425:3;9366:67;;;9466:34;9446:55;;9535:27;9530:2;9521:12;;9514:49;9591:2;9582:12;;9352:248;-1:-1;;9352:248;9609:370;;9769:67;9833:2;9828:3;9769:67;;;9869:34;9849:55;;9938:3;9933:2;9924:12;;9917:25;9970:2;9961:12;;9755:224;-1:-1;;9755:224;9988:374;;10148:67;10212:2;10207:3;10148:67;;;10248:34;10228:55;;10317:7;10312:2;10303:12;;10296:29;10353:2;10344:12;;10134:228;-1:-1;;10134:228;10371:431;;10549:85;10631:2;10626:3;10549:85;;;10667:34;10647:55;;10736:28;10731:2;10722:12;;10715:50;10793:2;10784:12;;10535:267;-1:-1;;10535:267;10930:110;11011:23;11028:5;11011:23;;11047:107;11126:22;11142:5;11126:22;;11161:124;11243:36;11273:5;11243:36;;11292:110;11373:23;11390:5;11373:23;;11409:650;;11664:148;11808:3;11664:148;;;11657:155;;11823:75;11894:3;11885:6;11823:75;;;11920:2;11915:3;11911:12;11904:19;;11934:75;12005:3;11996:6;11934:75;;;-1:-1;12031:2;12022:12;;11645:414;-1:-1;;11645:414;12066:372;;12265:148;12409:3;12265:148;;12445:372;;12644:148;12788:3;12644:148;;12824:372;;13023:148;13167:3;13023:148;;13203:213;13321:2;13306:18;;13335:71;13310:9;13379:6;13335:71;;13423:201;13535:2;13520:18;;13549:65;13524:9;13587:6;13549:65;;13631:213;13749:2;13734:18;;13763:71;13738:9;13807:6;13763:71;;13851:771;14109:3;14094:19;;14124:71;14098:9;14168:6;14124:71;;;14206:72;14274:2;14263:9;14259:18;14250:6;14206:72;;;14289;14357:2;14346:9;14342:18;14333:6;14289:72;;;14372;14440:2;14429:9;14425:18;14416:6;14372:72;;;14455:73;14523:3;14512:9;14508:19;14499:6;14455:73;;;14539;14607:3;14596:9;14592:19;14583:6;14539:73;;;14080:542;;;;;;;;;;14629:547;14831:3;14816:19;;14846:71;14820:9;14890:6;14846:71;;;14928:72;14996:2;14985:9;14981:18;14972:6;14928:72;;;15011;15079:2;15068:9;15064:18;15055:6;15011:72;;;15094;15162:2;15151:9;15147:18;15138:6;15094:72;;;14802:374;;;;;;;;15183:547;15385:3;15370:19;;15400:71;15374:9;15444:6;15400:71;;;15482:72;15550:2;15539:9;15535:18;15526:6;15482:72;;;15565;15633:2;15622:9;15618:18;15609:6;15565:72;;;15648;15716:2;15705:9;15701:18;15692:6;15648:72;;15737:539;15935:3;15920:19;;15950:71;15924:9;15994:6;15950:71;;;16032:68;16096:2;16085:9;16081:18;16072:6;16032:68;;16283:293;16417:2;16431:47;;;16402:18;;16492:74;16402:18;16552:6;16492:74;;16891:407;17082:2;17096:47;;;17067:18;;17157:131;17067:18;17157:131;;17305:407;17496:2;17510:47;;;17481:18;;17571:131;17481:18;17571:131;;17719:407;17910:2;17924:47;;;17895:18;;17985:131;17895:18;17985:131;;18133:407;18324:2;18338:47;;;18309:18;;18399:131;18309:18;18399:131;;18547:407;18738:2;18752:47;;;18723:18;;18813:131;18723:18;18813:131;;18961:407;19152:2;19166:47;;;19137:18;;19227:131;19137:18;19227:131;;19375:407;19566:2;19580:47;;;19551:18;;19641:131;19551:18;19641:131;;19789:407;19980:2;19994:47;;;19965:18;;20055:131;19965:18;20055:131;;20203:407;20394:2;20408:47;;;20379:18;;20469:131;20379:18;20469:131;;20837:209;20953:2;20938:18;;20967:69;20942:9;21009:6;20967:69;;21053:316;21195:2;21180:18;;21209:69;21184:9;21251:6;21209:69;;;21289:70;21355:2;21344:9;21340:18;21331:6;21289:70;;21376:205;21490:2;21475:18;;21504:67;21479:9;21544:6;21504:67;;21588:211;21705:2;21690:18;;21719:70;21694:9;21762:6;21719:70;;21806:209;21922:2;21907:18;;21936:69;21911:9;21978:6;21936:69;;22022:320;22166:2;22151:18;;22180:70;22155:9;22223:6;22180:70;;;22261:71;22328:2;22317:9;22313:18;22304:6;22261:71;;22349:118;22433:12;;22404:63;22604:163;22707:19;;;22756:4;22747:14;;22700:67;22776:145;22912:3;22890:31;-1:-1;22890:31;22929:91;;22991:24;23009:5;22991:24;;23027:85;23093:13;23086:21;;23069:43;23119:72;23181:5;23164:27;23198:121;-1:-1;;;;;23260:54;;23243:76;23405:88;23477:10;23466:22;;23449:44;23500:81;23571:4;23560:16;;23543:38;23588:104;-1:-1;;;;;23649:38;;23632:60;23699:106;;23777:23;23794:5;23777:23;;23813:268;23878:1;23885:101;23899:6;23896:1;23893:13;23885:101;;;23966:11;;;23960:18;23947:11;;;23940:39;23921:2;23914:10;23885:101;;;24001:6;23998:1;23995:13;23992:2;;;-1:-1;;24066:1;24048:16;;24041:27;23862:219;24170:97;24258:2;24238:14;-1:-1;;24234:28;;24218:49;24275:117;24344:24;24362:5;24344:24;;;24337:5;24334:35;24324:2;;24383:1;24380;24373:12;24399:117;24468:24;24486:5;24468:24;;24647:115;24715:23;24732:5;24715:23;;24769:113;24836:22;24852:5;24836:22;

Swarm Source

bzzr://2e190004b516e0e505766c2711f223067444f31660b8c09006a532cb6ab629fe
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.