ETH Price: $3,755.96 (+2.65%)
Gas: 5 Gwei

Contract

0x2F5cDC81a729B750F3B733Cb95660E788441c71E
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Transfer187952752023-12-16 1:07:59158 days ago1702688879IN
0x2F5cDC81...88441c71E
0 ETH0.0047060576.31404833
Transfer150419852022-06-28 22:41:55693 days ago1656456115IN
0x2F5cDC81...88441c71E
0 ETH0.0018746142.0401492
Transfer150356682022-06-27 18:22:47694 days ago1656354167IN
0x2F5cDC81...88441c71E
0 ETH0.0023698953.17593191
Transfer146725402022-04-28 11:16:17754 days ago1651144577IN
0x2F5cDC81...88441c71E
0 ETH0.0016221936.37938494
Set Assets Certi...135076712021-10-28 19:46:03936 days ago1635450363IN
0x2F5cDC81...88441c71E
0 ETH0.00818315184.64216883
Transfer133547042021-10-04 20:14:44960 days ago1633378484IN
0x2F5cDC81...88441c71E
0 ETH0.0064511130.64461462
Transfer133289782021-09-30 19:35:55964 days ago1633030555IN
0x2F5cDC81...88441c71E
0 ETH0.0136781277.00249171
Transfer126544062021-06-17 21:37:261069 days ago1623965846IN
0x2F5cDC81...88441c71E
0 ETH0.0006875820
Approve120925202021-03-23 2:52:431156 days ago1616467963IN
0x2F5cDC81...88441c71E
0 ETH0.0072507150
Approve119298882021-02-26 1:34:391181 days ago1614303279IN
0x2F5cDC81...88441c71E
0 ETH0.00253063139
Approve113692512020-12-01 21:58:591267 days ago1606859939IN
0x2F5cDC81...88441c71E
0 ETH0.0010206421
Transfer113429772020-11-27 21:43:241271 days ago1606513404IN
0x2F5cDC81...88441c71E
0 ETH0.0013076318.4
Transfer107984342020-09-05 1:28:381355 days ago1599269318IN
0x2F5cDC81...88441c71E
0 ETH0.00611391109
Transfer103507182020-06-27 23:24:401424 days ago1593300280IN
0x2F5cDC81...88441c71E
0 ETH0.0023452133
Transfer102346742020-06-10 0:06:101442 days ago1591747570IN
0x2F5cDC81...88441c71E
0 ETH0.0014016725
Transfer99194192020-04-22 1:52:041491 days ago1587520324IN
0x2F5cDC81...88441c71E
0 ETH0.000164364
Set Assets Certi...95618302020-02-26 22:22:281546 days ago1582755748IN
0x2F5cDC81...88441c71E
0 ETH0.000040841
Set Assets Certi...95618222020-02-26 22:20:451546 days ago1582755645IN
0x2F5cDC81...88441c71E
0 ETH0.000040841
Set Assets Certi...93277902020-01-21 23:07:071582 days ago1579648027IN
0x2F5cDC81...88441c71E
0 ETH0.000204215
Transfer92863802020-01-15 14:56:181588 days ago1579100178IN
0x2F5cDC81...88441c71E
0 ETH0.000328538
Transfer92863582020-01-15 14:52:161588 days ago1579099936IN
0x2F5cDC81...88441c71E
0 ETH0.000328538
Transfer92863402020-01-15 14:48:451588 days ago1579099725IN
0x2F5cDC81...88441c71E
0 ETH0.00036969
Transfer92862872020-01-15 14:38:001588 days ago1579099080IN
0x2F5cDC81...88441c71E
0 ETH0.00050469
Transfer92862102020-01-15 14:19:391588 days ago1579097979IN
0x2F5cDC81...88441c71E
0 ETH0.00004452
Set Assets Certi...91325952019-12-19 22:00:041615 days ago1576792804IN
0x2F5cDC81...88441c71E
0 ETH0.0004084310
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
LD2Zero

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-06-14
*/

pragma solidity ^0.4.19;

// File: contracts/storage/interface/RocketStorageInterface.sol

// Our eternal storage interface
contract RocketStorageInterface {
    // Modifiers
    modifier onlyLatestRocketNetworkContract() {_;}
    // Getters
    function getAddress(bytes32 _key) external view returns (address);
    function getUint(bytes32 _key) external view returns (uint);
    function getString(bytes32 _key) external view returns (string);
    function getBytes(bytes32 _key) external view returns (bytes);
    function getBool(bytes32 _key) external view returns (bool);
    function getInt(bytes32 _key) external view returns (int);
    // Setters
    function setAddress(bytes32 _key, address _value) onlyLatestRocketNetworkContract external;
    function setUint(bytes32 _key, uint _value) onlyLatestRocketNetworkContract external;
    function setString(bytes32 _key, string _value) onlyLatestRocketNetworkContract external;
    function setBytes(bytes32 _key, bytes _value) onlyLatestRocketNetworkContract external;
    function setBool(bytes32 _key, bool _value) onlyLatestRocketNetworkContract external;
    function setInt(bytes32 _key, int _value) onlyLatestRocketNetworkContract external;
    // Deleters
    function deleteAddress(bytes32 _key) onlyLatestRocketNetworkContract external;
    function deleteUint(bytes32 _key) onlyLatestRocketNetworkContract external;
    function deleteString(bytes32 _key) onlyLatestRocketNetworkContract external;
    function deleteBytes(bytes32 _key) onlyLatestRocketNetworkContract external;
    function deleteBool(bytes32 _key) onlyLatestRocketNetworkContract external;
    function deleteInt(bytes32 _key) onlyLatestRocketNetworkContract external;
    // Hash helpers
    function kcck256str(string _key1) external pure returns (bytes32);
    function kcck256strstr(string _key1, string _key2) external pure returns (bytes32);
    function kcck256stradd(string _key1, address _key2) external pure returns (bytes32);
    function kcck256straddadd(string _key1, address _key2, address _key3) external pure returns (bytes32);
}

// File: contracts/storage/RocketBase.sol

/// @title Base settings / modifiers for each contract in Rocket Pool
/// @author David Rugendyke
contract RocketBase {

    /*** Events ****************/

    event ContractAdded (
        address indexed _newContractAddress,                    // Address of the new contract
        uint256 created                                         // Creation timestamp
    );

    event ContractUpgraded (
        address indexed _oldContractAddress,                    // Address of the contract being upgraded
        address indexed _newContractAddress,                    // Address of the new contract
        uint256 created                                         // Creation timestamp
    );

    /**** Properties ************/

    uint8 public version;                                                   // Version of this contract


    /*** Contracts **************/

    RocketStorageInterface rocketStorage = RocketStorageInterface(0);       // The main storage contract where primary persistant storage is maintained


    /*** Modifiers ************/

    /**
    * @dev Throws if called by any account other than the owner.
    */
    modifier onlyOwner() {
        roleCheck("owner", msg.sender);
        _;
    }

    /**
    * @dev Modifier to scope access to admins
    */
    modifier onlyAdmin() {
        roleCheck("admin", msg.sender);
        _;
    }

    /**
    * @dev Modifier to scope access to admins
    */
    modifier onlySuperUser() {
        require(roleHas("owner", msg.sender) || roleHas("admin", msg.sender));
        _;
    }

    /**
    * @dev Reverts if the address doesn't have this role
    */
    modifier onlyRole(string _role) {
        roleCheck(_role, msg.sender);
        _;
    }

  
    /*** Constructor **********/
   
    /// @dev Set the main Rocket Storage address
    constructor(address _rocketStorageAddress) public {
        // Update the contract address
        rocketStorage = RocketStorageInterface(_rocketStorageAddress);
    }


    /*** Role Utilities */

    /**
    * @dev Check if an address is an owner
    * @return bool
    */
    function isOwner(address _address) public view returns (bool) {
        return rocketStorage.getBool(keccak256("access.role", "owner", _address));
    }

    /**
    * @dev Check if an address has this role
    * @return bool
    */
    function roleHas(string _role, address _address) internal view returns (bool) {
        return rocketStorage.getBool(keccak256("access.role", _role, _address));
    }

     /**
    * @dev Check if an address has this role, reverts if it doesn't
    */
    function roleCheck(string _role, address _address) view internal {
        require(roleHas(_role, _address) == true);
    }

}

