Contract 0xeff826e3c63526a683deed47b7246b5713173853

 

Contract Overview

Balance:
0 BNB

BNB Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x13765b8c75be7bb0542f6513475c33a297229d808b8a5cf0d39d93ac3d8c49b1Approve119915752021-10-22 11:29:394 hrs 51 mins ago0x60d5416ece0ab1bf17cf23850c35eb2d7f1c94d9 IN  0xeff826e3c63526a683deed47b7246b57131738530 BNB0.000230155
0x332ffca17b457b4707cceb288302db55f1ac4e4279f62c7f1ed0abfc09c4535aTransfer119438362021-10-20 18:42:501 day 21 hrs ago0xe8a0ffd4de3851816ca244d5d9e9f03264806782 IN  0xeff826e3c63526a683deed47b7246b57131738530 BNB0.000275655
0x4d8ed228d5e87917b91f289e03d73aebd5b8ba0c64fb0e448797b9ea7d17a4b2Transfer115531762021-10-07 2:20:1815 days 14 hrs ago0x04b7cd74fcd38297c09f1d1aa4089d82c7bf160a IN  0xeff826e3c63526a683deed47b7246b57131738530 BNB0.000275715
0x6257e0dc8bd0d44a4c5b5ab895b694153979a53f07ae3754172ff55fe77df178Approve115340102021-10-06 10:20:5816 days 6 hrs ago0xa29fdaacc09140dec9a59cec94abb4407151c7d2 IN  0xeff826e3c63526a683deed47b7246b57131738530 BNB0.000231235
0x9150f32f17207c89170ba11cede0070083b71aa5064198607d628a883610760eApprove114445262021-10-03 7:39:0319 days 8 hrs ago0x8cc7bc33f5188b1fb683bedc4dbffa77b136833b IN  0xeff826e3c63526a683deed47b7246b57131738530 BNB0.000230035
0x3bfff7aba593595d84fd14e21931c1b63bc1bc518852489a5e3b7f8020467cfaApprove112909642021-09-27 22:17:2024 days 18 hrs ago0xce7c4463d5337b2fff9e7c9c0a740ce758217b69 IN  0xeff826e3c63526a683deed47b7246b57131738530 BNB0.00011
0x56b745015039dd5ef621718e80fb0e4f7b011e950bed3d4dafbc8fca20580076Approve112863712021-09-27 18:25:0724 days 21 hrs ago0xbaa123255eda1adece1f312ee275734d9e2ce9c6 IN  0xeff826e3c63526a683deed47b7246b57131738530 BNB0.000231235
0xfbd8dcbfa51e5684a7271b23c8b24cbe29b318c16d902f52d6829959f59f817aApprove111380852021-09-22 13:59:5930 days 2 hrs ago0xebae09b5e9b44bb306c26c34d5897e16fdbc6358 IN  0xeff826e3c63526a683deed47b7246b57131738530 BNB0.000231235
0x11122b4d88102733b253699309dd83cdee2353d577de6a3e99199c6140c07a40Approve111291322021-09-22 6:30:2730 days 9 hrs ago0xb24a6411a6ef6a42f5e19c99c7187126a5687ba0 IN  0xeff826e3c63526a683deed47b7246b57131738530 BNB0.000231235
0xd540402c72d3e9a57a7fb09e922e1e8770ef79e826503d94ebfc6b7cffc33533Approve110705492021-09-20 5:25:4232 days 10 hrs ago0xc1ac2887718b8b6c391fabc08605b145ab62e6e0 IN  0xeff826e3c63526a683deed47b7246b57131738530 BNB0.000231235
0xae144565b7c18cc69f62f0a5a3c1f2698ffd7c389f875f251d54d6696d391e97Approve110008172021-09-17 19:00:0134 days 21 hrs ago0x117b73c50d31eb2ceb5246515f9452bb32d755e4 IN  0xeff826e3c63526a683deed47b7246b57131738530 BNB0.000230155
0x78b436b0c2a0a80a2653739c32ea54ca0d3e4bbc1b373a0af5080eacfbf333f5Transfer109750782021-09-16 21:31:4135 days 18 hrs ago0x57bcf11d886131a5decb1d2d82aa4b6a1b852de8 IN  0xeff826e3c63526a683deed47b7246b57131738530 BNB0.000200955
0x895bf5c10207fbe40ea1714cbbc04800eb0fccc054274bd70b9eb9ec97f0ddc2Approve107606372021-09-09 9:49:1443 days 6 hrs ago0x58269949b195418d3436fff8db2d203506304fb8 IN  0xeff826e3c63526a683deed47b7246b57131738530 BNB0.000079315
0xb1c2a8384b8c3f5fa7764e03c8c2df261833ce5f21496db3489a4f5f5040d060Approve107176352021-09-07 21:37:2244 days 18 hrs ago0x57bcf11d886131a5decb1d2d82aa4b6a1b852de8 IN  0xeff826e3c63526a683deed47b7246b57131738530 BNB0.000230155
0xde45684846b0243d2bead0db6940716d8c6551a044ed0bb4d461443868f70a9fApprove107164182021-09-07 20:36:2944 days 19 hrs ago0xb74dbd4a120f97f7f400d1fd823a6be5877ec614 IN  0xeff826e3c63526a683deed47b7246b57131738530 BNB0.000231235
0x74ac0844a7e2b42ef47d87a9ae65055ca68fc9e4cb2cd589ede27bf4ffbe7b74Approve106586462021-09-05 19:49:3746 days 20 hrs ago0x7219a0bc4fc230c6073c82736a6f92775f1ced33 IN  0xeff826e3c63526a683deed47b7246b57131738530 BNB0.000231235
0xeb58fb536a0d97e3852e76f570321f9f606097917455e729431ca9a00f08c76bApprove106203112021-09-04 11:44:1448 days 4 hrs ago0xfee594be9d85067f208e67e4fcce3edbdf1233ce IN  0xeff826e3c63526a683deed47b7246b57131738530 BNB0.000230155
0xe35475bb0a2a6699629df936227000a845de30d741d3d07953aa62d750cf2a41Approve105715902021-09-02 18:45:5149 days 21 hrs ago0x11a33e0d0366162067955b400b30217e516736ed IN  0xeff826e3c63526a683deed47b7246b57131738530 BNB0.000231235
0xb74f24cce39fd8d5c36063c307c6c373c2324bfb1a07ed90bd47e099870cbf17Approve105329882021-09-01 10:11:5951 days 6 hrs ago0x9e1f73a607a686c779d57f49e8c7e1198b7280cd IN  0xeff826e3c63526a683deed47b7246b57131738530 BNB0.000231235
0xf7d48346b198fa098ffc688b941a1135b776767d8cf2026ce283a3b483ec6b96Approve105305812021-09-01 8:09:3851 days 8 hrs ago0x09a97460c6a4be9d2df777db7f408c5fd90da2f2 IN  0xeff826e3c63526a683deed47b7246b57131738530 BNB0.000230155
0x6f117c556b9be99670adbc11ff7e496a1c21393eea148d9beffdc643f199b0c2Approve105219992021-09-01 0:54:0351 days 15 hrs ago0x4d2f32f11280878a73bfaad45378bc37dc201727 IN  0xeff826e3c63526a683deed47b7246b57131738530 BNB0.000230155
0xba9b415951e17bcbb4ae35c06046c00132e11fe075baee8f7b90e111c13aeb51Approve105100762021-08-31 14:49:2952 days 1 hr ago0x7219a0bc4fc230c6073c82736a6f92775f1ced33 IN  0xeff826e3c63526a683deed47b7246b57131738530 BNB0.000230155
0x5cc668d7a64adb900b248878bd882bf15179cdfad2ade2dfd7f2ad9736ffe437Transfer105066712021-08-31 11:55:3052 days 4 hrs agoBinance: Hot Wallet 9 IN  0xeff826e3c63526a683deed47b7246b57131738530.03047675 BNB0.00021045
0xfb3a9b3329d042b7ac7e8dfdafea8e593bf6544dc7874bbf141b5bc2ed906819Approve104825042021-08-30 15:26:1953 days 55 mins ago0xd7dcf2602b07383be4925905a3c275615fd1a5d5 IN  0xeff826e3c63526a683deed47b7246b57131738530 BNB0.000231235
0x98c1180dcced04ce043c6f39a88397943161669121f14ff1bc6cba117c597684Approve104708332021-08-30 5:26:3353 days 10 hrs ago0xfadcbf1342dd43c71ccca714024908e2bfa884b3 IN  0xeff826e3c63526a683deed47b7246b57131738530 BNB0.000095178
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
KLEEKA

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-04-27
*/

pragma solidity ^0.8.4;

library SafeMath {
 
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    return add(a, b, "SafeMath: addition overflow");
  }

 
  function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
    uint256 c = a + b;
    require(c >= a, errorMessage);

    return c;
  }

  
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    return sub(a, b, "SafeMath: subtraction overflow");
  }

  
  function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
    require(b <= a, errorMessage);
    uint256 c = a - b;

    return c;
  }

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

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

    return c;
  }

 
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    return div(a, b, "SafeMath: division by 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;
  }

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

  
  function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
    require(b != 0, errorMessage);
    return a % b;
  }
}