// File: contracts/Authorized.sol

/**
 * @title Authorized
 * @dev The Authorized contract has an issuer, depository, and auditor address, and provides basic 
 * authorization control functions, this simplifies the implementation of "user permissions".
 */
contract Authorized is RocketBase {

    // The issuer's address
    // In contract's RocketStorage 
    // address public token.issuer;

    // The depository's address
    // In contract's RocketStorage 
    // address public token.depository;

    // The auditor's address
    // In contract's RocketStorage 
    // address public token.auditor;

    event IssuerTransferred(address indexed previousIssuer, address indexed newIssuer);
    event AuditorTransferred(address indexed previousAuditor, address indexed newAuditor);
    event DepositoryTransferred(address indexed previousDepository, address indexed newDepository);

    /* 
     *  Modifiers
     */

    // Ensure sender is issuer   
    modifier onlyIssuer {
        require( msg.sender == issuer() );
        _;
    }

    // Ensure sender is depository
    modifier onlyDepository {
        require( msg.sender == depository() );
        _;
    }

    // Ensure sender is auditor
    modifier onlyAuditor {
        require( msg.sender == auditor() );
        _;
    }


  /**
   * @dev Allows the current owner to explicity assign a new issuer.
   * @param newIssuer The address of the new issuer.
   */
  function setIssuer(address newIssuer) public onlyOwner {
    require(newIssuer != address(0));
    rocketStorage.setAddress(keccak256("token.issuer"), newIssuer);
    emit IssuerTransferred(issuer(), newIssuer);
  }

  /**
   * @dev Get the current issuer address from storage.
   */
  function issuer() public view returns (address) {
    return rocketStorage.getAddress(keccak256("token.issuer"));
  }

  /**
   * @dev Allows the current owner to explicity assign a new auditor.
   * @param newAuditor The address of the new auditor.
   */
  function setAuditor(address newAuditor) public onlyOwner {
    require(newAuditor != address(0));
    rocketStorage.setAddress(keccak256("token.auditor"), newAuditor);
    emit AuditorTransferred(auditor(), newAuditor);
  }

  /**
   * @dev Get the current auditor address from storage.
   */
  function auditor() public view returns (address) {
    return rocketStorage.getAddress(keccak256("token.auditor"));
  }

  /**
   * @dev Allows the current owner to explicity assign a new depository.
   * @param newDepository The address of the new depository.
   */
  function setDepository(address newDepository) public onlyOwner {
    require(newDepository != address(0));
    rocketStorage.setAddress(keccak256("token.depository"), newDepository);
    emit DepositoryTransferred(depository(), newDepository);
  }

  /**
   * @dev Get the current depository address from storage.
   */
  function depository() public view returns (address) {
    return rocketStorage.getAddress(keccak256("token.depository"));
  }

}

// File: contracts/PausableRedemption.sol

/**
 * @title PausableRedemption
 * @dev Base contract which allows children to implement an emergency stop mechanism, specifically for redemption.
 */
contract PausableRedemption is RocketBase {
  event PauseRedemption();
  event UnpauseRedemption();

  // Whether redemption is paused or not
  // Stored in RocketStorage
  // bool public token.redemptionPaused = false;

  /**
   * @dev Modifier to make a function callable only when the contract redemption is not paused.
   */
  modifier whenRedemptionNotPaused() {
    require(!redemptionPaused());
    _;
  }

  /**
   * @dev Modifier to make a function callable only when the contract redemption is paused.
   */
  modifier whenRedemptionPaused() {
    require(redemptionPaused());
    _;
  }

  /**
   * @dev returns the redemptionPaused status from contract storage
   */
  function redemptionPaused() public view returns (bool) {
    return rocketStorage.getBool(keccak256("token.redemptionPaused"));
  }

  /**
   * @dev called by the owner to pause, triggers stopped state
   */
  function pauseRedemption() onlyOwner whenRedemptionNotPaused public {
    rocketStorage.setBool(keccak256("token.redemptionPaused"), true);
    emit PauseRedemption();
  }

  /**
   * @dev called by the owner to unpause redemption, returns to normal state
   */
  function unpauseRedemption() onlyOwner whenRedemptionPaused public {
    rocketStorage.setBool(keccak256("token.redemptionPaused"), false);
    emit UnpauseRedemption();
  }
}

// File: zeppelin-solidity/contracts/math/SafeMath.sol

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

  /**
  * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}

// File: contracts/Issuable.sol

contract Issuable is RocketBase, Authorized, PausableRedemption {
    using SafeMath for uint256;

    event AssetsUpdated(address indexed depository, uint256 amount);
    event CertificationUpdated(address indexed auditor, uint256 amount);

    // Get assetsOnDeposit
    function assetsOnDeposit() public view returns (uint256) {
        return rocketStorage.getUint(keccak256("issuable.assetsOnDeposit"));
    }

    // Get assetsCertified
    function assetsCertified() public view returns (uint256) {
        return rocketStorage.getUint(keccak256("issuable.assetsCertified"));
    }

    /******* For paused redemption *******/

    // Set assetsOnDeposit
    function setAssetsOnDeposit(uint256 _total) public onlyDepository whenRedemptionPaused {
        uint256 totalSupply_ = rocketStorage.getUint(keccak256("token.totalSupply"));
        require(_total >= totalSupply_);
        rocketStorage.setUint(keccak256("issuable.assetsOnDeposit"), _total);
        emit AssetsUpdated(msg.sender, _total);
    }

    // Set assetsCertified
    function setAssetsCertified(uint256 _total) public onlyAuditor whenRedemptionPaused {
        uint256 totalSupply_ = rocketStorage.getUint(keccak256("token.totalSupply"));
        require(_total >= totalSupply_);
        rocketStorage.setUint(keccak256("issuable.assetsCertified"), _total);
        emit CertificationUpdated(msg.sender, _total);
    }

    /******* For during both paused and non-paused redemption *******/

    // Depository can receive assets (increasing)
    function receiveAssets(uint256 _units) public onlyDepository {
        uint256 total_ = assetsOnDeposit().add(_units);
        rocketStorage.setUint(keccak256("issuable.assetsOnDeposit"), total_);
        emit AssetsUpdated(msg.sender, total_);
    }

    // Depository can release assets (decreasing), but never to less than the totalSupply
    function releaseAssets(uint256 _units) public onlyDepository {
        uint256 totalSupply_ = rocketStorage.getUint(keccak256("token.totalSupply"));
        uint256 total_ = assetsOnDeposit().sub(_units);
        require(total_ >= totalSupply_);
        rocketStorage.setUint(keccak256("issuable.assetsOnDeposit"), total_);
        emit AssetsUpdated(msg.sender, total_);
    }

    // Auditor can increase certified assets
    function increaseAssetsCertified(uint256 _units) public onlyAuditor {
        uint256 total_ = assetsCertified().add(_units);
        rocketStorage.setUint(keccak256("issuable.assetsCertified"), total_);
        emit CertificationUpdated(msg.sender, total_);
    }

    // Auditor can decrease certified assets
    function decreaseAssetsCertified(uint256 _units) public onlyAuditor {
        uint256 totalSupply_ = rocketStorage.getUint(keccak256("token.totalSupply"));
        uint256 total_ = assetsCertified().sub(_units);
        require(total_ >= totalSupply_);
        rocketStorage.setUint(keccak256("issuable.assetsCertified"), total_);
        emit CertificationUpdated(msg.sender, total_);
    }

}

// File: zeppelin-solidity/contracts/token/ERC20/ERC20Basic.sol

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
  function totalSupply() public view returns (uint256);
  function balanceOf(address who) public view returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}

// File: zeppelin-solidity/contracts/token/ERC20/ERC20.sol

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender) public view returns (uint256);
  function transferFrom(address from, address to, uint256 value) public returns (bool);
  function approve(address spender, uint256 value) public returns (bool);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

// File: contracts/LD2Token.sol

/// @title The primary ERC20 token contract, using LD2 storage
/// @author Steven Brendtro
contract LD2Token is ERC20, RocketBase, Issuable {
  using SafeMath for uint256;

  event TokensIssued(address indexed issuer, uint256 amount);

  // The balances of the token, per ERC20, but stored in contract storage (rocketStorage)
  // mapping(address => uint256) token.balances;

  // The totalSupply of the token, per ERC20, but stored in contract storage (rocketStorage)
  // uint256 token.totalSupply;

  // The authorizations of the token, per ERC20, but stored in contract storage (rocketStorage)
  // This is accomplished by hashing token.allowed + _fromAddr + _toAddr
  // mapping (address => mapping (address => uint256)) internal allowed;

  /**
  * @dev total number of tokens in existence
  */
  function totalSupply() public view returns (uint256) {
    return rocketStorage.getUint(keccak256("token.totalSupply"));
  }

  /**
  * @dev increase total number of tokens in existence
  */
  function increaseTotalSupply(uint256 _increase) internal {
    uint256 totalSupply_ = totalSupply();
    totalSupply_ = totalSupply_.add(_increase);
    rocketStorage.setUint(keccak256("token.totalSupply"),totalSupply_);
  }

  /**
  * @dev decrease total number of tokens in existence
  */
  function decreaseTotalSupply(uint256 _decrease) internal {
    uint256 totalSupply_ = totalSupply();
    totalSupply_ = totalSupply_.sub(_decrease);
    rocketStorage.setUint(keccak256("token.totalSupply"),totalSupply_);
  }

  /**
  * @dev transfer token for a specified address
  * @param _to The address to transfer to.
  * @param _value The amount to be transferred.
  */
  function transfer(address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balanceOf(msg.sender));

    // SafeMath.sub will throw if there is not enough balance.
    // Use the contract storage
    setBalanceOf(msg.sender, balanceOf(msg.sender).sub(_value));
    setBalanceOf(_to, balanceOf(_to).add(_value));
    emit Transfer(msg.sender, _to, _value);
    return true;
  }

  /**
  * @dev Gets the balance of the specified address.
  * @param _owner The address to query the the balance of.
  * @return An uint256 representing the amount owned by the passed address.
  */
  function balanceOf(address _owner) public view returns (uint256 balance) {
    return rocketStorage.getUint(keccak256("token.balances",_owner));
  }

  /**
  * @dev Updates the balance of the specified address.
  * @param _owner The address to query the the balance of.
  * @param _balance An uint256 representing the amount owned by the passed address.
  */
  function setBalanceOf(address _owner, uint256 _balance) internal {
    rocketStorage.setUint(keccak256("token.balances",_owner), _balance);
  }

  /**
   * @dev Function to check the amount of tokens that an owner allowed to a spender.
   * @param _owner address The address which owns the funds.
   * @param _spender address The address which will spend the funds.
   * @return A uint256 specifying the amount of tokens still available for the spender.
   */
  function allowance(address _owner, address _spender) public view returns (uint256) {
    return rocketStorage.getUint(keccak256("token.allowed",_owner,_spender));
  }

  /**
  * @dev Updates the allowance by _owner of the _spender to have access to _balance.
  * @param _owner The address to query the the balance of.
  * @param _spender The address which will spend the funds
  * @param _balance An uint256 representing the amount owned by the passed address.
  */
  function setAllowance(address _owner, address _spender, uint256 _balance) internal {
    rocketStorage.setUint(keccak256("token.allowed",_owner,_spender), _balance);
  }

  /**
   * @dev Transfer tokens from one address to another
   * @param _from address The address which you want to send tokens from
   * @param _to address The address which you want to transfer to
   * @param _value uint256 the amount of tokens to be transferred
   */
  function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balanceOf(_from));
    require(_value <= allowance(_from, msg.sender));
    
    setBalanceOf(_from, balanceOf(_from).sub(_value));
    setBalanceOf(_to, balanceOf(_to).add(_value));
    setAllowance(_from, msg.sender, allowance(_from, msg.sender).sub(_value));
    emit Transfer(_from, _to, _value);
    return true;
  }

  /**
   * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
   *
   * Beware that changing an allowance with this method brings the risk that someone may use both the old
   * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
   * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint256 _value) public returns (bool) {
    setAllowance(msg.sender, _spender, _value);
    emit Approval(msg.sender, _spender, _value);
    return true;
  }

  /**
   * @dev Increase the amount of tokens that an owner allowed to a spender.
   *
   * approve should be called when allowed[_spender] == 0. To increment
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _addedValue The amount of tokens to increase the allowance by.
   */
  function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
    setAllowance(msg.sender, _spender, allowance(msg.sender, _spender).add(_addedValue));
    emit Approval(msg.sender, _spender, allowance(msg.sender, _spender));
    return true;
  }

  /**
   * @dev Decrease the amount of tokens that an owner allowed to a spender.
   *
   * approve should be called when allowed[_spender] == 0. To decrement
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _subtractedValue The amount of tokens to decrease the allowance by.
   */
  function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
    uint oldValue = allowance(msg.sender, _spender);
    if (_subtractedValue > oldValue) {
      setAllowance(msg.sender, _spender, 0);
    } else {
      setAllowance(msg.sender, _spender, oldValue.sub(_subtractedValue));
    }
    emit Approval(msg.sender, _spender, allowance(msg.sender, _spender));
    return true;
  }


  /**
   * @dev Decrease the amount of tokens that an owner allowed to a spender.
   *
   * Issuer can only issue tokens up to the lesser of assetsOnDeposit and
   * assetsCertified.  This prevents issuing uncertified tokens and ensures
   * that every token issued has exactly one unit of the asset backing it.
   * @param _units Total amount of additional tokens to issue
   */
  function issueTokensForAssets( uint256 _units ) public onlyIssuer {

    uint256 newSupply_ = totalSupply().add(_units);

    // Find the greater of assetsOnDeposit and assetsCertified
    uint256 limit_ = 0;
    if ( assetsOnDeposit() > assetsCertified() )
      limit_ = assetsOnDeposit();
    else
      limit_ = assetsCertified();

    // the new supply can't be larger than our issuance limit
    require( newSupply_ <= limit_ );

    // Increase the total supply
    increaseTotalSupply( _units );

    // Increase the issuer's balance
    setBalanceOf(issuer(), balanceOf(issuer()).add(_units));

    emit TokensIssued(issuer(), _units);
  }

}