contract Context {
  // Empty internal constructor, to prevent people from mistakenly deploying
  // an instance of this contract, which should be used via inheritance.
  constructor () { }

  function _msgSender() internal view returns (address payable) {
    return payable(msg.sender);
  }

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


contract Ownable is Context {
  address private _owner;

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

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

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

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

  
  function renounceOwnership() public onlyOwner {
    emit OwnershipTransferred(_owner, address(0));
    _owner = address(0);
  }

  /**
   * @dev Transfers ownership of the contract to a new account (`newOwner`).
   * Can only be called by the current owner.
   */
  function transferOwnership(address newOwner) public onlyOwner {
    _transferOwnership(newOwner);
  }

  /**
   * @dev Transfers ownership of the contract to a new account (`newOwner`).
   */
  function _transferOwnership(address newOwner) internal {
    require(newOwner != address(0), "Ownable: new owner is the zero address");
    emit OwnershipTransferred(_owner, newOwner);
    _owner = newOwner;
  }
}

interface BEP20Interface {
  /**
   * @dev Returns the amount of tokens in existence.
   */
  function totalSupply() external view returns (uint256);

  /**
   * @dev Returns the token decimals.
   */
  function decimals() external view returns (uint8);

  /**
   * @dev Returns the token symbol.
   */
  function symbol() external view returns (string memory);

  /**
  * @dev Returns the token name.
  */
  function name() external view returns (string memory);

  /**
   * @dev Returns the bep token owner.
   */
  function getOwner() external view returns (address);

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

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

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

  
  function approve(address spender, uint256 amount) external returns (bool);

  function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

  
  event Transfer(address indexed from, address indexed to, uint256 value);

  /**
   * @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 Tokenlock is Ownable {
    /// @notice Indicates if token is locked
    uint8 isLocked = 0;

    event Freezed();
    event UnFreezed();

    modifier validLock {
        require(isLocked == 0, "Token is locked");
        _;
    }
    
    function freeze() public onlyOwner {
        isLocked = 1;
        
        emit Freezed();
    }

    function unfreeze() public onlyOwner {
        isLocked = 0;
        
        emit UnFreezed();
    }
}

// ----------------------------------------------------------------------------
// Contract function to receive approval and execute function in one call
//
// Borrowed from MiniMeToken
// ----------------------------------------------------------------------------
abstract contract ApproveAndCallFallBack {
    function receiveApproval(address from, uint256 tokens, address token, bytes memory data) public virtual;
}

// ----------------------------------------------------------------------------
// Limit users in blacklist
// ----------------------------------------------------------------------------
contract UserLock is Ownable {
    mapping(address => bool) blacklist;
        
    event LockUser(address indexed who);
    event UnlockUser(address indexed who);

    modifier permissionCheck {
        require(!blacklist[msg.sender], "Blocked user");
        _;
    }
    
    function lockUser(address who) public onlyOwner {
        blacklist[who] = true;
        
        emit LockUser(who);
    }

    function unlockUser(address who) public onlyOwner {
        blacklist[who] = false;
        
        emit UnlockUser(who);
    }
}

contract KLEEKA is BEP20Interface, Tokenlock, UserLock {
    using SafeMath for uint256;

    /// @notice Official record of token balances for each account
    mapping (address => uint256) private _balances;

    /// @notice Allowance amounts on behalf of others
    mapping (address => mapping (address => uint256)) private _allowances;

    /// @notice Total number of tokens in circulation
    uint256 private _totalSupply;

    /// @notice BEP-20 token decimals for this token
    uint8 private _decimals;

    /// @notice BEP-20 token symbol for this token
    string private _symbol;

    /// @notice BEP-20 token name for this token
    string private _name;

    /// @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;
        uint256 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 A record of states for signing / validating signatures
    mapping (address => uint256) 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, uint256 previousBalance, uint256 newBalance);

    /**
     * @notice Construct a new KLEEKA token
     * @param account The initial account to grant all the tokens
     */
    constructor(address account) {
        _name = "Kleeka Inu";
        _symbol = "Kleeka";
        _decimals = 18;
        _totalSupply = 1000000000000000e18;
        _balances[account] = _totalSupply;

        emit Transfer(address(0), account, _totalSupply);
    }

    /**
     * @dev Returns the bep token owner.
    */
    function getOwner() external override view returns (address) {
        return owner();
    }

    /**
     * @dev Returns the token decimals.
    */
    function decimals() external override view returns (uint8) {
        return _decimals;
    }

    /**
     * @dev Returns the token symbol.
    */
    function symbol() external override view returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the token name.
    */
    function name() external override view returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the total supply.
    */
    function totalSupply() external override view returns (uint256) {
        return _totalSupply;
    }

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

    /**
     * @notice Transfer `amount` tokens from `msg.sender` to `dst`
     * @param recipient The address of the destination account
     * @param amount The number of tokens to transfer
     * @return Whether or not the transfer succeeded
     */
    function transfer(address recipient, uint256 amount) external override validLock permissionCheck returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @notice Get the number of tokens `spender` is approved to spend on behalf of `account`
     * @param owner 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 owner, address spender) external override view returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @notice Approve `spender` to transfer up to `amount` from `src`
     * @dev This will overwrite the approval amount for `spender`
     * @param spender The address of the account which may transfer tokens
     * @param amount The number of tokens that are approved (2^256-1 means infinite)
     * @return Whether or not the approval succeeded
     */
    function approve(address spender, uint256 amount) external override validLock permissionCheck returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @notice Approve the spender to transferFrom(...) with the amount.
     * @dev receiveApproval(...) is executed.
     * @param amount The number of tokens that are approved
     * @param data The data to pass to receiveApproval(...)
     * @return true
     */
    function approveAndCall(address spender, uint256 amount, bytes memory data) public validLock permissionCheck returns (bool) {
        _approve(_msgSender(), spender, amount);
        ApproveAndCallFallBack(spender).receiveApproval(_msgSender(), amount, address(this), data);
        return true;
    }

    /**
     * @notice Transfer `amount` tokens from `src` to `dst`
     * @param sender The address of the source account
     * @param recipient The address of the destination account
     * @param amount The number of tokens to transfer
     * @return Whether or not the transfer succeeded
     */
    function transferFrom(address sender, address recipient, uint256 amount) external override validLock permissionCheck returns (bool) {
        _transfer(sender, recipient, amount);
        address spender = _msgSender();
        uint256 spenderAllowance = _allowances[sender][spender];
        if (spenderAllowance <= _totalSupply) {
            _approve(sender, spender, spenderAllowance.sub(amount, "The transfer amount exceeds allowance"));
        }
        return true;
    }

    /**
     * @notice Atomically increases the allowance granted to `spender` by the caller
     * @dev This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {BEP20-approve}.
     * @param spender The address of the account which may transfer tokens
     * @param addedValue The additional number of tokens to allow which may be spent
     * @return Whether or not the approval succeeded
     */
    function increaseAllowance(address spender, uint256 addedValue) public validLock permissionCheck returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue, "The increased allowance overflows"));
        return true;
    }

    /**
     * @notice Atomically increases the allowance granted to `spender` by the caller
     * @dev This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {BEP20-approve}.
     * @param spender The address of the account which may transfer tokens
     * @param subtractedValue The subtractional number of tokens to allow which may be spent
     * @return Whether or not the approval succeeded
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public validLock permissionCheck returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "The decreased allowance below zero"));
        return true;
    }

    /**
     * @notice Destroy the amount of tokens from the sender, reducing the total supply.
     * @dev The amount must be greater than balance, total supply.
     * @param amount The number of tokens that are burnt
     * @return true
     */
    function burn(uint256 amount) public validLock permissionCheck returns (bool) {
        _burn(_msgSender(), amount);
        return true;
    }

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

   
    function delegateBySig(address delegatee, uint256 nonce, uint256 expiry, uint8 v, bytes32 r, bytes32 s) public validLock permissionCheck {
        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), "Invalid signature");
        require(nonce == nonces[signatory]++, "Invalid nonce");
        require(block.timestamp <= expiry, "The 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 ? ceil96(checkpoints[account][nCheckpoints - 1].votes) : 0;
    }

    
    function getPriorVotes(address account, uint256 blockNumber) public view returns (uint96) {
        require(blockNumber < block.number, "Not determined yet");

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

        // First check most recent balance
        if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) {
            return ceil96(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 ceil96(cp.votes);
            } else if (cp.fromBlock < blockNumber) {
                lower = center;
            } else {
                upper = center - 1;
            }
        }
        return ceil96(checkpoints[account][lower].votes);
    }

    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "Cannot transfer from the zero address");
        require(recipient != address(0), "Cannot transfer to the zero address");

        _balances[sender] = _balances[sender].sub(amount, "The transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount, "The balance overflows");
        emit Transfer(sender, recipient, amount);

        _moveDelegates(delegates[sender], delegates[recipient], amount);
    }

    function _approve(address owner, address spender, uint256 amount) internal {
        require(owner != address(0), "Cannot approve from the zero address");
        require(spender != address(0), "Cannot approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _burn(address account, uint256 amount) internal {
        require(account != address(0), "Cannot burn from the zero address");

        _balances[account] = _balances[account].sub(amount, "The burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);

        _moveDelegates(delegates[account], address(0), amount);
    }

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

        emit DelegateChanged(delegator, currentDelegate, delegatee);

        _moveDelegates(currentDelegate, delegatee, delegatorBalance);
    }

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

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

    function _writeCheckpoint(address delegatee, uint32 nCheckpoints, uint256 oldVotes, uint256 newVotes) internal {
      uint32 blockNumber = safe32(block.number, "The 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(uint256 n, string memory errorMessage) internal pure returns (uint32) {
        require(n < 2**32, errorMessage);
        return uint32(n);
    }

    function ceil96(uint256 n) internal pure returns (uint96) {
        if (n >= 2**96) {
            return uint96(2 ** 96 - 1);
        }
        return uint96(n);
    }

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":[],"name":"Freezed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"who","type":"address"}],"name":"LockUser","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":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"},{"anonymous":false,"inputs":[],"name":"UnFreezed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"who","type":"address"}],"name":"UnlockUser","type":"event"},{"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint256","name":"votes","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freeze","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"lockUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unfreeze","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"unlockUser","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526000805460ff60a01b191690553480156200001e57600080fd5b50604051620025333803806200253383398101604081905262000041916200020b565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060408051808201909152600a808252694b6c65656b6120496e7560b01b6020909201918252620000b59160079162000165565b50604080518082019091526006808252654b6c65656b6160d01b6020909201918252620000e3918162000165565b506005805460ff191660121790556d314dc6448d9338c15b0a0000000060048190556001600160a01b03821660008181526002602052604080822084905551919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620001569190815260200190565b60405180910390a35062000278565b82805462000173906200023b565b90600052602060002090601f016020900481019282620001975760008555620001e2565b82601f10620001b257805160ff1916838001178555620001e2565b82800160010185558215620001e2579182015b82811115620001e2578251825591602001919060010190620001c5565b50620001f0929150620001f4565b5090565b5b80821115620001f05760008155600101620001f5565b6000602082840312156200021d578081fd5b81516001600160a01b038116811462000234578182fd5b9392505050565b600181811c908216806200025057607f821691505b602082108114156200027257634e487b7160e01b600052602260045260246000fd5b50919050565b6122ab80620002886000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c8063782d6fe11161010f578063bd1870a3116100a2578063dd62ed3e11610071578063dd62ed3e14610472578063e7a324dc146104ab578063f1127ed8146104d2578063f2fde38b1461052957600080fd5b8063bd1870a314610426578063c3cda52014610439578063cae9ca511461044c578063d79725801461045f57600080fd5b806395d89b41116100de57806395d89b41146103e5578063a457c2d7146103ed578063a9059cbb14610400578063b4b5ea571461041357600080fd5b8063782d6fe1146103845780637ecebe00146103b4578063893d20e8146103d45780638da5cb5b146103d457600080fd5b806342966c68116101875780636a28f000116101565780636a28f000146103105780636fcfff451461031857806370a0823114610353578063715018a61461037c57600080fd5b806342966c681461029f578063587cde1e146102b25780635c19a95c146102f357806362a5af3b1461030857600080fd5b806320606b70116101c357806320606b701461023d57806323b872dd14610264578063313ce56714610277578063395093511461028c57600080fd5b806306fdde03146101ea578063095ea7b31461020857806318160ddd1461022b575b600080fd5b6101f261053c565b6040516101ff9190612026565b60405180910390f35b61021b610216366004611d6a565b6105ce565b60405190151581526020016101ff565b6004545b6040519081526020016101ff565b61022f7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61021b610272366004611d2f565b610647565b60055460405160ff90911681526020016101ff565b61021b61029a366004611d6a565b610716565b61021b6102ad366004611ef5565b6107be565b6102db6102c0366004611ce3565b6008602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016101ff565b610306610301366004611ce3565b61082c565b005b610306610893565b6103066108f9565b61033e610326366004611ce3565b600a6020526000908152604090205463ffffffff1681565b60405163ffffffff90911681526020016101ff565b61022f610361366004611ce3565b6001600160a01b031660009081526002602052604090205490565b610306610959565b610397610392366004611d6a565b6109cd565b6040516bffffffffffffffffffffffff90911681526020016101ff565b61022f6103c2366004611ce3565b600b6020526000908152604090205481565b6000546001600160a01b03166102db565b6101f2610c31565b61021b6103fb366004611d6a565b610c40565b61021b61040e366004611d6a565b610ce8565b610397610421366004611ce3565b610d4e565b610306610434366004611ce3565b610da7565b610306610447366004611e59565b610e1a565b61021b61045a366004611d93565b6110fd565b61030661046d366004611ce3565b6111d1565b61022f610480366004611cfd565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b61022f7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b61050d6104e0366004611eb7565b60096020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b6040805163ffffffff90931683526020830191909152016101ff565b610306610537366004611ce3565b61124a565b60606007805461054b90612168565b80601f016020809104026020016040519081016040528092919081815260200182805461057790612168565b80156105c45780601f10610599576101008083540402835291602001916105c4565b820191906000526020600020905b8154815290600101906020018083116105a757829003601f168201915b5050505050905090565b60008054600160a01b900460ff16156106025760405162461bcd60e51b81526004016105f990612094565b60405180910390fd5b3360009081526001602052604090205460ff16156106325760405162461bcd60e51b81526004016105f990612039565b61063d33848461127d565b5060015b92915050565b60008054600160a01b900460ff16156106725760405162461bcd60e51b81526004016105f990612094565b3360009081526001602052604090205460ff16156106a25760405162461bcd60e51b81526004016105f990612039565b6106ad8484846113a1565b6001600160a01b038416600090815260036020908152604080832033808552925290912054600454811161070a5761070a86836107058760405180606001604052806025815260200161225160259139869190611595565b61127d565b50600195945050505050565b60008054600160a01b900460ff16156107415760405162461bcd60e51b81526004016105f990612094565b3360009081526001602052604090205460ff16156107715760405162461bcd60e51b81526004016105f990612039565b61063d3384610705856040518060600160405280602181526020016121eb602191393360009081526003602090815260408083206001600160a01b038d16845290915290205491906115cf565b60008054600160a01b900460ff16156107e95760405162461bcd60e51b81526004016105f990612094565b3360009081526001602052604090205460ff16156108195760405162461bcd60e51b81526004016105f990612039565b6108233383611609565b5060015b919050565b600054600160a01b900460ff16156108565760405162461bcd60e51b81526004016105f990612094565b3360009081526001602052604090205460ff16156108865760405162461bcd60e51b81526004016105f990612039565b6108903382611758565b50565b6000546001600160a01b031633146108bd5760405162461bcd60e51b81526004016105f99061205f565b6000805460ff60a01b1916600160a01b1781556040517f962a6139ca22015759d0878e2cf5d770dcb8152e1d5ba08e46a969dd9b154a9c9190a1565b6000546001600160a01b031633146109235760405162461bcd60e51b81526004016105f99061205f565b6000805460ff60a01b191681556040517ff0daac2271a735ea786b9adf80dfcbd6a3cbd52f3cab0a78337114692d5faf5d9190a1565b6000546001600160a01b031633146109835760405162461bcd60e51b81526004016105f99061205f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000438210610a135760405162461bcd60e51b8152602060048201526012602482015271139bdd0819195d195c9b5a5b9959081e595d60721b60448201526064016105f9565b6001600160a01b0383166000908152600a602052604090205463ffffffff1680610a41576000915050610641565b6001600160a01b03841660009081526009602052604081208491610a66600185612143565b63ffffffff90811682526020820192909252604001600020541611610ad7576001600160a01b0384166000908152600960205260408120610acf91610aac600185612143565b63ffffffff1663ffffffff168152602001908152602001600020600101546117d8565b915050610641565b6001600160a01b038416600090815260096020908152604080832083805290915290205463ffffffff16831015610b12576000915050610641565b600080610b20600184612143565b90505b8163ffffffff168163ffffffff161115610bf15760006002610b458484612143565b610b4f91906120fd565b610b599083612143565b6001600160a01b038816600090815260096020908152604080832063ffffffff8086168552908352928190208151808301909252805490931680825260019093015491810191909152919250871415610bc557610bb981602001516117d8565b95505050505050610641565b805163ffffffff16871115610bdc57819350610bea565b610be7600183612143565b92505b5050610b23565b6001600160a01b038616600090815260096020908152604080832063ffffffff86168452909152902060010154610c27906117d8565b9695505050505050565b60606006805461054b90612168565b60008054600160a01b900460ff1615610c6b5760405162461bcd60e51b81526004016105f990612094565b3360009081526001602052604090205460ff1615610c9b5760405162461bcd60e51b81526004016105f990612039565b61063d33846107058560405180606001604052806022815260200161222f602291393360009081526003602090815260408083206001600160a01b038d1684529091529020549190611595565b60008054600160a01b900460ff1615610d135760405162461bcd60e51b81526004016105f990612094565b3360009081526001602052604090205460ff1615610d435760405162461bcd60e51b81526004016105f990612039565b61063d3384846113a1565b6001600160a01b0381166000908152600a602052604081205463ffffffff1680610d79576000610da0565b6001600160a01b0383166000908152600960205260408120610da091610aac600185612143565b9392505050565b6000546001600160a01b03163314610dd15760405162461bcd60e51b81526004016105f99061205f565b6001600160a01b038116600081815260016020526040808220805460ff19169055517f687691c08a3e67a160ba20a32cb1c56791955f12c5ff5d5fcf62bc456ad79ea19190a250565b600054600160a01b900460ff1615610e445760405162461bcd60e51b81526004016105f990612094565b3360009081526001602052604090205460ff1615610e745760405162461bcd60e51b81526004016105f990612039565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8666007604051610ea69190611f58565b6040518091039020610eb54690565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c08401526001600160a01b038b1660e084015261010083018a90526101208084018a90528251808503909101815261014084019092528151919093012061190160f01b610160830152610162820183905261018282018190529192506000906101a20160408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015610fe1573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166110385760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016105f9565b6001600160a01b0381166000908152600b6020526040812080549161105c836121a3565b91905055891461109e5760405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964206e6f6e636560981b60448201526064016105f9565b874211156110e65760405162461bcd60e51b8152602060048201526015602482015274151a19481cda59db985d1d5c9948195e1c1a5c9959605a1b60448201526064016105f9565b6110f0818b611758565b505050505b505050505050565b60008054600160a01b900460ff16156111285760405162461bcd60e51b81526004016105f990612094565b3360009081526001602052604090205460ff16156111585760405162461bcd60e51b81526004016105f990612039565b61116333858561127d565b604051638f4ffcb160e01b81526001600160a01b03851690638f4ffcb190611195903390879030908890600401611ff3565b600060405180830381600087803b1580156111af57600080fd5b505af11580156111c3573d6000803e3d6000fd5b506001979650505050505050565b6000546001600160a01b031633146111fb5760405162461bcd60e51b81526004016105f99061205f565b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f169aadf55dc2098830ccf9f334e3ce3933b6e895b9114fc9f49242f2be61fe8e9190a250565b6000546001600160a01b031633146112745760405162461bcd60e51b81526004016105f99061205f565b610890816117fc565b6001600160a01b0383166112df5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105f9565b6001600160a01b0382166113405760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105f9565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114055760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f74207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105f9565b6001600160a01b0382166114675760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f74207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105f9565b6114a48160405180606001604052806023815260200161220c602391396001600160a01b0386166000908152600260205260409020549190611595565b6001600160a01b038085166000908152600260208181526040808420959095558451808601865260158152745468652062616c616e6365206f766572666c6f777360581b8183015293871683525291909120546115029183906115cf565b6001600160a01b0380841660008181526002602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115569085815260200190565b60405180910390a36001600160a01b03808416600090815260086020526040808220548584168352912054611590929182169116836118bc565b505050565b600081848411156115b95760405162461bcd60e51b81526004016105f99190612026565b5060006115c6848661212c565b95945050505050565b6000806115dc84866120bd565b905082858210156116005760405162461bcd60e51b81526004016105f99190612026565b50949350505050565b6001600160a01b0382166116695760405162461bcd60e51b815260206004820152602160248201527f43616e6e6f74206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105f9565b604080518082018252601f81527f546865206275726e20616d6f756e7420657863656564732062616c616e6365006020808301919091526001600160a01b0385166000908152600290915291909120546116c4918390611595565b6001600160a01b0383166000908152600260205260409020556004546116ea9082611a9b565b6004556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36001600160a01b03808316600090815260086020526040812054611754921690836118bc565b5050565b6001600160a01b03808316600081815260086020818152604080842080546002845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46117d28284836118bc565b50505050565b6000600160601b82106117f857506bffffffffffffffffffffffff919050565b5090565b6001600160a01b0381166118615760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105f9565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b816001600160a01b0316836001600160a01b0316141580156118de5750600081115b15611590576001600160a01b038316156119c1576001600160a01b0383166000908152600a602052604081205463ffffffff16908161191e576000611961565b6001600160a01b038516600090815260096020526040812090611942600185612143565b63ffffffff1663ffffffff168152602001908152602001600020600101545b905060006119af846040518060400160405280601a81526020017f54686520766f746520616d6f756e7420756e646572666c6f7773000000000000815250846115959092919063ffffffff16565b90506119bd86848484611add565b5050505b6001600160a01b03821615611590576001600160a01b0382166000908152600a602052604081205463ffffffff1690816119fc576000611a3f565b6001600160a01b038416600090815260096020526040812090611a20600185612143565b63ffffffff1663ffffffff168152602001908152602001600020600101545b90506000611a8d846040518060400160405280601981526020017f54686520766f746520616d6f756e74206f766572666c6f777300000000000000815250846115cf9092919063ffffffff16565b90506110f585848484611add565b6000610da083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611595565b6000611b1e436040518060400160405280602081526020017f54686520626c6f636b206e756d62657220657863656564732033322062697473815250611c9c565b905060008463ffffffff16118015611b7857506001600160a01b038516600090815260096020526040812063ffffffff831691611b5c600188612143565b63ffffffff908116825260208201929092526040016000205416145b15611bc1576001600160a01b03851660009081526009602052604081208391611ba2600188612143565b63ffffffff168152602081019190915260400160002060010155611c51565b60408051808201825263ffffffff838116825260208083018681526001600160a01b038a166000908152600983528581208a851682529092529390209151825463ffffffff191691161781559051600191820155611c209085906120d5565b6001600160a01b0386166000908152600a60205260409020805463ffffffff191663ffffffff929092169190911790555b60408051848152602081018490526001600160a01b038716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b6000816401000000008410611cc45760405162461bcd60e51b81526004016105f99190612026565b509192915050565b80356001600160a01b038116811461082757600080fd5b600060208284031215611cf4578081fd5b610da082611ccc565b60008060408385031215611d0f578081fd5b611d1883611ccc565b9150611d2660208401611ccc565b90509250929050565b600080600060608486031215611d43578081fd5b611d4c84611ccc565b9250611d5a60208501611ccc565b9150604084013590509250925092565b60008060408385031215611d7c578182fd5b611d8583611ccc565b946020939093013593505050565b600080600060608486031215611da7578283fd5b611db084611ccc565b925060208401359150604084013567ffffffffffffffff80821115611dd3578283fd5b818601915086601f830112611de6578283fd5b813581811115611df857611df86121d4565b604051601f8201601f19908116603f01168101908382118183101715611e2057611e206121d4565b81604052828152896020848701011115611e38578586fd5b82602086016020830137856020848301015280955050505050509250925092565b60008060008060008060c08789031215611e71578182fd5b611e7a87611ccc565b95506020870135945060408701359350606087013560ff81168114611e9d578283fd5b9598949750929560808101359460a0909101359350915050565b60008060408385031215611ec9578182fd5b611ed283611ccc565b9150602083013563ffffffff81168114611eea578182fd5b809150509250929050565b600060208284031215611f06578081fd5b5035919050565b60008151808452815b81811015611f3257602081850181015186830182015201611f16565b81811115611f435782602083870101525b50601f01601f19169290920160200192915050565b600080835482600182811c915080831680611f7457607f831692505b6020808410821415611f9457634e487b7160e01b87526022600452602487fd5b818015611fa85760018114611fb957611fe5565b60ff19861689528489019650611fe5565b60008a815260209020885b86811015611fdd5781548b820152908501908301611fc4565b505084890196505b509498975050505050505050565b6001600160a01b0385811682526020820185905283166040820152608060608201819052600090610c2790830184611f0d565b602081526000610da06020830184611f0d565b6020808252600c908201526b213637b1b5b2b2103ab9b2b960a11b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600f908201526e151bdad95b881a5cc81b1bd8dad959608a1b604082015260600190565b600082198211156120d0576120d06121be565b500190565b600063ffffffff8083168185168083038211156120f4576120f46121be565b01949350505050565b600063ffffffff8084168061212057634e487b7160e01b83526012600452602483fd5b92169190910492915050565b60008282101561213e5761213e6121be565b500390565b600063ffffffff83811690831681811015612160576121606121be565b039392505050565b600181811c9082168061217c57607f821691505b6020821081141561219d57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156121b7576121b76121be565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfe54686520696e6372656173656420616c6c6f77616e6365206f766572666c6f7773546865207472616e7366657220616d6f756e7420657863656564732062616c616e63655468652064656372656173656420616c6c6f77616e63652062656c6f77207a65726f546865207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206ef30b350c7623196ec421e430e6716dd87a20423f18d6a17dd1dae11655427064736f6c6343000804003300000000000000000000000000dda0bc5567e3173e82c3f75f45dc12a291d87e

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

00000000000000000000000000dda0bc5567e3173e82c3f75f45dc12a291d87e

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

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000000dda0bc5567e3173e82c3f75f45dc12a291d87e


Deployed ByteCode Sourcemap

6969:14783:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10062:94;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11747:189;;;;;;:::i;:::-;;:::i;:::-;;;6470:14:1;;6463:22;6445:41;;6433:2;6418:18;11747:189:0;6400:92:1;10220:102:0;10302:12;;10220:102;;;6643:25:1;;;6631:2;6616:18;10220:102:0;6598:76:1;8265:122:0;;8307:80;8265:122;;12847:487;;;;;;:::i;:::-;;:::i;9744:94::-;9821:9;;9744:94;;9821:9;;;;14050:36:1;;14038:2;14023:18;9744:94:0;14005:87:1;13795:273:0;;;;;;:::i;:::-;;:::i;15083:146::-;;;;;;:::i;:::-;;:::i;7714:45::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;7714:45:0;;;;;;-1:-1:-1;;;;;5760:32:1;;;5742:51;;5730:2;5715:18;7714:45:0;5697:102:1;15377:130:0;;;;;;:::i;:::-;;:::i;:::-;;5563:101;;;:::i;5672:105::-;;;:::i;8143:49::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13617:10:1;13605:23;;;13587:42;;13575:2;13560:18;8143:49:0;13542:93:1;10336:121:0;;;;;;:::i;:::-;-1:-1:-1;;;;;10431:18:0;10404:7;10431:18;;;:9;:18;;;;;;;10336:121;2969:130;;;:::i;16740:1224::-;;;;;;:::i;:::-;;:::i;:::-;;;14271:26:1;14259:39;;;14241:58;;14229:2;14214:18;16740:1224:0;14196:109:1;8679:42:0;;;;;;:::i;:::-;;;;;;;;;;;;;;9584:94;9636:7;2753:6;-1:-1:-1;;;;;2753:6:0;9584:94;;9902:98;;;:::i;14537:284::-;;;;;;:::i;:::-;;:::i;10724:195::-;;;;;;:::i;:::-;;:::i;16496:230::-;;;;;;:::i;:::-;;:::i;6830:132::-;;;;;;:::i;:::-;;:::i;15520:775::-;;;;;;:::i;:::-;;:::i;12226:305::-;;;;;;:::i;:::-;;:::i;6695:127::-;;;;;;:::i;:::-;;:::i;11221:145::-;;;;;;:::i;:::-;-1:-1:-1;;;;;11331:18:0;;;11304:7;11331:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11221:145;8481:117;;8527:71;8481:117;;8004:70;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13842:10:1;13830:23;;;13812:42;;13885:2;13870:18;;13863:34;;;;13785:18;8004:70:0;13767:136:1;3244:103:0;;;;;;:::i;:::-;;:::i;10062:94::-;10110:13;10143:5;10136:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10062:94;:::o;11747:189::-;11850:4;5498:8;;-1:-1:-1;;;5498:8:0;;;;:13;5490:41;;;;-1:-1:-1;;;5490:41:0;;;;;;;:::i;:::-;;;;;;;;;6635:10:::1;6625:21;::::0;;;:9:::1;:21;::::0;;;;;::::1;;6624:22;6616:47;;;;-1:-1:-1::0;;;6616:47:0::1;;;;;;;:::i;:::-;11867:39:::2;1987:10:::0;11890:7:::2;11899:6;11867:8;:39::i;:::-;-1:-1:-1::0;11924:4:0::2;6674:1;11747:189:::0;;;;:::o;12847:487::-;12973:4;5498:8;;-1:-1:-1;;;5498:8:0;;;;:13;5490:41;;;;-1:-1:-1;;;5490:41:0;;;;;;;:::i;:::-;6635:10:::1;6625:21;::::0;;;:9:::1;:21;::::0;;;;;::::1;;6624:22;6616:47;;;;-1:-1:-1::0;;;6616:47:0::1;;;;;;;:::i;:::-;12990:36:::2;13000:6;13008:9;13019:6;12990:9;:36::i;:::-;-1:-1:-1::0;;;;;13105:19:0;::::2;13037:15;13105:19:::0;;;:11:::2;:19;::::0;;;;;;;1987:10;13105:28;;;;;;;;;13168:12:::2;::::0;13148:32;::::2;13144:161;;13197:96;13206:6;13214:7;13223:69;13244:6;13223:69;;;;;;;;;;;;;;;;;:16:::0;;:69;:20:::2;:69::i;:::-;13197:8;:96::i;:::-;-1:-1:-1::0;13322:4:0::2;::::0;12847:487;-1:-1:-1;;;;;12847:487:0:o;13795:273::-;13901:4;5498:8;;-1:-1:-1;;;5498:8:0;;;;:13;5490:41;;;;-1:-1:-1;;;5490:41:0;;;;;;;:::i;:::-;6635:10:::1;6625:21;::::0;;;:9:::1;:21;::::0;;;;;::::1;;6624:22;6616:47;;;;-1:-1:-1::0;;;6616:47:0::1;;;;;;;:::i;:::-;13918:120:::2;1987:10:::0;13941:7:::2;13950:87;13989:10;13950:87;;;;;;;;;;;;;;;;;1987:10:::0;13950:25:::2;::::0;;;:11:::2;:25;::::0;;;;;;;-1:-1:-1;;;;;13950:34:0;::::2;::::0;;;;;;;;;;:38:::2;:87::i;15083:146::-:0;15155:4;5498:8;;-1:-1:-1;;;5498:8:0;;;;:13;5490:41;;;;-1:-1:-1;;;5490:41:0;;;;;;;:::i;:::-;6635:10:::1;6625:21;::::0;;;:9:::1;:21;::::0;;;;;::::1;;6624:22;6616:47;;;;-1:-1:-1::0;;;6616:47:0::1;;;;;;;:::i;:::-;15172:27:::2;1987:10:::0;15192:6:::2;15172:5;:27::i;:::-;-1:-1:-1::0;15217:4:0::2;6674:1;15083:146:::0;;;:::o;15377:130::-;5498:8;;-1:-1:-1;;;5498:8:0;;;;:13;5490:41;;;;-1:-1:-1;;;5490:41:0;;;;;;;:::i;:::-;6635:10:::1;6625:21;::::0;;;:9:::1;:21;::::0;;;;;::::1;;6624:22;6616:47;;;;-1:-1:-1::0;;;6616:47:0::1;;;;;;;:::i;:::-;15465:34:::2;1987:10:::0;15489:9:::2;15465;:34::i;:::-;15377:130:::0;:::o;5563:101::-;2886:6;;-1:-1:-1;;;;;2886:6:0;1987:10;2886:22;2878:67;;;;-1:-1:-1;;;2878:67:0;;;;;;;:::i;:::-;5609:8:::1;:12:::0;;-1:-1:-1;;;;5609:12:0::1;-1:-1:-1::0;;;5609:12:0::1;::::0;;5647:9:::1;::::0;::::1;::::0;5609:8;5647:9:::1;5563:101::o:0;5672:105::-;2886:6;;-1:-1:-1;;;;;2886:6:0;1987:10;2886:22;2878:67;;;;-1:-1:-1;;;2878:67:0;;;;;;;:::i;:::-;5731:1:::1;5720:12:::0;;-1:-1:-1;;;;5720:12:0::1;::::0;;5758:11:::1;::::0;::::1;::::0;5731:1;5758:11:::1;5672:105::o:0;2969:130::-;2886:6;;-1:-1:-1;;;;;2886:6:0;1987:10;2886:22;2878:67;;;;-1:-1:-1;;;2878:67:0;;;;;;;:::i;:::-;3064:1:::1;3048:6:::0;;3027:40:::1;::::0;-1:-1:-1;;;;;3048:6:0;;::::1;::::0;3027:40:::1;::::0;3064:1;;3027:40:::1;3091:1;3074:19:::0;;-1:-1:-1;;;;;;3074:19:0::1;::::0;;2969:130::o;16740:1224::-;16822:6;16863:12;16849:11;:26;16841:57;;;;-1:-1:-1;;;16841:57:0;;10596:2:1;16841:57:0;;;10578:21:1;10635:2;10615:18;;;10608:30;-1:-1:-1;;;10654:18:1;;;10647:48;10712:18;;16841:57:0;10568:168:1;16841:57:0;-1:-1:-1;;;;;16933:23:0;;16911:19;16933:23;;;:14;:23;;;;;;;;16971:17;16967:58;;17012:1;17005:8;;;;;16967:58;-1:-1:-1;;;;;17085:20:0;;;;;;:11;:20;;;;;17137:11;;17106:16;17121:1;17106:12;:16;:::i;:::-;17085:38;;;;;;;;;;;;;;;-1:-1:-1;17085:38:0;:48;;:63;17081:155;;-1:-1:-1;;;;;17179:20:0;;;;;;:11;:20;;;;;17172:52;;17200:16;17215:1;17200:12;:16;:::i;:::-;17179:38;;;;;;;;;;;;;;;:44;;;17172:6;:52::i;:::-;17165:59;;;;;17081:155;-1:-1:-1;;;;;17297:20:0;;;;;;:11;:20;;;;;;;;:23;;;;;;;;:33;:23;:33;:47;-1:-1:-1;17293:88:0;;;17368:1;17361:8;;;;;17293:88;17393:12;;17435:16;17450:1;17435:12;:16;:::i;:::-;17420:31;;17462:436;17477:5;17469:13;;:5;:13;;;17462:436;;;17499:13;17541:1;17524:13;17532:5;17524;:13;:::i;:::-;17523:19;;;;:::i;:::-;17515:27;;:5;:27;:::i;:::-;-1:-1:-1;;;;;17607:20:0;;17584;17607;;;:11;:20;;;;;;;;:28;;;;;;;;;;;;;17584:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;17499:43;;-1:-1:-1;17654:27:0;;17650:237;;;17709:16;17716:2;:8;;;17709:6;:16::i;:::-;17702:23;;;;;;;;;17650:237;17751:12;;:26;;;-1:-1:-1;17747:140:0;;;17806:6;17798:14;;17747:140;;;17861:10;17870:1;17861:6;:10;:::i;:::-;17853:18;;17747:140;17462:436;;;;;-1:-1:-1;;;;;17922:20:0;;;;;;:11;:20;;;;;;;;:27;;;;;;;;;;:33;;;17915:41;;:6;:41::i;:::-;17908:48;16740:1224;-1:-1:-1;;;;;;16740:1224:0:o;9902:98::-;9952:13;9985:7;9978:14;;;;;:::i;14537:284::-;14648:4;5498:8;;-1:-1:-1;;;5498:8:0;;;;:13;5490:41;;;;-1:-1:-1;;;5490:41:0;;;;;;;:::i;:::-;6635:10:::1;6625:21;::::0;;;:9:::1;:21;::::0;;;;;::::1;;6624:22;6616:47;;;;-1:-1:-1::0;;;6616:47:0::1;;;;;;;:::i;:::-;14665:126:::2;1987:10:::0;14688:7:::2;14697:93;14736:15;14697:93;;;;;;;;;;;;;;;;;1987:10:::0;14697:25:::2;::::0;;;:11:::2;:25;::::0;;;;;;;-1:-1:-1;;;;;14697:34:0;::::2;::::0;;;;;;;;;;:38:::2;:93::i;10724:195::-:0;10830:4;5498:8;;-1:-1:-1;;;5498:8:0;;;;:13;5490:41;;;;-1:-1:-1;;;5490:41:0;;;;;;;:::i;:::-;6635:10:::1;6625:21;::::0;;;:9:::1;:21;::::0;;;;;::::1;;6624:22;6616:47;;;;-1:-1:-1::0;;;6616:47:0::1;;;;;;;:::i;:::-;10847:42:::2;1987:10:::0;10871:9:::2;10882:6;10847:9;:42::i;16496:230::-:0;-1:-1:-1;;;;;16602:23:0;;16561:6;16602:23;;;:14;:23;;;;;;;;16643:16;:75;;16717:1;16643:75;;;-1:-1:-1;;;;;16669:20:0;;;;;;:11;:20;;;;;16662:52;;16690:16;16705:1;16690:12;:16;:::i;16662:52::-;16636:82;16496:230;-1:-1:-1;;;16496:230:0:o;6830:132::-;2886:6;;-1:-1:-1;;;;;2886:6:0;1987:10;2886:22;2878:67;;;;-1:-1:-1;;;2878:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6891:14:0;::::1;6908:5;6891:14:::0;;;:9:::1;:14;::::0;;;;;:22;;-1:-1:-1;;6891:22:0::1;::::0;;6939:15;::::1;::::0;6908:5;6939:15:::1;6830:132:::0;:::o;15520:775::-;5498:8;;-1:-1:-1;;;5498:8:0;;;;:13;5490:41;;;;-1:-1:-1;;;5490:41:0;;;;;;;:::i;:::-;6635:10:::1;6625:21;::::0;;;:9:::1;:21;::::0;;;;;::::1;;6624:22;6616:47;;;;-1:-1:-1::0;;;6616:47:0::1;;;;;;;:::i;:::-;15668:23:::2;8307:80;15748:5;15732:23;;;;;;:::i;:::-;;;;;;;;15757:12;21706:9:::0;;21593:156;15757:12:::2;15704:81;::::0;;::::2;::::0;;::::2;7332:25:1::0;;;;7373:18;;;7366:34;;;;7416:18;;;7409:34;;;;15779:4:0::2;7459:18:1::0;;;;7452:60;;;;15704:81:0;;;;;;;;;;7304:19:1;;;15704:81:0;;15694:92;;;;::::2;::::0;8527:71:::2;15828:57:::0;;;6910:25:1;-1:-1:-1;;;;;6971:32:1;;6951:18;;;6944:60;7020:18;;;7013:34;;;7063:18;;;;7056:34;;;15828:57:0;;;;;;;;;;6882:19:1;;;15828:57:0;;;15818:68;;;;;::::2;::::0;-1:-1:-1;;;15924:57:0;;;5457:27:1;5500:11;;;5493:27;;;5536:12;;;5529:28;;;15694:92:0;;-1:-1:-1;;;5573:12:1;;15924:57:0::2;::::0;;-1:-1:-1;;15924:57:0;;::::2;::::0;;;;;;15914:68;;15924:57:::2;15914:68:::0;;::::2;::::0;15993:17:::2;16013:26:::0;;;;;::::2;::::0;;;7750:25:1;;;7823:4;7811:17;;7791:18;;;7784:45;;;;7845:18;;;7838:34;;;7888:18;;;7881:34;;;15914:68:0;;-1:-1:-1;15993:17:0;16013:26:::2;::::0;7722:19:1;;16013:26:0::2;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;16013:26:0::2;::::0;-1:-1:-1;;16013:26:0;;;-1:-1:-1;;;;;;;16058:23:0;::::2;16050:53;;;::::0;-1:-1:-1;;;16050:53:0;;9909:2:1;16050:53:0::2;::::0;::::2;9891:21:1::0;9948:2;9928:18;;;9921:30;-1:-1:-1;;;9967:18:1;;;9960:47;10024:18;;16050:53:0::2;9881:167:1::0;16050:53:0::2;-1:-1:-1::0;;;;;16131:17:0;::::2;;::::0;;;:6:::2;:17;::::0;;;;:19;;;::::2;::::0;::::2;:::i;:::-;;;;;16122:5;:28;16114:54;;;::::0;-1:-1:-1;;;16114:54:0;;8755:2:1;16114:54:0::2;::::0;::::2;8737:21:1::0;8794:2;8774:18;;;8767:30;-1:-1:-1;;;8813:18:1;;;8806:43;8866:18;;16114:54:0::2;8727:163:1::0;16114:54:0::2;16206:6;16187:15;:25;;16179:59;;;::::0;-1:-1:-1;;;16179:59:0;;12054:2:1;16179:59:0::2;::::0;::::2;12036:21:1::0;12093:2;12073:18;;;12066:30;-1:-1:-1;;;12112:18:1;;;12105:51;12173:18;;16179:59:0::2;12026:171:1::0;16179:59:0::2;16256:31;16266:9;16277;16256;:31::i;:::-;16249:38;;;;6674:1;15520:775:::0;;;;;;:::o;12226:305::-;12344:4;5498:8;;-1:-1:-1;;;5498:8:0;;;;:13;5490:41;;;;-1:-1:-1;;;5490:41:0;;;;;;;:::i;:::-;6635:10:::1;6625:21;::::0;;;:9:::1;:21;::::0;;;;;::::1;;6624:22;6616:47;;;;-1:-1:-1::0;;;6616:47:0::1;;;;;;;:::i;:::-;12361:39:::2;1987:10:::0;12384:7:::2;12393:6;12361:8;:39::i;:::-;12411:90;::::0;-1:-1:-1;;;12411:90:0;;-1:-1:-1;;;;;12411:47:0;::::2;::::0;::::2;::::0;:90:::2;::::0;1987:10;;12473:6;;12489:4:::2;::::0;12496;;12411:90:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;12519:4:0::2;::::0;12226:305;-1:-1:-1;;;;;;;12226:305:0:o;6695:127::-;2886:6;;-1:-1:-1;;;;;2886:6:0;1987:10;2886:22;2878:67;;;;-1:-1:-1;;;2878:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6754:14:0;::::1;;::::0;;;6771:4:::1;6754:14;::::0;;;;;;;:21;;-1:-1:-1;;6754:21:0::1;::::0;;::::1;::::0;;;6801:13;::::1;::::0;6754:14;6801:13:::1;6695:127:::0;:::o;3244:103::-;2886:6;;-1:-1:-1;;;;;2886:6:0;1987:10;2886:22;2878:67;;;;-1:-1:-1;;;2878:67:0;;;;;;;:::i;:::-;3313:28:::1;3332:8;3313:18;:28::i;18549:338::-:0;-1:-1:-1;;;;;18643:19:0;;18635:68;;;;-1:-1:-1;;;18635:68:0;;9504:2:1;18635:68:0;;;9486:21:1;9543:2;9523:18;;;9516:30;9582:34;9562:18;;;9555:62;-1:-1:-1;;;9633:18:1;;;9626:34;9677:19;;18635:68:0;9476:226:1;18635:68:0;-1:-1:-1;;;;;18722:21:0;;18714:68;;;;-1:-1:-1;;;18714:68:0;;8352:2:1;18714:68:0;;;8334:21:1;8391:2;8371:18;;;8364:30;8430:34;8410:18;;;8403:62;-1:-1:-1;;;8481:18:1;;;8474:32;8523:19;;18714:68:0;8324:224:1;18714:68:0;-1:-1:-1;;;;;18795:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;18847:32;;6643:25:1;;;18847:32:0;;6616:18:1;18847:32:0;;;;;;;18549:338;;;:::o;17972:569::-;-1:-1:-1;;;;;18070:20:0;;18062:70;;;;-1:-1:-1;;;18062:70:0;;11304:2:1;18062:70:0;;;11286:21:1;11343:2;11323:18;;;11316:30;11382:34;11362:18;;;11355:62;-1:-1:-1;;;11433:18:1;;;11426:35;11478:19;;18062:70:0;11276:227:1;18062:70:0;-1:-1:-1;;;;;18151:23:0;;18143:71;;;;-1:-1:-1;;;18143:71:0;;12404:2:1;18143:71:0;;;12386:21:1;12443:2;12423:18;;;12416:30;12482:34;12462:18;;;12455:62;-1:-1:-1;;;12533:18:1;;;12526:33;12576:19;;18143:71:0;12376:225:1;18143:71:0;18247:68;18269:6;18247:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18247:17:0;;;;;;:9;:17;;;;;;;:68;:21;:68::i;:::-;-1:-1:-1;;;;;18227:17:0;;;;;;;:9;:17;;;;;;;;:88;;;;18349:57;;;;;;;;;;-1:-1:-1;;;18349:57:0;;;;:20;;;;;;;;;;;:57;;18374:6;;18349:24;:57::i;:::-;-1:-1:-1;;;;;18326:20:0;;;;;;;:9;:20;;;;;;;:80;;;;18422:35;;;;;;;;;;18450:6;6643:25:1;;6631:2;6616:18;;6598:76;18422:35:0;;;;;;;;-1:-1:-1;;;;;18485:17:0;;;;;;;:9;:17;;;;;;;18504:20;;;;;;;;18470:63;;18485:17;;;;18504:20;18526:6;18470:14;:63::i;:::-;17972:569;;;:::o;516:178::-;602:7;634:12;626:6;;;;618:29;;;;-1:-1:-1;;;618:29:0;;;;;;;;:::i;:::-;-1:-1:-1;654:9:0;666:5;670:1;666;:5;:::i;:::-;654:17;516:178;-1:-1:-1;;;;;516:178:0:o;188:::-;274:7;;302:5;306:1;302;:5;:::i;:::-;290:17;-1:-1:-1;330:12:0;322:6;;;;314:29;;;;-1:-1:-1;;;314:29:0;;;;;;;;:::i;:::-;-1:-1:-1;359:1:0;188:178;-1:-1:-1;;;;188:178:0:o;18895:412::-;-1:-1:-1;;;;;18971:21:0;;18963:67;;;;-1:-1:-1;;;18963:67:0;;12808:2:1;18963:67:0;;;12790:21:1;12847:2;12827:18;;;12820:30;12886:34;12866:18;;;12859:62;-1:-1:-1;;;12937:18:1;;;12930:31;12978:19;;18963:67:0;12780:223:1;18963:67:0;19064:65;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19064:18:0;;-1:-1:-1;19064:18:0;;;:9;:18;;;;;;;;:65;;19087:6;;19064:22;:65::i;:::-;-1:-1:-1;;;;;19043:18:0;;;;;;:9;:18;;;;;:86;19155:12;;:24;;19172:6;19155:16;:24::i;:::-;19140:12;:39;19195:37;;6643:25:1;;;19221:1:0;;-1:-1:-1;;;;;19195:37:0;;;;;6631:2:1;6616:18;19195:37:0;;;;;;;-1:-1:-1;;;;;19260:18:0;;;;;;;:9;:18;;;;;;19245:54;;19260:18;;19292:6;19245:14;:54::i;:::-;18895:412;;:::o;19315:377::-;-1:-1:-1;;;;;19418:20:0;;;19392:23;19418:20;;;:9;:20;;;;;;;;;;19476:9;:20;;;;;;19507;;;;:32;;;-1:-1:-1;;;;;;19507:32:0;;;;;;;19557:54;;19418:20;;;;;19476;;19507:32;;19418:20;;;19557:54;;19392:23;19557:54;19624:60;19639:15;19656:9;19667:16;19624:14;:60::i;:::-;19315:377;;;;:::o;21413:172::-;21463:6;-1:-1:-1;;;21486:1:0;:10;21482:69;;-1:-1:-1;21527:11:0;;21413:172;-1:-1:-1;21413:172:0:o;21482:69::-;-1:-1:-1;21575:1:0;21413:172::o;3445:215::-;-1:-1:-1;;;;;3515:22:0;;3507:73;;;;-1:-1:-1;;;3507:73:0;;9097:2:1;3507:73:0;;;9079:21:1;9136:2;9116:18;;;9109:30;9175:34;9155:18;;;9148:62;-1:-1:-1;;;9226:18:1;;;9219:36;9272:19;;3507:73:0;9069:228:1;3507:73:0;3613:6;;;3592:38;;-1:-1:-1;;;;;3592:38:0;;;;3613:6;;;3592:38;;;3637:6;:17;;-1:-1:-1;;;;;;3637:17:0;-1:-1:-1;;;;;3637:17:0;;;;;;;;;;3445:215::o;19700:910::-;19806:6;-1:-1:-1;;;;;19796:16:0;:6;-1:-1:-1;;;;;19796:16:0;;;:30;;;;;19825:1;19816:6;:10;19796:30;19792:811;;;-1:-1:-1;;;;;19847:20:0;;;19843:367;;-1:-1:-1;;;;;19907:22:0;;19888:16;19907:22;;;:14;:22;;;;;;;;;19968:13;:60;;20027:1;19968:60;;;-1:-1:-1;;;;;19984:19:0;;;;;;:11;:19;;;;;;20004:13;20016:1;20004:9;:13;:::i;:::-;19984:34;;;;;;;;;;;;;;;:40;;;19968:60;19948:80;;20047:17;20067:51;20081:6;20067:51;;;;;;;;;;;;;;;;;:9;:13;;:51;;;;;:::i;:::-;20047:71;;20137:57;20154:6;20162:9;20173;20184;20137:16;:57::i;:::-;19843:367;;;;-1:-1:-1;;;;;20230:20:0;;;20226:366;;-1:-1:-1;;;;;20290:22:0;;20271:16;20290:22;;;:14;:22;;;;;;;;;20351:13;:60;;20410:1;20351:60;;;-1:-1:-1;;;;;20367:19:0;;;;;;:11;:19;;;;;;20387:13;20399:1;20387:9;:13;:::i;:::-;20367:34;;;;;;;;;;;;;;;:40;;;20351:60;20331:80;;20430:17;20450:50;20464:6;20450:50;;;;;;;;;;;;;;;;;:9;:13;;:50;;;;;:::i;:::-;20430:70;;20519:57;20536:6;20544:9;20555;20566;20519:16;:57::i;376:130::-;434:7;457:43;461:1;464;457:43;;;;;;;;;;;;;;;;;:3;:43::i;20618:611::-;20738:18;20759:56;20766:12;20759:56;;;;;;;;;;;;;;;;;:6;:56::i;:::-;20738:77;;20845:1;20830:12;:16;;;:85;;;;-1:-1:-1;;;;;;20850:22:0;;;;;;:11;:22;;;;;:65;;;;20873:16;20888:1;20873:12;:16;:::i;:::-;20850:40;;;;;;;;;;;;;;;-1:-1:-1;20850:40:0;:50;;:65;20830:85;20826:329;;;-1:-1:-1;;;;;20930:22:0;;;;;;:11;:22;;;;;20979:8;;20953:16;20968:1;20953:12;:16;:::i;:::-;20930:40;;;;;;;;;;;;;-1:-1:-1;20930:40:0;:46;;:57;20826:329;;;21055:33;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21016:22:0;;-1:-1:-1;21016:22:0;;;:11;:22;;;;;:36;;;;;;;;;;;:72;;;;-1:-1:-1;;21016:72:0;;;;;;;;-1:-1:-1;21016:72:0;;;;21129:16;;21016:36;;21129:16;:::i;:::-;-1:-1:-1;;;;;21101:25:0;;;;;;:14;:25;;;;;:44;;-1:-1:-1;;21101:44:0;;;;;;;;;;;;20826:329;21170:51;;;13364:25:1;;;13420:2;13405:18;;13398:34;;;-1:-1:-1;;;;;21170:51:0;;;;;13337:18:1;21170:51:0;;;;;;;20618:611;;;;;:::o;21241:164::-;21319:6;21357:12;21350:5;21346:9;;21338:32;;;;-1:-1:-1;;;21338:32:0;;;;;;;;:::i;:::-;-1:-1:-1;21395:1:0;;21241:164;-1:-1:-1;;21241:164:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;192:196;251:6;304:2;292:9;283:7;279:23;275:32;272:2;;;325:6;317;310:22;272:2;353:29;372:9;353:29;:::i;393:270::-;461:6;469;522:2;510:9;501:7;497:23;493:32;490:2;;;543:6;535;528:22;490:2;571:29;590:9;571:29;:::i;:::-;561:39;;619:38;653:2;642:9;638:18;619:38;:::i;:::-;609:48;;480:183;;;;;:::o;668:338::-;745:6;753;761;814:2;802:9;793:7;789:23;785:32;782:2;;;835:6;827;820:22;782:2;863:29;882:9;863:29;:::i;:::-;853:39;;911:38;945:2;934:9;930:18;911:38;:::i;:::-;901:48;;996:2;985:9;981:18;968:32;958:42;;772:234;;;;;:::o;1011:264::-;1079:6;1087;1140:2;1128:9;1119:7;1115:23;1111:32;1108:2;;;1161:6;1153;1146:22;1108:2;1189:29;1208:9;1189:29;:::i;:::-;1179:39;1265:2;1250:18;;;;1237:32;;-1:-1:-1;;;1098:177:1:o;1280:1108::-;1366:6;1374;1382;1435:2;1423:9;1414:7;1410:23;1406:32;1403:2;;;1456:6;1448;1441:22;1403:2;1484:29;1503:9;1484:29;:::i;:::-;1474:39;;1560:2;1549:9;1545:18;1532:32;1522:42;;1615:2;1604:9;1600:18;1587:32;1638:18;1679:2;1671:6;1668:14;1665:2;;;1700:6;1692;1685:22;1665:2;1743:6;1732:9;1728:22;1718:32;;1788:7;1781:4;1777:2;1773:13;1769:27;1759:2;;1815:6;1807;1800:22;1759:2;1856;1843:16;1878:2;1874;1871:10;1868:2;;;1884:18;;:::i;:::-;1959:2;1953:9;1927:2;2013:13;;-1:-1:-1;;2009:22:1;;;2033:2;2005:31;2001:40;1989:53;;;2057:18;;;2077:22;;;2054:46;2051:2;;;2103:18;;:::i;:::-;2143:10;2139:2;2132:22;2178:2;2170:6;2163:18;2218:7;2213:2;2208;2204;2200:11;2196:20;2193:33;2190:2;;;2244:6;2236;2229:22;2190:2;2305;2300;2296;2292:11;2287:2;2279:6;2275:15;2262:46;2350:6;2345:2;2340;2332:6;2328:15;2324:24;2317:40;2376:6;2366:16;;;;;;;1393:995;;;;;:::o;2393:638::-;2495:6;2503;2511;2519;2527;2535;2588:3;2576:9;2567:7;2563:23;2559:33;2556:2;;;2610:6;2602;2595:22;2556:2;2638:29;2657:9;2638:29;:::i;:::-;2628:39;;2714:2;2703:9;2699:18;2686:32;2676:42;;2765:2;2754:9;2750:18;2737:32;2727:42;;2819:2;2808:9;2804:18;2791:32;2863:4;2856:5;2852:16;2845:5;2842:27;2832:2;;2888:6;2880;2873:22;2832:2;2546:485;;;;-1:-1:-1;2546:485:1;;2968:3;2953:19;;2940:33;;3020:3;3005:19;;;2992:33;;-1:-1:-1;2546:485:1;-1:-1:-1;;2546:485:1:o;3036:370::-;3103:6;3111;3164:2;3152:9;3143:7;3139:23;3135:32;3132:2;;;3185:6;3177;3170:22;3132:2;3213:29;3232:9;3213:29;:::i;:::-;3203:39;;3292:2;3281:9;3277:18;3264:32;3336:10;3329:5;3325:22;3318:5;3315:33;3305:2;;3367:6;3359;3352:22;3305:2;3395:5;3385:15;;;3122:284;;;;;:::o;3411:190::-;3470:6;3523:2;3511:9;3502:7;3498:23;3494:32;3491:2;;;3544:6;3536;3529:22;3491:2;-1:-1:-1;3572:23:1;;3481:120;-1:-1:-1;3481:120:1:o;3606:475::-;3647:3;3685:5;3679:12;3712:6;3707:3;3700:19;3737:3;3749:162;3763:6;3760:1;3757:13;3749:162;;;3825:4;3881:13;;;3877:22;;3871:29;3853:11;;;3849:20;;3842:59;3778:12;3749:162;;;3929:6;3926:1;3923:13;3920:2;;;3995:3;3988:4;3979:6;3974:3;3970:16;3966:27;3959:40;3920:2;-1:-1:-1;4063:2:1;4042:15;-1:-1:-1;;4038:29:1;4029:39;;;;4070:4;4025:50;;3655:426;-1:-1:-1;;3655:426:1:o;4086:1108::-;4216:3;4245;4280:6;4274:13;4310:3;4332:1;4360:9;4356:2;4352:18;4342:28;;4420:2;4409:9;4405:18;4442;4432:2;;4486:4;4478:6;4474:17;4464:27;;4432:2;4512;4560;4552:6;4549:14;4529:18;4526:38;4523:2;;;-1:-1:-1;;;4587:33:1;;4643:4;4640:1;4633:15;4673:4;4594:3;4661:17;4523:2;4704:18;4731:104;;;;4849:1;4844:325;;;;4697:472;;4731:104;-1:-1:-1;;4764:24:1;;4752:37;;4809:16;;;;-1:-1:-1;4731:104:1;;4844:325;14360:4;14379:17;;;14429:4;14413:21;;4942:3;4958:165;4972:6;4969:1;4966:13;4958:165;;;5050:14;;5037:11;;;5030:35;5093:16;;;;4987:10;;4958:165;;;4962:3;;5152:6;5147:3;5143:16;5136:23;;4697:472;-1:-1:-1;5185:3:1;;4224:970;-1:-1:-1;;;;;;;;4224:970:1:o;5804:496::-;-1:-1:-1;;;;;6081:15:1;;;6063:34;;6128:2;6113:18;;6106:34;;;6176:15;;6171:2;6156:18;;6149:43;6228:3;6223:2;6208:18;;6201:31;;;6006:4;;6249:45;;6274:19;;6266:6;6249:45;:::i;7926:219::-;8075:2;8064:9;8057:21;8038:4;8095:44;8135:2;8124:9;8120:18;8112:6;8095:44;:::i;10053:336::-;10255:2;10237:21;;;10294:2;10274:18;;;10267:30;-1:-1:-1;;;10328:2:1;10313:18;;10306:42;10380:2;10365:18;;10227:162::o;10741:356::-;10943:2;10925:21;;;10962:18;;;10955:30;11021:34;11016:2;11001:18;;10994:62;11088:2;11073:18;;10915:182::o;11508:339::-;11710:2;11692:21;;;11749:2;11729:18;;;11722:30;-1:-1:-1;;;11783:2:1;11768:18;;11761:45;11838:2;11823:18;;11682:165::o;14445:128::-;14485:3;14516:1;14512:6;14509:1;14506:13;14503:2;;;14522:18;;:::i;:::-;-1:-1:-1;14558:9:1;;14493:80::o;14578:228::-;14617:3;14645:10;14682:2;14679:1;14675:10;14712:2;14709:1;14705:10;14743:3;14739:2;14735:12;14730:3;14727:21;14724:2;;;14751:18;;:::i;:::-;14787:13;;14625:181;-1:-1:-1;;;;14625:181:1:o;14811:288::-;14850:1;14876:10;14913:2;14910:1;14906:10;14935:3;14925:2;;-1:-1:-1;;;14962:31:1;;15016:4;15013:1;15006:15;15044:4;14969:1;15034:15;14925:2;15077:10;;15073:20;;;;;14856:243;-1:-1:-1;;14856:243:1:o;15104:125::-;15144:4;15172:1;15169;15166:8;15163:2;;;15177:18;;:::i;:::-;-1:-1:-1;15214:9:1;;15153:76::o;15234:221::-;15273:4;15302:10;15362;;;;15332;;15384:12;;;15381:2;;;15399:18;;:::i;:::-;15436:13;;15282:173;-1:-1:-1;;;15282:173:1:o;15460:380::-;15539:1;15535:12;;;;15582;;;15603:2;;15657:4;15649:6;15645:17;15635:27;;15603:2;15710;15702:6;15699:14;15679:18;15676:38;15673:2;;;15756:10;15751:3;15747:20;15744:1;15737:31;15791:4;15788:1;15781:15;15819:4;15816:1;15809:15;15673:2;;15515:325;;;:::o;15845:135::-;15884:3;-1:-1:-1;;15905:17:1;;15902:2;;;15925:18;;:::i;:::-;-1:-1:-1;15972:1:1;15961:13;;15892:88::o;15985:127::-;16046:10;16041:3;16037:20;16034:1;16027:31;16077:4;16074:1;16067:15;16101:4;16098:1;16091:15;16117:127;16178:10;16173:3;16169:20;16166:1;16159:31;16209:4;16206:1;16199:15;16233:4;16230:1;16223:15

Swarm Source

ipfs://6ef30b350c7623196ec421e430e6716dd87a20423f18d6a17dd1dae116554270
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
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.