// File: contracts/LD2Zero.sol

/// @title The LD2-style ERC20 token for LD2.zero
/// @author Steven Brendtro
contract LD2Zero is LD2Token {

  string public name = "LD2.zero";
  string public symbol = "XLDZ";
  // Decimals are stored in RocketStorage
  // uint8 public token.decimals = 18;

  /*** Constructor ***********/

  /// @dev LD2Zero constructor
  constructor(address _rocketStorageAddress) RocketBase(_rocketStorageAddress) public {
    // Set the decimals
    if(decimals() == 0) {
      rocketStorage.setUint(keccak256("token.decimals"),18);
    }
  }

  function decimals() public view returns (uint8) {
    return uint8(rocketStorage.getUint(keccak256("token.decimals")));
  }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"issuer","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_units","type":"uint256"}],"name":"increaseAssetsCertified","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newDepository","type":"address"}],"name":"setDepository","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_units","type":"uint256"}],"name":"releaseAssets","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_units","type":"uint256"}],"name":"issueTokensForAssets","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"auditor","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_units","type":"uint256"}],"name":"receiveAssets","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_units","type":"uint256"}],"name":"decreaseAssetsCertified","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"assetsOnDeposit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"assetsCertified","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newIssuer","type":"address"}],"name":"setIssuer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_total","type":"uint256"}],"name":"setAssetsOnDeposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"redemptionPaused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpauseRedemption","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pauseRedemption","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newAuditor","type":"address"}],"name":"setAuditor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_total","type":"uint256"}],"name":"setAssetsCertified","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"depository","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_rocketStorageAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"issuer","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokensIssued","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"depository","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"AssetsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"auditor","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"CertificationUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"PauseRedemption","type":"event"},{"anonymous":false,"inputs":[],"name":"UnpauseRedemption","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousIssuer","type":"address"},{"indexed":true,"name":"newIssuer","type":"address"}],"name":"IssuerTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousAuditor","type":"address"},{"indexed":true,"name":"newAuditor","type":"address"}],"name":"AuditorTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousDepository","type":"address"},{"indexed":true,"name":"newDepository","type":"address"}],"name":"DepositoryTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_newContractAddress","type":"address"},{"indexed":false,"name":"created","type":"uint256"}],"name":"ContractAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_oldContractAddress","type":"address"},{"indexed":true,"name":"_newContractAddress","type":"address"},{"indexed":false,"name":"created","type":"uint256"}],"name":"ContractUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]

608060405260008060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040805190810160405280600881526020017f4c44322e7a65726f000000000000000000000000000000000000000000000000815250600190805190602001906200009292919062000385565b506040805190810160405280600481526020017f584c445a0000000000000000000000000000000000000000000000000000000081525060029080519060200190620000e092919062000385565b50348015620000ee57600080fd5b5060405160208062003ee9833981018060405281019080805190602001909291905050508080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060006200017062000273640100000000026401000000009004565b60ff1614156200026c57600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a60405180807f746f6b656e2e646563696d616c73000000000000000000000000000000000000815250600e019050604051809103902060126040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b1580156200025257600080fd5b505af115801562000267573d6000803e3d6000fd5b505050505b5062000434565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f560405180807f746f6b656e2e646563696d616c73000000000000000000000000000000000000815250600e01905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156200034357600080fd5b505af115801562000358573d6000803e3d6000fd5b505050506040513d60208110156200036f57600080fd5b8101908080519060200190929190505050905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003c857805160ff1916838001178555620003f9565b82800160010185558215620003f9579182015b82811115620003f8578251825591602001919060010190620003db565b5b5090506200040891906200040c565b5090565b6200043191905b808211156200042d57600081600090555060010162000413565b5090565b90565b613aa580620004446000396000f30060806040526004361061018b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610190578063095ea7b31461022057806318160ddd146102855780631d143848146102b05780631d532a971461030757806323b872dd146103345780632f54bf6e146103b9578063313ce5671461041457806337472c4b146104455780633936e99a1461048857806339cef0b7146104b55780633ec045a6146104e25780634e98a5b31461053957806350116afb1461056657806352353e5b146105935780635445cbf3146105be57806354fd4d50146105e957806355cc4e571461061a5780635b5e7bbe1461065d578063661884631461068a57806370a08231146106ef57806373a95ddd146107465780638d044c061461077557806392bccb801461078c57806395d89b41146107a35780639f20325514610833578063a784d96914610876578063a9059cbb146108a3578063bedd12a514610908578063d73dd6231461095f578063dd62ed3e146109c4575b600080fd5b34801561019c57600080fd5b506101a5610a3b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101e55780820151818401526020810190506101ca565b50505050905090810190601f1680156102125780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022c57600080fd5b5061026b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ad9565b604051808215151515815260200191505060405180910390f35b34801561029157600080fd5b5061029a610b55565b6040518082815260200191505060405180910390f35b3480156102bc57600080fd5b506102c5610c64565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561031357600080fd5b5061033260048036038101908080359060200190929190505050610d73565b005b34801561034057600080fd5b5061039f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f12565b604051808215151515815260200191505060405180910390f35b3480156103c557600080fd5b506103fa600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061105c565b604051808215151515815260200191505060405180910390f35b34801561042057600080fd5b506104296111d8565b604051808260ff1660ff16815260200191505060405180910390f35b34801561045157600080fd5b50610486600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112e7565b005b34801561049457600080fd5b506104b3600480360381019080803590602001909291905050506114e0565b005b3480156104c157600080fd5b506104e06004803603810190808035906020019092919050505061179b565b005b3480156104ee57600080fd5b506104f76118d3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054557600080fd5b50610564600480360381019080803590602001909291905050506119e2565b005b34801561057257600080fd5b5061059160048036038101908080359060200190929190505050611b81565b005b34801561059f57600080fd5b506105a8611e3c565b6040518082815260200191505060405180910390f35b3480156105ca57600080fd5b506105d3611f4b565b6040518082815260200191505060405180910390f35b3480156105f557600080fd5b506105fe61205a565b604051808260ff1660ff16815260200191505060405180910390f35b34801561062657600080fd5b5061065b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061206c565b005b34801561066957600080fd5b5061068860048036038101908080359060200190929190505050612265565b005b34801561069657600080fd5b506106d5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612515565b604051808215151515815260200191505060405180910390f35b3480156106fb57600080fd5b50610730600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125d4565b6040518082815260200191505060405180910390f35b34801561075257600080fd5b5061075b612728565b604051808215151515815260200191505060405180910390f35b34801561078157600080fd5b5061078a612837565b005b34801561079857600080fd5b506107a16129aa565b005b3480156107af57600080fd5b506107b8612b1e565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107f85780820151818401526020810190506107dd565b50505050905090810190601f1680156108255780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561083f57600080fd5b50610874600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612bbc565b005b34801561088257600080fd5b506108a160048036038101908080359060200190929190505050612db5565b005b3480156108af57600080fd5b506108ee600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613065565b604051808215151515815260200191505060405180910390f35b34801561091457600080fd5b5061091d613170565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561096b57600080fd5b506109aa600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061327f565b604051808215151515815260200191505060405180910390f35b3480156109d057600080fd5b50610a25600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061331f565b6040518082815260200191505060405180910390f35b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ad15780601f10610aa657610100808354040283529160200191610ad1565b820191906000526020600020905b815481529060010190602001808311610ab457829003601f168201915b505050505081565b6000610ae63384846134b7565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f560405180807f746f6b656e2e746f74616c537570706c79000000000000000000000000000000815250601101905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610c2457600080fd5b505af1158015610c38573d6000803e3d6000fd5b505050506040513d6020811015610c4e57600080fd5b8101908080519060200190929190505050905090565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321f8a72160405180807f746f6b656e2e6973737565720000000000000000000000000000000000000000815250600c01905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610d3357600080fd5b505af1158015610d47573d6000803e3d6000fd5b505050506040513d6020811015610d5d57600080fd5b8101908080519060200190929190505050905090565b6000610d7d6118d3565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610db657600080fd5b610dd082610dc2611f4b565b61363090919063ffffffff16565b9050600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a60405180807f6973737561626c652e617373657473436572746966696564000000000000000081525060180190506040518091039020836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b158015610ea857600080fd5b505af1158015610ebc573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f8d00389a45f384d8402408f5a7399a45c8743b03397ea1066c7f39ba821acbd3826040518082815260200191505060405180910390a25050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610f4f57600080fd5b610f58846125d4565b8211151515610f6657600080fd5b610f70843361331f565b8211151515610f7e57600080fd5b610fa284610f9d84610f8f886125d4565b61364e90919063ffffffff16565b613667565b610fc683610fc184610fb3876125d4565b61363090919063ffffffff16565b613667565b610fec8433610fe785610fd9893361331f565b61364e90919063ffffffff16565b6134b7565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ae1cfca8360405180807f6163636573732e726f6c65000000000000000000000000000000000000000000815250600b01807f6f776e65720000000000000000000000000000000000000000000000000000008152506005018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561119657600080fd5b505af11580156111aa573d6000803e3d6000fd5b505050506040513d60208110156111c057600080fd5b81019080805190602001909291905050509050919050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f560405180807f746f6b656e2e646563696d616c73000000000000000000000000000000000000815250600e01905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156112a757600080fd5b505af11580156112bb573d6000803e3d6000fd5b505050506040513d60208110156112d157600080fd5b8101908080519060200190929190505050905090565b6113266040805190810160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152503361379c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561136257600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ca446dd960405180807f746f6b656e2e6465706f7369746f72790000000000000000000000000000000081525060100190506040518091039020836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561146457600080fd5b505af1158015611478573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff1661149b613170565b73ffffffffffffffffffffffffffffffffffffffff167fb5259c65bbd39a8ca451c496a6a75cc125e30888d4e5cb42e082cbf870f7f98460405160405180910390a350565b6000806114eb613170565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561152457600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f560405180807f746f6b656e2e746f74616c537570706c79000000000000000000000000000000815250601101905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156115f257600080fd5b505af1158015611606573d6000803e3d6000fd5b505050506040513d602081101561161c57600080fd5b810190808051906020019092919050505091506116498361163b611e3c565b61364e90919063ffffffff16565b905081811015151561165a57600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a60405180807f6973737561626c652e6173736574734f6e4465706f736974000000000000000081525060180190506040518091039020836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b15801561173057600080fd5b505af1158015611744573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f060ad790703fe32f48013c83cae8b7561f23bfa2b6b256a9e5f047bcab9846ff826040518082815260200191505060405180910390a2505050565b6000806117a6610c64565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117df57600080fd5b6117f9836117eb610b55565b61363090919063ffffffff16565b915060009050611807611f4b565b61180f611e3c565b11156118245761181d611e3c565b905061182f565b61182c611f4b565b90505b80821115151561183e57600080fd5b611847836137bc565b611879611852610c64565b61187485611866611861610c64565b6125d4565b61363090919063ffffffff16565b613667565b611881610c64565b73ffffffffffffffffffffffffffffffffffffffff167f21d739f160a7464fddaac4a1d1517d84e76b75618a053943b345c408c4160fe0846040518082815260200191505060405180910390a2505050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321f8a72160405180807f746f6b656e2e61756469746f7200000000000000000000000000000000000000815250600d01905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156119a257600080fd5b505af11580156119b6573d6000803e3d6000fd5b505050506040513d60208110156119cc57600080fd5b8101908080519060200190929190505050905090565b60006119ec613170565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a2557600080fd5b611a3f82611a31611e3c565b61363090919063ffffffff16565b9050600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a60405180807f6973737561626c652e6173736574734f6e4465706f736974000000000000000081525060180190506040518091039020836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b158015611b1757600080fd5b505af1158015611b2b573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f060ad790703fe32f48013c83cae8b7561f23bfa2b6b256a9e5f047bcab9846ff826040518082815260200191505060405180910390a25050565b600080611b8c6118d3565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bc557600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f560405180807f746f6b656e2e746f74616c537570706c79000000000000000000000000000000815250601101905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015611c9357600080fd5b505af1158015611ca7573d6000803e3d6000fd5b505050506040513d6020811015611cbd57600080fd5b81019080805190602001909291905050509150611cea83611cdc611f4b565b61364e90919063ffffffff16565b9050818110151515611cfb57600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a60405180807f6973737561626c652e617373657473436572746966696564000000000000000081525060180190506040518091039020836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b158015611dd157600080fd5b505af1158015611de5573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f8d00389a45f384d8402408f5a7399a45c8743b03397ea1066c7f39ba821acbd3826040518082815260200191505060405180910390a2505050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f560405180807f6973737561626c652e6173736574734f6e4465706f7369740000000000000000815250601801905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015611f0b57600080fd5b505af1158015611f1f573d6000803e3d6000fd5b505050506040513d6020811015611f3557600080fd5b8101908080519060200190929190505050905090565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f560405180807f6973737561626c652e6173736574734365727469666965640000000000000000815250601801905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561201a57600080fd5b505af115801561202e573d6000803e3d6000fd5b505050506040513d602081101561204457600080fd5b8101908080519060200190929190505050905090565b6000809054906101000a900460ff1681565b6120ab6040805190810160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152503361379c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156120e757600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ca446dd960405180807f746f6b656e2e6973737565720000000000000000000000000000000000000000815250600c0190506040518091039020836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b1580156121e957600080fd5b505af11580156121fd573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff16612220610c64565b73ffffffffffffffffffffffffffffffffffffffff167fd7850b647d2d788d7d51865cb8181f56b7ee1fbab1a965018c2168bc9b2025cd60405160405180910390a350565b600061226f613170565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156122a857600080fd5b6122b0612728565b15156122bb57600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f560405180807f746f6b656e2e746f74616c537570706c79000000000000000000000000000000815250601101905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561238957600080fd5b505af115801561239d573d6000803e3d6000fd5b505050506040513d60208110156123b357600080fd5b810190808051906020019092919050505090508082101515156123d557600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a60405180807f6973737561626c652e6173736574734f6e4465706f736974000000000000000081525060180190506040518091039020846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b1580156124ab57600080fd5b505af11580156124bf573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f060ad790703fe32f48013c83cae8b7561f23bfa2b6b256a9e5f047bcab9846ff836040518082815260200191505060405180910390a25050565b600080612522338561331f565b90508083111561253d57612538338560006134b7565b61255b565b61255a3385612555868561364e90919063ffffffff16565b6134b7565b5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256125b4338861331f565b6040518082815260200191505060405180910390a3600191505092915050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f58360405180807f746f6b656e2e62616c616e636573000000000000000000000000000000000000815250600e018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156126e657600080fd5b505af11580156126fa573d6000803e3d6000fd5b505050506040513d602081101561271057600080fd5b81019080805190602001909291905050509050919050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ae1cfca60405180807f746f6b656e2e726564656d7074696f6e50617573656400000000000000000000815250601601905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156127f757600080fd5b505af115801561280b573d6000803e3d6000fd5b505050506040513d602081101561282157600080fd5b8101908080519060200190929190505050905090565b6128766040805190810160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152503361379c565b61287e612728565b151561288957600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663abfdcced60405180807f746f6b656e2e726564656d7074696f6e506175736564000000000000000000008152506016019050604051809103902060006040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018215151515815260200192505050600060405180830381600087803b15801561296457600080fd5b505af1158015612978573d6000803e3d6000fd5b505050507fbce743db9bf1569865d948ae209f4b31bdc56ae5ec378043db68b4fa9c7d357460405160405180910390a1565b6129e96040805190810160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152503361379c565b6129f1612728565b1515156129fd57600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663abfdcced60405180807f746f6b656e2e726564656d7074696f6e506175736564000000000000000000008152506016019050604051809103902060016040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018215151515815260200192505050600060405180830381600087803b158015612ad857600080fd5b505af1158015612aec573d6000803e3d6000fd5b505050507fb01a4065e58695e97210d46a2000a27c3294895b909a24c827d86bb0808d998a60405160405180910390a1565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612bb45780601f10612b8957610100808354040283529160200191612bb4565b820191906000526020600020905b815481529060010190602001808311612b9757829003601f168201915b505050505081565b612bfb6040805190810160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152503361379c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612c3757600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ca446dd960405180807f746f6b656e2e61756469746f7200000000000000000000000000000000000000815250600d0190506040518091039020836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b158015612d3957600080fd5b505af1158015612d4d573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff16612d706118d3565b73ffffffffffffffffffffffffffffffffffffffff167f702d4284a49e256c67224cbd6cc10ea64895d336988b4a2dccc6d827a8fb4d8260405160405180910390a350565b6000612dbf6118d3565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612df857600080fd5b612e00612728565b1515612e0b57600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f560405180807f746f6b656e2e746f74616c537570706c79000000000000000000000000000000815250601101905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015612ed957600080fd5b505af1158015612eed573d6000803e3d6000fd5b505050506040513d6020811015612f0357600080fd5b81019080805190602001909291905050509050808210151515612f2557600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a60405180807f6973737561626c652e617373657473436572746966696564000000000000000081525060180190506040518091039020846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b158015612ffb57600080fd5b505af115801561300f573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f8d00389a45f384d8402408f5a7399a45c8743b03397ea1066c7f39ba821acbd3836040518082815260200191505060405180910390a25050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156130a257600080fd5b6130ab336125d4565b82111515156130b957600080fd5b6130dd336130d8846130ca336125d4565b61364e90919063ffffffff16565b613667565b613101836130fc846130ee876125d4565b61363090919063ffffffff16565b613667565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321f8a72160405180807f746f6b656e2e6465706f7369746f727900000000000000000000000000000000815250601001905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561323f57600080fd5b505af1158015613253573d6000803e3d6000fd5b505050506040513d602081101561326957600080fd5b8101908080519060200190929190505050905090565b60006132a733846132a285613294338961331f565b61363090919063ffffffff16565b6134b7565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925613300338761331f565b6040518082815260200191505060405180910390a36001905092915050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f5848460405180807f746f6b656e2e616c6c6f77656400000000000000000000000000000000000000815250600d018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019250505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561347457600080fd5b505af1158015613488573d6000803e3d6000fd5b505050506040513d602081101561349e57600080fd5b8101908080519060200190929190505050905092915050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a848460405180807f746f6b656e2e616c6c6f77656400000000000000000000000000000000000000815250600d018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401925050506040518091039020836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b15801561361357600080fd5b505af1158015613627573d6000803e3d6000fd5b50505050505050565b600080828401905083811015151561364457fe5b8091505092915050565b600082821115151561365c57fe5b818303905092915050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a8360405180807f746f6b656e2e62616c616e636573000000000000000000000000000000000000815250600e018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040518091039020836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b15801561378057600080fd5b505af1158015613794573d6000803e3d6000fd5b505050505050565b600115156137aa83836138cf565b15151415156137b857600080fd5b5050565b60006137c6610b55565b90506137db828261363090919063ffffffff16565b9050600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a60405180807f746f6b656e2e746f74616c537570706c7900000000000000000000000000000081525060110190506040518091039020836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b1580156138b357600080fd5b505af11580156138c7573d6000803e3d6000fd5b505050505050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ae1cfca848460405180807f6163636573732e726f6c65000000000000000000000000000000000000000000815250600b0183805190602001908083835b60208310151561396d5780518252602082019150602081019050602083039250613948565b6001836020036101000a0380198251168184511680821785525050505050509050018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019250505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015613a3657600080fd5b505af1158015613a4a573d6000803e3d6000fd5b505050506040513d6020811015613a6057600080fd5b81019080805190602001909291905050509050929150505600a165627a7a7230582073ba48b577c606033328cba5d9b557f9f0563678c95115f31dd557fbf62d663400290000000000000000000000006816184f231aa6af7f959d99ec0ace5731ab33f0

Deployed Bytecode

0x60806040526004361061018b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610190578063095ea7b31461022057806318160ddd146102855780631d143848146102b05780631d532a971461030757806323b872dd146103345780632f54bf6e146103b9578063313ce5671461041457806337472c4b146104455780633936e99a1461048857806339cef0b7146104b55780633ec045a6146104e25780634e98a5b31461053957806350116afb1461056657806352353e5b146105935780635445cbf3146105be57806354fd4d50146105e957806355cc4e571461061a5780635b5e7bbe1461065d578063661884631461068a57806370a08231146106ef57806373a95ddd146107465780638d044c061461077557806392bccb801461078c57806395d89b41146107a35780639f20325514610833578063a784d96914610876578063a9059cbb146108a3578063bedd12a514610908578063d73dd6231461095f578063dd62ed3e146109c4575b600080fd5b34801561019c57600080fd5b506101a5610a3b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101e55780820151818401526020810190506101ca565b50505050905090810190601f1680156102125780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022c57600080fd5b5061026b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ad9565b604051808215151515815260200191505060405180910390f35b34801561029157600080fd5b5061029a610b55565b6040518082815260200191505060405180910390f35b3480156102bc57600080fd5b506102c5610c64565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561031357600080fd5b5061033260048036038101908080359060200190929190505050610d73565b005b34801561034057600080fd5b5061039f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f12565b604051808215151515815260200191505060405180910390f35b3480156103c557600080fd5b506103fa600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061105c565b604051808215151515815260200191505060405180910390f35b34801561042057600080fd5b506104296111d8565b604051808260ff1660ff16815260200191505060405180910390f35b34801561045157600080fd5b50610486600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112e7565b005b34801561049457600080fd5b506104b3600480360381019080803590602001909291905050506114e0565b005b3480156104c157600080fd5b506104e06004803603810190808035906020019092919050505061179b565b005b3480156104ee57600080fd5b506104f76118d3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054557600080fd5b50610564600480360381019080803590602001909291905050506119e2565b005b34801561057257600080fd5b5061059160048036038101908080359060200190929190505050611b81565b005b34801561059f57600080fd5b506105a8611e3c565b6040518082815260200191505060405180910390f35b3480156105ca57600080fd5b506105d3611f4b565b6040518082815260200191505060405180910390f35b3480156105f557600080fd5b506105fe61205a565b604051808260ff1660ff16815260200191505060405180910390f35b34801561062657600080fd5b5061065b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061206c565b005b34801561066957600080fd5b5061068860048036038101908080359060200190929190505050612265565b005b34801561069657600080fd5b506106d5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612515565b604051808215151515815260200191505060405180910390f35b3480156106fb57600080fd5b50610730600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125d4565b6040518082815260200191505060405180910390f35b34801561075257600080fd5b5061075b612728565b604051808215151515815260200191505060405180910390f35b34801561078157600080fd5b5061078a612837565b005b34801561079857600080fd5b506107a16129aa565b005b3480156107af57600080fd5b506107b8612b1e565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107f85780820151818401526020810190506107dd565b50505050905090810190601f1680156108255780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561083f57600080fd5b50610874600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612bbc565b005b34801561088257600080fd5b506108a160048036038101908080359060200190929190505050612db5565b005b3480156108af57600080fd5b506108ee600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613065565b604051808215151515815260200191505060405180910390f35b34801561091457600080fd5b5061091d613170565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561096b57600080fd5b506109aa600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061327f565b604051808215151515815260200191505060405180910390f35b3480156109d057600080fd5b50610a25600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061331f565b6040518082815260200191505060405180910390f35b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ad15780601f10610aa657610100808354040283529160200191610ad1565b820191906000526020600020905b815481529060010190602001808311610ab457829003601f168201915b505050505081565b6000610ae63384846134b7565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f560405180807f746f6b656e2e746f74616c537570706c79000000000000000000000000000000815250601101905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610c2457600080fd5b505af1158015610c38573d6000803e3d6000fd5b505050506040513d6020811015610c4e57600080fd5b8101908080519060200190929190505050905090565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321f8a72160405180807f746f6b656e2e6973737565720000000000000000000000000000000000000000815250600c01905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610d3357600080fd5b505af1158015610d47573d6000803e3d6000fd5b505050506040513d6020811015610d5d57600080fd5b8101908080519060200190929190505050905090565b6000610d7d6118d3565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610db657600080fd5b610dd082610dc2611f4b565b61363090919063ffffffff16565b9050600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a60405180807f6973737561626c652e617373657473436572746966696564000000000000000081525060180190506040518091039020836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b158015610ea857600080fd5b505af1158015610ebc573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f8d00389a45f384d8402408f5a7399a45c8743b03397ea1066c7f39ba821acbd3826040518082815260200191505060405180910390a25050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610f4f57600080fd5b610f58846125d4565b8211151515610f6657600080fd5b610f70843361331f565b8211151515610f7e57600080fd5b610fa284610f9d84610f8f886125d4565b61364e90919063ffffffff16565b613667565b610fc683610fc184610fb3876125d4565b61363090919063ffffffff16565b613667565b610fec8433610fe785610fd9893361331f565b61364e90919063ffffffff16565b6134b7565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ae1cfca8360405180807f6163636573732e726f6c65000000000000000000000000000000000000000000815250600b01807f6f776e65720000000000000000000000000000000000000000000000000000008152506005018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561119657600080fd5b505af11580156111aa573d6000803e3d6000fd5b505050506040513d60208110156111c057600080fd5b81019080805190602001909291905050509050919050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f560405180807f746f6b656e2e646563696d616c73000000000000000000000000000000000000815250600e01905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156112a757600080fd5b505af11580156112bb573d6000803e3d6000fd5b505050506040513d60208110156112d157600080fd5b8101908080519060200190929190505050905090565b6113266040805190810160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152503361379c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561136257600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ca446dd960405180807f746f6b656e2e6465706f7369746f72790000000000000000000000000000000081525060100190506040518091039020836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561146457600080fd5b505af1158015611478573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff1661149b613170565b73ffffffffffffffffffffffffffffffffffffffff167fb5259c65bbd39a8ca451c496a6a75cc125e30888d4e5cb42e082cbf870f7f98460405160405180910390a350565b6000806114eb613170565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561152457600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f560405180807f746f6b656e2e746f74616c537570706c79000000000000000000000000000000815250601101905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156115f257600080fd5b505af1158015611606573d6000803e3d6000fd5b505050506040513d602081101561161c57600080fd5b810190808051906020019092919050505091506116498361163b611e3c565b61364e90919063ffffffff16565b905081811015151561165a57600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a60405180807f6973737561626c652e6173736574734f6e4465706f736974000000000000000081525060180190506040518091039020836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b15801561173057600080fd5b505af1158015611744573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f060ad790703fe32f48013c83cae8b7561f23bfa2b6b256a9e5f047bcab9846ff826040518082815260200191505060405180910390a2505050565b6000806117a6610c64565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117df57600080fd5b6117f9836117eb610b55565b61363090919063ffffffff16565b915060009050611807611f4b565b61180f611e3c565b11156118245761181d611e3c565b905061182f565b61182c611f4b565b90505b80821115151561183e57600080fd5b611847836137bc565b611879611852610c64565b61187485611866611861610c64565b6125d4565b61363090919063ffffffff16565b613667565b611881610c64565b73ffffffffffffffffffffffffffffffffffffffff167f21d739f160a7464fddaac4a1d1517d84e76b75618a053943b345c408c4160fe0846040518082815260200191505060405180910390a2505050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321f8a72160405180807f746f6b656e2e61756469746f7200000000000000000000000000000000000000815250600d01905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156119a257600080fd5b505af11580156119b6573d6000803e3d6000fd5b505050506040513d60208110156119cc57600080fd5b8101908080519060200190929190505050905090565b60006119ec613170565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a2557600080fd5b611a3f82611a31611e3c565b61363090919063ffffffff16565b9050600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a60405180807f6973737561626c652e6173736574734f6e4465706f736974000000000000000081525060180190506040518091039020836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b158015611b1757600080fd5b505af1158015611b2b573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f060ad790703fe32f48013c83cae8b7561f23bfa2b6b256a9e5f047bcab9846ff826040518082815260200191505060405180910390a25050565b600080611b8c6118d3565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bc557600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f560405180807f746f6b656e2e746f74616c537570706c79000000000000000000000000000000815250601101905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015611c9357600080fd5b505af1158015611ca7573d6000803e3d6000fd5b505050506040513d6020811015611cbd57600080fd5b81019080805190602001909291905050509150611cea83611cdc611f4b565b61364e90919063ffffffff16565b9050818110151515611cfb57600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a60405180807f6973737561626c652e617373657473436572746966696564000000000000000081525060180190506040518091039020836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b158015611dd157600080fd5b505af1158015611de5573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f8d00389a45f384d8402408f5a7399a45c8743b03397ea1066c7f39ba821acbd3826040518082815260200191505060405180910390a2505050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f560405180807f6973737561626c652e6173736574734f6e4465706f7369740000000000000000815250601801905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015611f0b57600080fd5b505af1158015611f1f573d6000803e3d6000fd5b505050506040513d6020811015611f3557600080fd5b8101908080519060200190929190505050905090565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f560405180807f6973737561626c652e6173736574734365727469666965640000000000000000815250601801905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561201a57600080fd5b505af115801561202e573d6000803e3d6000fd5b505050506040513d602081101561204457600080fd5b8101908080519060200190929190505050905090565b6000809054906101000a900460ff1681565b6120ab6040805190810160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152503361379c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156120e757600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ca446dd960405180807f746f6b656e2e6973737565720000000000000000000000000000000000000000815250600c0190506040518091039020836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b1580156121e957600080fd5b505af11580156121fd573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff16612220610c64565b73ffffffffffffffffffffffffffffffffffffffff167fd7850b647d2d788d7d51865cb8181f56b7ee1fbab1a965018c2168bc9b2025cd60405160405180910390a350565b600061226f613170565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156122a857600080fd5b6122b0612728565b15156122bb57600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f560405180807f746f6b656e2e746f74616c537570706c79000000000000000000000000000000815250601101905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561238957600080fd5b505af115801561239d573d6000803e3d6000fd5b505050506040513d60208110156123b357600080fd5b810190808051906020019092919050505090508082101515156123d557600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a60405180807f6973737561626c652e6173736574734f6e4465706f736974000000000000000081525060180190506040518091039020846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b1580156124ab57600080fd5b505af11580156124bf573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f060ad790703fe32f48013c83cae8b7561f23bfa2b6b256a9e5f047bcab9846ff836040518082815260200191505060405180910390a25050565b600080612522338561331f565b90508083111561253d57612538338560006134b7565b61255b565b61255a3385612555868561364e90919063ffffffff16565b6134b7565b5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256125b4338861331f565b6040518082815260200191505060405180910390a3600191505092915050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f58360405180807f746f6b656e2e62616c616e636573000000000000000000000000000000000000815250600e018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156126e657600080fd5b505af11580156126fa573d6000803e3d6000fd5b505050506040513d602081101561271057600080fd5b81019080805190602001909291905050509050919050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ae1cfca60405180807f746f6b656e2e726564656d7074696f6e50617573656400000000000000000000815250601601905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156127f757600080fd5b505af115801561280b573d6000803e3d6000fd5b505050506040513d602081101561282157600080fd5b8101908080519060200190929190505050905090565b6128766040805190810160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152503361379c565b61287e612728565b151561288957600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663abfdcced60405180807f746f6b656e2e726564656d7074696f6e506175736564000000000000000000008152506016019050604051809103902060006040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018215151515815260200192505050600060405180830381600087803b15801561296457600080fd5b505af1158015612978573d6000803e3d6000fd5b505050507fbce743db9bf1569865d948ae209f4b31bdc56ae5ec378043db68b4fa9c7d357460405160405180910390a1565b6129e96040805190810160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152503361379c565b6129f1612728565b1515156129fd57600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663abfdcced60405180807f746f6b656e2e726564656d7074696f6e506175736564000000000000000000008152506016019050604051809103902060016040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018215151515815260200192505050600060405180830381600087803b158015612ad857600080fd5b505af1158015612aec573d6000803e3d6000fd5b505050507fb01a4065e58695e97210d46a2000a27c3294895b909a24c827d86bb0808d998a60405160405180910390a1565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612bb45780601f10612b8957610100808354040283529160200191612bb4565b820191906000526020600020905b815481529060010190602001808311612b9757829003601f168201915b505050505081565b612bfb6040805190810160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152503361379c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612c3757600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ca446dd960405180807f746f6b656e2e61756469746f7200000000000000000000000000000000000000815250600d0190506040518091039020836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b158015612d3957600080fd5b505af1158015612d4d573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff16612d706118d3565b73ffffffffffffffffffffffffffffffffffffffff167f702d4284a49e256c67224cbd6cc10ea64895d336988b4a2dccc6d827a8fb4d8260405160405180910390a350565b6000612dbf6118d3565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612df857600080fd5b612e00612728565b1515612e0b57600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f560405180807f746f6b656e2e746f74616c537570706c79000000000000000000000000000000815250601101905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015612ed957600080fd5b505af1158015612eed573d6000803e3d6000fd5b505050506040513d6020811015612f0357600080fd5b81019080805190602001909291905050509050808210151515612f2557600080fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a60405180807f6973737561626c652e617373657473436572746966696564000000000000000081525060180190506040518091039020846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b158015612ffb57600080fd5b505af115801561300f573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f8d00389a45f384d8402408f5a7399a45c8743b03397ea1066c7f39ba821acbd3836040518082815260200191505060405180910390a25050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156130a257600080fd5b6130ab336125d4565b82111515156130b957600080fd5b6130dd336130d8846130ca336125d4565b61364e90919063ffffffff16565b613667565b613101836130fc846130ee876125d4565b61363090919063ffffffff16565b613667565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321f8a72160405180807f746f6b656e2e6465706f7369746f727900000000000000000000000000000000815250601001905060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561323f57600080fd5b505af1158015613253573d6000803e3d6000fd5b505050506040513d602081101561326957600080fd5b8101908080519060200190929190505050905090565b60006132a733846132a285613294338961331f565b61363090919063ffffffff16565b6134b7565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925613300338761331f565b6040518082815260200191505060405180910390a36001905092915050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd02d0f5848460405180807f746f6b656e2e616c6c6f77656400000000000000000000000000000000000000815250600d018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019250505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561347457600080fd5b505af1158015613488573d6000803e3d6000fd5b505050506040513d602081101561349e57600080fd5b8101908080519060200190929190505050905092915050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a848460405180807f746f6b656e2e616c6c6f77656400000000000000000000000000000000000000815250600d018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401925050506040518091039020836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b15801561361357600080fd5b505af1158015613627573d6000803e3d6000fd5b50505050505050565b600080828401905083811015151561364457fe5b8091505092915050565b600082821115151561365c57fe5b818303905092915050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a8360405180807f746f6b656e2e62616c616e636573000000000000000000000000000000000000815250600e018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040518091039020836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b15801561378057600080fd5b505af1158015613794573d6000803e3d6000fd5b505050505050565b600115156137aa83836138cf565b15151415156137b857600080fd5b5050565b60006137c6610b55565b90506137db828261363090919063ffffffff16565b9050600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a60405180807f746f6b656e2e746f74616c537570706c7900000000000000000000000000000081525060110190506040518091039020836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b1580156138b357600080fd5b505af11580156138c7573d6000803e3d6000fd5b505050505050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ae1cfca848460405180807f6163636573732e726f6c65000000000000000000000000000000000000000000815250600b0183805190602001908083835b60208310151561396d5780518252602082019150602081019050602083039250613948565b6001836020036101000a0380198251168184511680821785525050505050509050018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019250505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015613a3657600080fd5b505af1158015613a4a573d6000803e3d6000fd5b505050506040513d6020811015613a6057600080fd5b81019080805190602001909291905050509050929150505600a165627a7a7230582073ba48b577c606033328cba5d9b557f9f0563678c95115f31dd557fbf62d66340029

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

0000000000000000000000006816184f231aa6af7f959d99ec0ace5731ab33f0

-----Decoded View---------------
Arg [0] : _rocketStorageAddress (address): 0x6816184F231AA6af7f959d99ec0ace5731AB33F0

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000006816184f231aa6af7f959d99ec0ace5731ab33f0


Swarm Source

bzzr://73ba48b577c606033328cba5d9b557f9f0563678c95115f31dd557fbf62d6634

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.