Sponsored Link:  ConnectJob App, the Uber of Service, launches its awesome ICO.
Contract Overview | CoinLionTokenSale
ETH Balance: 0 Ether
ETH USD Value: $0
No Of Transactions: 2337 txns
Token Tracker 0x2167fb82309cf76513e83b25123f8b0559d6b48f
Misc  
   
Address Watch Add To Watch List
Contract Creator 0x1515a52e95099057477d2b0ac925c2bb73b629c6at txn 0x4744a974a78ca7c01fdcd5cac9f4ec0a3d284d9747780df1dac4d446941b629e
Token Tracker
  Latest 25 txns from a total Of 2337 transactions View All

TxHash Age From To Value [TxFee]
0x466069a67ded3a1db41791deba88a5a09b1c83ab68fc4cb779bd98982bb8102513 mins ago0x87a8bf0b2889e47eb19f1101fb188f528ca3e049  IN  CoinLionTokenSale1 Ether0.0106131
0xa5d2233a215e7938d5bd5e5104120ed3604f7d2d7bb676529eac060bccdcc91616 mins ago0x676f7a87ce85bb2805bf773ba260de578659e292  IN  CoinLionTokenSale0.5 Ether0.0106131
0xe502492749259db9def2e63a1a45c596ece605d15dae9d72250a5cc2b0890acf30 mins ago0xd0bade3b0bb966ad64344d47f2f7210cfac19b57  IN  CoinLionTokenSale0.1 Ether0.00884425
0x3a25986c6ccfb45368653639f505b13df93d776322814445df1e95d35be7f41841 mins ago0x27fe4cba170008e11c58312da7def50efbe9c82b  IN  CoinLionTokenSale3 Ether0.00823355
0xe3d183dcd96c2e34235eb7d77c91031e05543dcf035d91211f012b5c77d20b8552 mins ago0xbb932c011eeee401f4894d9cb99ec94df4626bfa  IN  CoinLionTokenSale0.98741081 Ether0.0076002
0xbdb22a964ccde057595f8bc53df62dc3b2f1be4a1ee99495672d07b97401a74a1 hr 1 min ago0xbb932c011eeee401f4894d9cb99ec94df4626bfa  IN  CoinLionTokenSale0.75069678 Ether0.0106131
0x28751dcc6bbff14eb9134ed48f1a0e31959570a2ce64b57b11bc5744a3c564521 hr 17 mins ago0x10e285432ff068b4e8315b793be89b903a04113c  IN  CoinLionTokenSale0.75 Ether0.003714585
0xd1950172abc9d1b921ec81fa7391c2c0eaf00baf238a7ba809b759290986831b1 hr 22 mins ago0x27fe4cba170008e11c58312da7def50efbe9c82b  IN  CoinLionTokenSale1 Ether0.011497525
0xef96d9c9fa90b123c65665e3fbae370734bd113cecaf2b4eab85fcd66886d9651 hr 29 mins ago0xe839f868b193982767b681b9d20733030a5401ac  IN  CoinLionTokenSale2 Ether0.007252285
0x10eea244038655f4d592863f70c6c663f888d9f968386ec4a3f708d7a19bd4d51 hr 56 mins ago0x5c9ea2f2658ee00347ee0f8fb3fb419cdcf81496  IN  CoinLionTokenSale0.25 Ether0.003714585
0x9f32283ef6eaec249e458418a32a18af1d0a3912880cf9cdf58c4c41a7f55cea2 hrs 5 mins ago0x5d2a49c147b12a15dab9fc200a4b22504f18f8ca  IN  CoinLionTokenSale0.1 Ether0.0063335
0x6a679cb5919f43d836300cbd6ccc1668daa42fa3917f059be82765cfdc09ba9b3 hrs 36 mins ago0x986619494de5c18a34ceceb9575a004d0d545c19  IN  CoinLionTokenSale1 Ether0.0106131
0x379417e57f926977ff29e944df4efdd40934ff632e132c19cd4af2c122935ce24 hrs 28 mins ago0x8bf39989de2749a447dd4dfe4d020b6c6dc4539a  IN  CoinLionTokenSale4 Ether0.0063335
0x16eb5a2bdfae7dbca41153cebdecfdae0ebadf866efd5838459878980b54c0c86 hrs 56 mins ago0xc244d86e676bc942ee0599de3e3e0197527ade42  IN  CoinLionTokenSale0.5 Ether0.0106131
0xf2f921912ed9475b2ee8d1ae6dc3079b62f88d4de9494b3b0d66831946c18c057 hrs 7 mins ago0x149489e85db36e666b178785e3174f3e9f9223f0  IN  CoinLionTokenSale1 Ether0.0106131
0xfd88af8638ef7b1b39a1693e975f27fcde643163eb76f60c56224f27307174157 hrs 22 mins ago0x9a205abe8c30c33719867238cdd8241c8d3bff9d  IN  CoinLionTokenSale0.1 Ether0.007252285
0x7bf812b77341fdda2a05f5c37df30abf6a673cf6e5f360cc0408d2cbab559ae47 hrs 28 mins ago0x9a205abe8c30c33719867238cdd8241c8d3bff9d  IN  CoinLionTokenSale0.1 Ether0.000861
0x8c0533b3171ca780fc9d21b676997b97fe8010fc5c49d90da6c4a8a1e2f76cbc7 hrs 37 mins ago0xb56e3589bbc9492f8169653b44a70a32c6072e2a  IN  CoinLionTokenSale0.279667685 Ether0.0106131
0x5540bb9a380b12ccfabf4fc33df56c949e8881d84ad3c5912a8dbcd42d2fa2338 hrs 50 mins ago0x05f6e51e91565f7df28f8a5b89e159b6971746be  IN  CoinLionTokenSale4.066 Ether0.0106131
0x42811ca4b2293bfcc2add166158ab77c480da3b708485385f67982b9f3bc0ddb11 hrs 12 mins ago0x5d2a49c147b12a15dab9fc200a4b22504f18f8ca  IN  CoinLionTokenSale0.1 Ether0.006190975
0xd39f04685ebcbba5910798d8d2b6c8ee22f6793c762ad89454636f9b2ed00e6811 hrs 23 mins ago0xf84f7c75c7161c23a109b7195ac0bbfc36a52144  IN  CoinLionTokenSale0.5 Ether0.00696685
0x6aaca45c2e2bb28de4ed5d17c10ff5006d5f139ea35e22e638fbbd8c6c9209c011 hrs 23 mins ago0xf84f7c75c7161c23a109b7195ac0bbfc36a52144  IN  CoinLionTokenSale0.5 Ether0.00884425
0x81f5016ed24560705bd498d07521ab8a91b1590ab56712d86068ab1764c893f212 hrs 53 mins ago0x27b3b854da1452f70ea4a329b766937a00d3e275  IN  CoinLionTokenSale0.5 Ether0.0106131
0xffa46ad08a2a359a4383288305606c81ec1c2455e49690522600a6256f576c7f13 hrs 21 mins ago0xe6766e7160257707c46138aa96a68e13c5215dbc  IN  CoinLionTokenSale1.5 Ether0.0101336
0xea6411ba47c31b049dbadf71a2212453e16682032313f18d831725724136f18414 hrs 34 mins ago0xe6766e7160257707c46138aa96a68e13c5215dbc  IN  CoinLionTokenSale1.5 Ether0.0141508
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
  Latest 25 Internal Txns, Click here to View More View All
ParentTxHash Block Age From To Value
0x466069a67ded3a1db41791deba88a5a09b1c83ab68fc4cb779bd98982bb81025495986913 mins ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa51 Ether
0xa5d2233a215e7938d5bd5e5104120ed3604f7d2d7bb676529eac060bccdcc916495985716 mins ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa50.5 Ether
0xe502492749259db9def2e63a1a45c596ece605d15dae9d72250a5cc2b0890acf495980730 mins ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa50.1 Ether
0x3a25986c6ccfb45368653639f505b13df93d776322814445df1e95d35be7f418495976241 mins ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa53 Ether
0xe3d183dcd96c2e34235eb7d77c91031e05543dcf035d91211f012b5c77d20b85495971652 mins ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa50.98741081 Ether
0xbdb22a964ccde057595f8bc53df62dc3b2f1be4a1ee99495672d07b97401a74a49596811 hr 1 min ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa50.75069678 Ether
0x28751dcc6bbff14eb9134ed48f1a0e31959570a2ce64b57b11bc5744a3c5645249596141 hr 17 mins ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa50.75 Ether
0xd1950172abc9d1b921ec81fa7391c2c0eaf00baf238a7ba809b759290986831b49595881 hr 22 mins ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa51 Ether
0xef96d9c9fa90b123c65665e3fbae370734bd113cecaf2b4eab85fcd66886d96549595561 hr 29 mins ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa52 Ether
0x10eea244038655f4d592863f70c6c663f888d9f968386ec4a3f708d7a19bd4d549594391 hr 56 mins ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa50.25 Ether
0x9f32283ef6eaec249e458418a32a18af1d0a3912880cf9cdf58c4c41a7f55cea49594022 hrs 5 mins ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa50.1 Ether
0x6a679cb5919f43d836300cbd6ccc1668daa42fa3917f059be82765cfdc09ba9b49590223 hrs 36 mins ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa51 Ether
0x379417e57f926977ff29e944df4efdd40934ff632e132c19cd4af2c122935ce249588234 hrs 28 mins ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa54 Ether
0x16eb5a2bdfae7dbca41153cebdecfdae0ebadf866efd5838459878980b54c0c849582486 hrs 56 mins ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa50.5 Ether
0xf2f921912ed9475b2ee8d1ae6dc3079b62f88d4de9494b3b0d66831946c18c0549582077 hrs 7 mins ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa51 Ether
0xfd88af8638ef7b1b39a1693e975f27fcde643163eb76f60c56224f273071741549581377 hrs 22 mins ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa50.1 Ether
0x8c0533b3171ca780fc9d21b676997b97fe8010fc5c49d90da6c4a8a1e2f76cbc49580807 hrs 37 mins ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa50.279667685 Ether
0x5540bb9a380b12ccfabf4fc33df56c949e8881d84ad3c5912a8dbcd42d2fa23349577858 hrs 50 mins ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa54.066 Ether
0x42811ca4b2293bfcc2add166158ab77c480da3b708485385f67982b9f3bc0ddb495720611 hrs 12 mins ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa50.1 Ether
0xd39f04685ebcbba5910798d8d2b6c8ee22f6793c762ad89454636f9b2ed00e68495716211 hrs 23 mins ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa50.5 Ether
0x6aaca45c2e2bb28de4ed5d17c10ff5006d5f139ea35e22e638fbbd8c6c9209c0495715611 hrs 23 mins ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa50.5 Ether
0x81f5016ed24560705bd498d07521ab8a91b1590ab56712d86068ab1764c893f2495680512 hrs 53 mins ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa50.5 Ether
0xffa46ad08a2a359a4383288305606c81ec1c2455e49690522600a6256f576c7f495667813 hrs 21 mins ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa51.5 Ether
0xea6411ba47c31b049dbadf71a2212453e16682032313f18d831725724136f184495638414 hrs 34 mins ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa51.5 Ether
0x5b1efb327af23a40bae8f128aab46032913757eb7a79291e9420cb9c18bdb230495626915 hrs 2 mins ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa51.465 Ether
[ Download CSV Export  ] 
Warning: The compiled contract might be susceptible to ZeroFunctionSelector (very low-severity) Solidity compiler bugs.

Contract Source Code Verified
Contract Name: MintedTokenCappedCrowdsale
Compiler Version: v0.4.16+commit.d7661dd9
Optimization Enabled: Yes
Runs (Optimiser):  500



  Contract Source Code   Find Similiar Contracts
/**
 * This smart contract code is Copyright 2017 TokenMarket Ltd. For more information see https://tokenmarket.net
 *
 * Licensed under the Apache License, version 2.0: https://github.com/TokenMarketNet/ico/blob/master/LICENSE.txt
 */


/**
 * This smart contract code is Copyright 2017 TokenMarket Ltd. For more information see https://tokenmarket.net
 *
 * Licensed under the Apache License, version 2.0: https://github.com/TokenMarketNet/ico/blob/master/LICENSE.txt
 */


/**
 * This smart contract code is Copyright 2017 TokenMarket Ltd. For more information see https://tokenmarket.net
 *
 * Licensed under the Apache License, version 2.0: https://github.com/TokenMarketNet/ico/blob/master/LICENSE.txt
 */


/**
 * Safe unsigned safe math.
 *
 * https://blog.aragon.one/library-driven-development-in-solidity-2bebcaf88736#.750gwtwli
 *
 * Originally from https://raw.githubusercontent.com/AragonOne/zeppelin-solidity/master/contracts/SafeMathLib.sol
 *
 * Maintained here until merged to mainline zeppelin-solidity.
 *
 */
library SafeMathLib {

  function times(uint a, uint b) returns (uint) {
    uint c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function minus(uint a, uint b) returns (uint) {
    assert(b <= a);
    return a - b;
  }

  function plus(uint a, uint b) returns (uint) {
    uint c = a + b;
    assert(c>=a);
    return c;
  }

}

/**
 * This smart contract code is Copyright 2017 TokenMarket Ltd. For more information see https://tokenmarket.net
 *
 * Licensed under the Apache License, version 2.0: https://github.com/TokenMarketNet/ico/blob/master/LICENSE.txt
 */


/**
 * Interface for defining crowdsale pricing.
 */
contract PricingStrategy {

  /** Interface declaration. */
  function isPricingStrategy() public constant returns (bool) {
    return true;
  }

  /** Self check if all references are correctly set.
   *
   * Checks that pricing strategy matches crowdsale parameters.
   */
  function isSane(address crowdsale) public constant returns (bool) {
    return true;
  }

  /**
   * @dev Pricing tells if this is a presale purchase or not.
     @param purchaser Address of the purchaser
     @return False by default, true if a presale purchaser
   */
  function isPresalePurchase(address purchaser) public constant returns (bool) {
    return false;
  }

  /**
   * When somebody tries to buy tokens for X eth, calculate how many tokens they get.
   *
   *
   * @param value - What is the value of the transaction send in as wei
   * @param tokensSold - how much tokens have been sold this far
   * @param weiRaised - how much money has been raised this far in the main token sale - this number excludes presale
   * @param msgSender - who is the investor of this transaction
   * @param decimals - how many decimal units the token has
   * @return Amount of tokens the investor receives
   */
  function calculatePrice(uint value, uint weiRaised, uint tokensSold, address msgSender, uint decimals) public constant returns (uint tokenAmount);
}

/**
 * This smart contract code is Copyright 2017 TokenMarket Ltd. For more information see https://tokenmarket.net
 *
 * Licensed under the Apache License, version 2.0: https://github.com/TokenMarketNet/ico/blob/master/LICENSE.txt
 */


/**
 * Finalize agent defines what happens at the end of succeseful crowdsale.
 *
 * - Allocate tokens for founders, bounties and community
 * - Make tokens transferable
 * - etc.
 */
contract FinalizeAgent {

  function isFinalizeAgent() public constant returns(bool) {
    return true;
  }

  /** Return true if we can run finalizeCrowdsale() properly.
   *
   * This is a safety check function that doesn't allow crowdsale to begin
   * unless the finalizer has been set up properly.
   */
  function isSane() public constant returns (bool);

  /** Called once by crowdsale finalize() if the sale was success. */
  function finalizeCrowdsale();

}

/**
 * This smart contract code is Copyright 2017 TokenMarket Ltd. For more information see https://tokenmarket.net
 *
 * Licensed under the Apache License, version 2.0: https://github.com/TokenMarketNet/ico/blob/master/LICENSE.txt
 */






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



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


/**
 * A token that defines fractional units as decimals.
 */
contract FractionalERC20 is ERC20 {

  uint public decimals;

}

/**
 * This smart contract code is Copyright 2017 TokenMarket Ltd. For more information see https://tokenmarket.net
 *
 * Licensed under the Apache License, version 2.0: https://github.com/TokenMarketNet/ico/blob/master/LICENSE.txt
 */


/**
 * This smart contract code is Copyright 2017 TokenMarket Ltd. For more information see https://tokenmarket.net
 *
 * Licensed under the Apache License, version 2.0: https://github.com/TokenMarketNet/ico/blob/master/LICENSE.txt
 */




/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
  address public owner;


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  function Ownable() {
    owner = msg.sender;
  }


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


  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function transferOwnership(address newOwner) onlyOwner {
    require(newOwner != address(0));      
    owner = newOwner;
  }

}


/*
 * Haltable
 *
 * Abstract contract that allows children to implement an
 * emergency stop mechanism. Differs from Pausable by causing a throw when in halt mode.
 *
 *
 * Originally envisioned in FirstBlood ICO contract.
 */
contract Haltable is Ownable {
  bool public halted;

  modifier stopInEmergency {
    if (halted) throw;
    _;
  }

  modifier stopNonOwnersInEmergency {
    if (halted && msg.sender != owner) throw;
    _;
  }

  modifier onlyInEmergency {
    if (!halted) throw;
    _;
  }

  // called by the owner on emergency, triggers stopped state
  function halt() external onlyOwner {
    halted = true;
  }

  // called by the owner on end of emergency, returns to normal state
  function unhalt() external onlyOwner onlyInEmergency {
    halted = false;
  }

}







/**
 * Crowdsale state machine without buy functionality.
 *
 * Implements basic state machine logic, but leaves out all buy functions,
 * so that subclasses can implement their own buying logic.
 *
 *
 * For the default buy() implementation see Crowdsale.sol.
 */
contract CrowdsaleBase is Haltable {

  /* Max investment count when we are still allowed to change the multisig address */
  uint public MAX_INVESTMENTS_BEFORE_MULTISIG_CHANGE = 5;

  using SafeMathLib for uint;

  /* The token we are selling */
  FractionalERC20 public token;

  /* How we are going to price our offering */
  PricingStrategy public pricingStrategy;

  /* Post-success callback */
  FinalizeAgent public finalizeAgent;

  /* tokens will be transfered from this address */
  address public multisigWallet;

  /* if the funding goal is not reached, investors may withdraw their funds */
  uint public minimumFundingGoal;

  /* the UNIX timestamp start date of the crowdsale */
  uint public startsAt;

  /* the UNIX timestamp end date of the crowdsale */
  uint public endsAt;

  /* the number of tokens already sold through this contract*/
  uint public tokensSold = 0;

  /* How many wei of funding we have raised */
  uint public weiRaised = 0;

  /* Calculate incoming funds from presale contracts and addresses */
  uint public presaleWeiRaised = 0;

  /* How many distinct addresses have invested */
  uint public investorCount = 0;

  /* How much wei we have returned back to the contract after a failed crowdfund. */
  uint public loadedRefund = 0;

  /* How much wei we have given back to investors.*/
  uint public weiRefunded = 0;

  /* Has this crowdsale been finalized */
  bool public finalized;

  /** How much ETH each address has invested to this crowdsale */
  mapping (address => uint256) public investedAmountOf;

  /** How much tokens this crowdsale has credited for each investor address */
  mapping (address => uint256) public tokenAmountOf;

  /** Addresses that are allowed to invest even before ICO offical opens. For testing, for ICO partners, etc. */
  mapping (address => bool) public earlyParticipantWhitelist;

  /** This is for manul testing for the interaction from owner wallet. You can set it to any value and inspect this in blockchain explorer to see that crowdsale interaction works. */
  uint public ownerTestValue;

  /** State machine
   *
   * - Preparing: All contract initialization calls and variables have not been set yet
   * - Prefunding: We have not passed start time yet
   * - Funding: Active crowdsale
   * - Success: Minimum funding goal reached
   * - Failure: Minimum funding goal not reached before ending time
   * - Finalized: The finalized has been called and succesfully executed
   * - Refunding: Refunds are loaded on the contract for reclaim.
   */
  enum State{Unknown, Preparing, PreFunding, Funding, Success, Failure, Finalized, Refunding}

  // A new investment was made
  event Invested(address investor, uint weiAmount, uint tokenAmount, uint128 customerId);

  // Refund was processed for a contributor
  event Refund(address investor, uint weiAmount);

  // The rules were changed what kind of investments we accept
  event InvestmentPolicyChanged(bool newRequireCustomerId, bool newRequiredSignedAddress, address newSignerAddress);

  // Address early participation whitelist status changed
  event Whitelisted(address addr, bool status);

  // Crowdsale end time has been changed
  event EndsAtChanged(uint newEndsAt);

  State public testState;

  function CrowdsaleBase(address _token, PricingStrategy _pricingStrategy, address _multisigWallet, uint _start, uint _end, uint _minimumFundingGoal) {

    owner = msg.sender;

    token = FractionalERC20(_token);

    setPricingStrategy(_pricingStrategy);

    multisigWallet = _multisigWallet;
    if(multisigWallet == 0) {
        throw;
    }

    if(_start == 0) {
        throw;
    }

    startsAt = _start;

    if(_end == 0) {
        throw;
    }

    endsAt = _end;

    // Don't mess the dates
    if(startsAt >= endsAt) {
        throw;
    }

    // Minimum funding goal can be zero
    minimumFundingGoal = _minimumFundingGoal;
  }

  /**
   * Don't expect to just send in money and get tokens.
   */
  function() payable {
    throw;
  }

  /**
   * Make an investment.
   *
   * Crowdsale must be running for one to invest.
   * We must have not pressed the emergency brake.
   *
   * @param receiver The Ethereum address who receives the tokens
   * @param customerId (optional) UUID v4 to track the successful payments on the server side'
   *
   * @return tokenAmount How mony tokens were bought
   */
  function investInternal(address receiver, uint128 customerId) stopInEmergency internal returns(uint tokensBought) {

    // Determine if it's a good time to accept investment from this participant
    if(getState() == State.PreFunding) {
      // Are we whitelisted for early deposit
      if(!earlyParticipantWhitelist[receiver]) {
        throw;
      }
    } else if(getState() == State.Funding) {
      // Retail participants can only come in when the crowdsale is running
      // pass
    } else {
      // Unwanted state
      throw;
    }

    uint weiAmount = msg.value;

    // Account presale sales separately, so that they do not count against pricing tranches
    uint tokenAmount = pricingStrategy.calculatePrice(weiAmount, weiRaised - presaleWeiRaised, tokensSold, msg.sender, token.decimals());

    // Dust transaction
    require(tokenAmount != 0);

    if(investedAmountOf[receiver] == 0) {
       // A new investor
       investorCount++;
    }

    // Update investor
    investedAmountOf[receiver] = investedAmountOf[receiver].plus(weiAmount);
    tokenAmountOf[receiver] = tokenAmountOf[receiver].plus(tokenAmount);

    // Update totals
    weiRaised = weiRaised.plus(weiAmount);
    tokensSold = tokensSold.plus(tokenAmount);

    if(pricingStrategy.isPresalePurchase(receiver)) {
        presaleWeiRaised = presaleWeiRaised.plus(weiAmount);
    }

    // Check that we did not bust the cap
    require(!isBreakingCap(weiAmount, tokenAmount, weiRaised, tokensSold));

    assignTokens(receiver, tokenAmount);

    // Pocket the money, or fail the crowdsale if we for some reason cannot send the money to our multisig
    if(!multisigWallet.send(weiAmount)) throw;

    // Tell us invest was success
    Invested(receiver, weiAmount, tokenAmount, customerId);

    return tokenAmount;
  }

  /**
   * Finalize a succcesful crowdsale.
   *
   * The owner can triggre a call the contract that provides post-crowdsale actions, like releasing the tokens.
   */
  function finalize() public inState(State.Success) onlyOwner stopInEmergency {

    // Already finalized
    if(finalized) {
      throw;
    }

    // Finalizing is optional. We only call it if we are given a finalizing agent.
    if(address(finalizeAgent) != 0) {
      finalizeAgent.finalizeCrowdsale();
    }

    finalized = true;
  }

  /**
   * Allow to (re)set finalize agent.
   *
   * Design choice: no state restrictions on setting this, so that we can fix fat finger mistakes.
   */
  function setFinalizeAgent(FinalizeAgent addr) onlyOwner {
    finalizeAgent = addr;

    // Don't allow setting bad agent
    if(!finalizeAgent.isFinalizeAgent()) {
      throw;
    }
  }

  /**
   * Allow crowdsale owner to close early or extend the crowdsale.
   *
   * This is useful e.g. for a manual soft cap implementation:
   * - after X amount is reached determine manual closing
   *
   * This may put the crowdsale to an invalid state,
   * but we trust owners know what they are doing.
   *
   */
  function setEndsAt(uint time) onlyOwner {

    if(now > time) {
      throw; // Don't change past
    }

    if(startsAt > time) {
      throw; // Prevent human mistakes
    }

    endsAt = time;
    EndsAtChanged(endsAt);
  }

  /**
   * Allow to (re)set pricing strategy.
   *
   * Design choice: no state restrictions on the set, so that we can fix fat finger mistakes.
   */
  function setPricingStrategy(PricingStrategy _pricingStrategy) onlyOwner {
    pricingStrategy = _pricingStrategy;

    // Don't allow setting bad agent
    if(!pricingStrategy.isPricingStrategy()) {
      throw;
    }
  }

  /**
   * Allow to change the team multisig address in the case of emergency.
   *
   * This allows to save a deployed crowdsale wallet in the case the crowdsale has not yet begun
   * (we have done only few test transactions). After the crowdsale is going
   * then multisig address stays locked for the safety reasons.
   */
  function setMultisig(address addr) public onlyOwner {

    // Change
    if(investorCount > MAX_INVESTMENTS_BEFORE_MULTISIG_CHANGE) {
      throw;
    }

    multisigWallet = addr;
  }

  /**
   * Allow load refunds back on the contract for the refunding.
   *
   * The team can transfer the funds back on the smart contract in the case the minimum goal was not reached..
   */
  function loadRefund() public payable inState(State.Failure) {
    if(msg.value == 0) throw;
    loadedRefund = loadedRefund.plus(msg.value);
  }

  /**
   * Investors can claim refund.
   *
   * Note that any refunds from proxy buyers should be handled separately,
   * and not through this contract.
   */
  function refund() public inState(State.Refunding) {
    uint256 weiValue = investedAmountOf[msg.sender];
    if (weiValue == 0) throw;
    investedAmountOf[msg.sender] = 0;
    weiRefunded = weiRefunded.plus(weiValue);
    Refund(msg.sender, weiValue);
    if (!msg.sender.send(weiValue)) throw;
  }

  /**
   * @return true if the crowdsale has raised enough money to be a successful.
   */
  function isMinimumGoalReached() public constant returns (bool reached) {
    return weiRaised >= minimumFundingGoal;
  }

  /**
   * Check if the contract relationship looks good.
   */
  function isFinalizerSane() public constant returns (bool sane) {
    return finalizeAgent.isSane();
  }

  /**
   * Check if the contract relationship looks good.
   */
  function isPricingSane() public constant returns (bool sane) {
    return pricingStrategy.isSane(address(this));
  }

  /**
   * Crowdfund state machine management.
   *
   * We make it a function and do not assign the result to a variable, so there is no chance of the variable being stale.
   */
  function getState() public constant returns (State) {
    if(finalized) return State.Finalized;
    else if (address(finalizeAgent) == 0) return State.Preparing;
    else if (!finalizeAgent.isSane()) return State.Preparing;
    else if (!pricingStrategy.isSane(address(this))) return State.Preparing;
    else if (block.timestamp < startsAt) return State.PreFunding;
    else if (block.timestamp <= endsAt && !isCrowdsaleFull()) return State.Funding;
    else if (isMinimumGoalReached()) return State.Success;
    else if (!isMinimumGoalReached() && weiRaised > 0 && loadedRefund >= weiRaised) return State.Refunding;
    else return State.Failure;
  }

  /** This is for manual testing of multisig wallet interaction */
  function setOwnerTestValue(uint val) onlyOwner {
    ownerTestValue = val;
  }

  /**
   * Allow addresses to do early participation.
   *
   * TODO: Fix spelling error in the name
   */
  function setEarlyParicipantWhitelist(address addr, bool status) onlyOwner {
    earlyParticipantWhitelist[addr] = status;
    Whitelisted(addr, status);
  }


  /** Interface marker. */
  function isCrowdsale() public constant returns (bool) {
    return true;
  }

  //
  // Modifiers
  //

  /** Modified allowing execution only if the crowdsale is currently running.  */
  modifier inState(State state) {
    if(getState() != state) throw;
    _;
  }


  //
  // Abstract functions
  //

  /**
   * Check if the current invested breaks our cap rules.
   *
   *
   * The child contract must define their own cap setting rules.
   * We allow a lot of flexibility through different capping strategies (ETH, token count)
   * Called from invest().
   *
   * @param weiAmount The amount of wei the investor tries to invest in the current transaction
   * @param tokenAmount The amount of tokens we try to give to the investor in the current transaction
   * @param weiRaisedTotal What would be our total raised balance after this transaction
   * @param tokensSoldTotal What would be our total sold tokens count after this transaction
   *
   * @return true if taking this investment would break our cap rules
   */
  function isBreakingCap(uint weiAmount, uint tokenAmount, uint weiRaisedTotal, uint tokensSoldTotal) constant returns (bool limitBroken);

  /**
   * Check if the current crowdsale is full and we can no longer sell any tokens.
   */
  function isCrowdsaleFull() public constant returns (bool);

  /**
   * Create new tokens or transfer issued tokens to the investor depending on the cap model.
   */
  function assignTokens(address receiver, uint tokenAmount) internal;
}



/**
 * Abstract base contract for token sales with the default buy entry points.
 *
 * Handle
 * - start and end dates
 * - accepting investments
 * - minimum funding goal and refund
 * - various statistics during the crowdfund
 * - different pricing strategies
 * - different investment policies (require server side customer id, allow only whitelisted addresses)
 *
 * Does not Handle
 *
 * - Token allocation (minting vs. transfer)
 * - Cap rules
 *
 */
contract Crowdsale is CrowdsaleBase {

  /* Do we need to have unique contributor id for each customer */
  bool public requireCustomerId;

  /**
    * Do we verify that contributor has been cleared on the server side (accredited investors only).
    * This method was first used in FirstBlood crowdsale to ensure all contributors have accepted terms on sale (on the web).
    */
  bool public requiredSignedAddress;

  /* Server side address that signed allowed contributors (Ethereum addresses) that can participate the crowdsale */
  address public signerAddress;

  function Crowdsale(address _token, PricingStrategy _pricingStrategy, address _multisigWallet, uint _start, uint _end, uint _minimumFundingGoal) CrowdsaleBase(_token, _pricingStrategy, _multisigWallet, _start, _end, _minimumFundingGoal) {
  }

  /**
   * Preallocate tokens for the early investors.
   *
   * Preallocated tokens have been sold before the actual crowdsale opens.
   * This function mints the tokens and moves the crowdsale needle.
   *
   * Investor count is not handled; it is assumed this goes for multiple investors
   * and the token distribution happens outside the smart contract flow.
   *
   * No money is exchanged, as the crowdsale team already have received the payment.
   *
   * @param fullTokens tokens as full tokens - decimal places added internally
   * @param weiPrice Price of a single full token in wei
   *
   */
  function preallocate(address receiver, uint fullTokens, uint weiPrice) public onlyOwner {

    uint tokenAmount = fullTokens * 10**token.decimals();
    uint weiAmount = weiPrice * fullTokens; // This can be also 0, we give out tokens for free

    weiRaised = weiRaised.plus(weiAmount);
    tokensSold = tokensSold.plus(tokenAmount);

    investedAmountOf[receiver] = investedAmountOf[receiver].plus(weiAmount);
    tokenAmountOf[receiver] = tokenAmountOf[receiver].plus(tokenAmount);

    assignTokens(receiver, tokenAmount);

    // Tell us invest was success
    Invested(receiver, weiAmount, tokenAmount, 0);
  }

  /**
   * Allow anonymous contributions to this crowdsale.
   */
  function investWithSignedAddress(address addr, uint128 customerId, uint8 v, bytes32 r, bytes32 s) public payable {
     bytes32 hash = sha256(addr);
     if (ecrecover(hash, v, r, s) != signerAddress) throw;
     if(customerId == 0) throw;  // UUIDv4 sanity check
     investInternal(addr, customerId);
  }

  /**
   * Track who is the customer making the payment so we can send thank you email.
   */
  function investWithCustomerId(address addr, uint128 customerId) public payable {
    if(requiredSignedAddress) throw; // Crowdsale allows only server-side signed participants
    if(customerId == 0) throw;  // UUIDv4 sanity check
    investInternal(addr, customerId);
  }

  /**
   * Allow anonymous contributions to this crowdsale.
   */
  function invest(address addr) public payable {
    if(requireCustomerId) throw; // Crowdsale needs to track participants for thank you email
    if(requiredSignedAddress) throw; // Crowdsale allows only server-side signed participants
    investInternal(addr, 0);
  }

  /**
   * Invest to tokens, recognize the payer and clear his address.
   *
   */
  function buyWithSignedAddress(uint128 customerId, uint8 v, bytes32 r, bytes32 s) public payable {
    investWithSignedAddress(msg.sender, customerId, v, r, s);
  }

  /**
   * Invest to tokens, recognize the payer.
   *
   */
  function buyWithCustomerId(uint128 customerId) public payable {
    investWithCustomerId(msg.sender, customerId);
  }

  /**
   * The basic entry point to participate the crowdsale process.
   *
   * Pay for funding, get invested tokens back in the sender address.
   */
  function buy() public payable {
    invest(msg.sender);
  }

  /**
   * Buy tokens as generic fallback
   */
  function() payable {
    invest(msg.sender);
  }

  /**
   * Set policy do we need to have server-side customer ids for the investments.
   *
   */
  function setRequireCustomerId(bool value) onlyOwner {
    requireCustomerId = value;
    InvestmentPolicyChanged(requireCustomerId, requiredSignedAddress, signerAddress);
  }

  /**
   * Set policy if all investors must be cleared on the server side first.
   *
   * This is e.g. for the accredited investor clearing.
   *
   */
  function setRequireSignedAddress(bool value, address _signerAddress) onlyOwner {
    requiredSignedAddress = value;
    signerAddress = _signerAddress;
    InvestmentPolicyChanged(requireCustomerId, requiredSignedAddress, signerAddress);
  }

}

/**
 * This smart contract code is Copyright 2017 TokenMarket Ltd. For more information see https://tokenmarket.net
 *
 * Licensed under the Apache License, version 2.0: https://github.com/TokenMarketNet/ico/blob/master/LICENSE.txt
 */



/**
 * This smart contract code is Copyright 2017 TokenMarket Ltd. For more information see https://tokenmarket.net
 *
 * Licensed under the Apache License, version 2.0: https://github.com/TokenMarketNet/ico/blob/master/LICENSE.txt
 */









/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
  function mul(uint256 a, uint256 b) internal constant returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function div(uint256 a, uint256 b) internal constant 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;
  }

  function sub(uint256 a, uint256 b) internal constant returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  function add(uint256 a, uint256 b) internal constant returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}



/**
 * @title Basic token
 * @dev Basic version of StandardToken, with no allowances. 
 */
contract BasicToken is ERC20Basic {
  using SafeMath for uint256;

  mapping(address => uint256) balances;

  /**
  * @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) returns (bool) {
    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    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) constant returns (uint256 balance) {
    return balances[_owner];
  }

}




/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * @dev https://github.com/ethereum/EIPs/issues/20
 * @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 */
contract StandardToken is ERC20, BasicToken {

  mapping (address => mapping (address => uint256)) allowed;


  /**
   * @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 amout of tokens to be transfered
   */
  function transferFrom(address _from, address _to, uint256 _value) returns (bool) {
    var _allowance = allowed[_from][msg.sender];

    // Check is not needed because sub(_allowance, _value) will already throw if this condition is not met
    // require (_value <= _allowance);

    balances[_to] = balances[_to].add(_value);
    balances[_from] = balances[_from].sub(_value);
    allowed[_from][msg.sender] = _allowance.sub(_value);
    Transfer(_from, _to, _value);
    return true;
  }

  /**
   * @dev Aprove the passed address to spend the specified amount of tokens on behalf of msg.sender.
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint256 _value) returns (bool) {

    // To change the approve amount you first have to reduce the addresses`
    //  allowance to zero by calling `approve(_spender, 0)` if it is not
    //  already 0 to mitigate the race condition described here:
    //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
    require((_value == 0) || (allowed[msg.sender][_spender] == 0));

    allowed[msg.sender][_spender] = _value;
    Approval(msg.sender, _spender, _value);
    return true;
  }

  /**
   * @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 specifing the amount of tokens still available for the spender.
   */
  function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
    return allowed[_owner][_spender];
  }

}



/**
 * Standard EIP-20 token with an interface marker.
 *
 * @notice Interface marker is used by crowdsale contracts to validate that addresses point a good token contract.
 *
 */
contract StandardTokenExt is StandardToken {

  /* Interface declaration */
  function isToken() public constant returns (bool weAre) {
    return true;
  }
}




/**
 * A token that can increase its supply by another contract.
 *
 * This allows uncapped crowdsale by dynamically increasing the supply when money pours in.
 * Only mint agents, contracts whitelisted by owner, can mint new tokens.
 *
 */
contract MintableToken is StandardTokenExt, Ownable {

  using SafeMathLib for uint;

  bool public mintingFinished = false;

  /** List of agents that are allowed to create new tokens */
  mapping (address => bool) public mintAgents;

  event MintingAgentChanged(address addr, bool state);
  event Minted(address receiver, uint amount);

  /**
   * Create new tokens and allocate them to an address..
   *
   * Only callably by a crowdsale contract (mint agent).
   */
  function mint(address receiver, uint amount) onlyMintAgent canMint public {
    totalSupply = totalSupply.plus(amount);
    balances[receiver] = balances[receiver].plus(amount);

    // This will make the mint transaction apper in EtherScan.io
    // We can remove this after there is a standardized minting event
    Transfer(0, receiver, amount);
  }

  /**
   * Owner can allow a crowdsale contract to mint new tokens.
   */
  function setMintAgent(address addr, bool state) onlyOwner canMint public {
    mintAgents[addr] = state;
    MintingAgentChanged(addr, state);
  }

  modifier onlyMintAgent() {
    // Only crowdsale contracts are allowed to mint new tokens
    if(!mintAgents[msg.sender]) {
        throw;
    }
    _;
  }

  /** Make sure we are not done yet. */
  modifier canMint() {
    if(mintingFinished) throw;
    _;
  }
}


/**
 * ICO crowdsale contract that is capped by amout of tokens.
 *
 * - Tokens are dynamically created during the crowdsale
 *
 *
 */
contract MintedTokenCappedCrowdsale is Crowdsale {

  /* Maximum amount of tokens this crowdsale can sell. */
  uint public maximumSellableTokens;

  function MintedTokenCappedCrowdsale(address _token, PricingStrategy _pricingStrategy, address _multisigWallet, uint _start, uint _end, uint _minimumFundingGoal, uint _maximumSellableTokens) Crowdsale(_token, _pricingStrategy, _multisigWallet, _start, _end, _minimumFundingGoal) {
    maximumSellableTokens = _maximumSellableTokens;
  }

  /**
   * Called from invest() to confirm if the curret investment does not break our cap rule.
   */
  function isBreakingCap(uint weiAmount, uint tokenAmount, uint weiRaisedTotal, uint tokensSoldTotal) constant returns (bool limitBroken) {
    return tokensSoldTotal > maximumSellableTokens;
  }

  function isCrowdsaleFull() public constant returns (bool) {
    return tokensSold >= maximumSellableTokens;
  }

  /**
   * Dynamically create tokens and assign them to the investor.
   */
  function assignTokens(address receiver, uint tokenAmount) internal {
    MintableToken mintableToken = MintableToken(token);
    mintableToken.mint(receiver, tokenAmount);
  }
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"ownerTestValue","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"requireCustomerId","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"invest","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"isPricingSane","outputs":[{"name":"sane","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endsAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minimumFundingGoal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getState","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"setFinalizeAgent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"customerId","type":"uint128"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"investWithSignedAddress","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"investedAmountOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"finalizeAgent","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"receiver","type":"address"},{"name":"fullTokens","type":"uint256"},{"name":"weiPrice","type":"uint256"}],"name":"preallocate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"maximumSellableTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isCrowdsale","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_pricingStrategy","type":"address"}],"name":"setPricingStrategy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokensSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"testState","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"refund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"signerAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"weiRefunded","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"halt","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"MAX_INVESTMENTS_BEFORE_MULTISIG_CHANGE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"time","type":"uint256"}],"name":"setEndsAt","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pricingStrategy","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"loadedRefund","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isMinimumGoalReached","outputs":[{"name":"reached","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"bool"}],"name":"setRequireCustomerId","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"loadRefund","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"val","type":"uint256"}],"name":"setOwnerTestValue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"multisigWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokenAmountOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"customerId","type":"uint128"}],"name":"buyWithCustomerId","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"weiAmount","type":"uint256"},{"name":"tokenAmount","type":"uint256"},{"name":"weiRaisedTotal","type":"uint256"},{"name":"tokensSoldTotal","type":"uint256"}],"name":"isBreakingCap","outputs":[{"name":"limitBroken","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"isFinalizerSane","outputs":[{"name":"sane","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startsAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"finalized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"halted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"earlyParticipantWhitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unhalt","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"requiredSignedAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isCrowdsaleFull","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"investorCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"status","type":"bool"}],"name":"setEarlyParicipantWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"bool"},{"name":"_signerAddress","type":"address"}],"name":"setRequireSignedAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"customerId","type":"uint128"}],"name":"investWithCustomerId","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"setMultisig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"customerId","type":"uint128"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"buyWithSignedAddress","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"presaleWeiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_token","type":"address"},{"name":"_pricingStrategy","type":"address"},{"name":"_multisigWallet","type":"address"},{"name":"_start","type":"uint256"},{"name":"_end","type":"uint256"},{"name":"_minimumFundingGoal","type":"uint256"},{"name":"_maximumSellableTokens","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"investor","type":"address"},{"indexed":false,"name":"weiAmount","type":"uint256"},{"indexed":false,"name":"tokenAmount","type":"uint256"},{"indexed":false,"name":"customerId","type":"uint128"}],"name":"Invested","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"investor","type":"address"},{"indexed":false,"name":"weiAmount","type":"uint256"}],"name":"Refund","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newRequireCustomerId","type":"bool"},{"indexed":false,"name":"newRequiredSignedAddress","type":"bool"},{"indexed":false,"name":"newSignerAddress","type":"address"}],"name":"InvestmentPolicyChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addr","type":"address"},{"indexed":false,"name":"status","type":"bool"}],"name":"Whitelisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newEndsAt","type":"uint256"}],"name":"EndsAtChanged","type":"event"}]

  Contract Creation Code Switch To Opcodes View
6060604052600560015560006009556000600a556000600b556000600c556000600d556000600e5534156200003357600080fd5b60405160e0806200249f833981016040528080519190602001805191906020018051919060200180519190602001805191906020018051919060200180519150505b8686868686865b8585858585855b5b60008054600160a060020a03191633600160a060020a03161790555b60008054600160a060020a03338116600160a060020a0319928316179092556002805492891692909116919091179055620000e985640100000000620013266200017182021704565b60058054600160a060020a031916600160a060020a0386811691909117918290551615156200011757600080fd5b8215156200012457600080fd5b60078390558115156200013657600080fd5b60088290556007548290106200014b57600080fd5b60068190555b5050505050505b50505060158490555050505b5050505050505062000232565b60005433600160a060020a039081169116146200018d57600080fd5b60038054600160a060020a031916600160a060020a038381169190911791829055166304bbc2556000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156200020557600080fd5b6102c65a03f115156200021757600080fd5b5050506040518051905015156200022d57600080fd5b5b5b50565b61225d80620002426000396000f3006060604052361561026c5763ffffffff60e060020a6000350416630226401d811461027957806303ca0eed1461029e57806303f9c793146102c5578063062b01ce146102db5780630a09284a1461030257806313f4e977146103275780631865c57d1461034c57806319b667da146103835780631a49803b146103a45780631aae3460146103db57806321d5c0f61461040c57806332013ac31461043b5780633ad075ea146104625780634042b66f146104875780634551dd59146104ac5780634bb278f3146104d357806350c67734146104e8578063518ab2a814610509578063579506971461052e578063590e1ae3146105655780635b7633d01461057a5780635da89ac0146105a95780635ed7ca5b146105ce5780636203f09f146105e35780636e50eb3f1461060857806378b99c2414610620578063797d94371461064f5780637c2e08a3146106745780637f7d711e1461069b57806387612102146106b55780638d51faec146106bf5780638da5cb5b146106d75780639075becf1461070657806397b150ca1461073557806399e9376c146107665780639d3c663f14610785578063a6f2ae3a146107b8578063a7ba44c3146107c2578063af468682146107e9578063b3f05b971461080e578063b9b8af0b14610835578063cb16e6d01461085c578063cb3e64fd1461088f578063d222dc04146108a4578063d5d09021146108cb578063d7e64c00146108f2578063eac2493214610917578063ed68ff2c1461093d578063ef86944314610963578063f2fde38b1461098e578063f3283fba146109af578063f4869726146109d0578063f7c00e2f146109fb578063fc0c546a14610a20575b5b61027633610a4f565b5b005b341561028457600080fd5b61028c610a8a565b60405190815260200160405180910390f35b34156102a957600080fd5b6102b1610a90565b604051901515815260200160405180910390f35b610276600160a060020a0360043516610a4f565b005b34156102e657600080fd5b6102b1610a9e565b604051901515815260200160405180910390f35b341561030d57600080fd5b61028c610b19565b60405190815260200160405180910390f35b341561033257600080fd5b61028c610b1f565b60405190815260200160405180910390f35b341561035757600080fd5b61035f610b25565b6040518082600781111561036f57fe5b60ff16815260200191505060405180910390f35b341561038e57600080fd5b610276600160a060020a0360043516610cda565b005b610276600160a060020a03600435166fffffffffffffffffffffffffffffffff6024351660ff60443516606435608435610d8b565b005b34156103e657600080fd5b61028c600160a060020a0360043516610eab565b60405190815260200160405180910390f35b341561041757600080fd5b61041f610ebd565b604051600160a060020a03909116815260200160405180910390f35b341561044657600080fd5b610276600160a060020a0360043516602435604435610ecc565b005b341561046d57600080fd5b61028c611227565b60405190815260200160405180910390f35b341561049257600080fd5b61028c61122d565b60405190815260200160405180910390f35b34156104b757600080fd5b6102b1611233565b604051901515815260200160405180910390f35b34156104de57600080fd5b610276611239565b005b34156104f357600080fd5b610276600160a060020a0360043516611326565b005b341561051457600080fd5b61028c6113d7565b60405190815260200160405180910390f35b341561053957600080fd5b61035f6113dd565b6040518082600781111561036f57fe5b60ff16815260200191505060405180910390f35b341561057057600080fd5b6102766113e6565b005b341561058557600080fd5b61041f611544565b604051600160a060020a03909116815260200160405180910390f35b34156105b457600080fd5b61028c61155a565b60405190815260200160405180910390f35b34156105d957600080fd5b610276611560565b005b34156105ee57600080fd5b61028c6115b4565b60405190815260200160405180910390f35b341561061357600080fd5b6102766004356115ba565b005b341561062b57600080fd5b61041f61162e565b604051600160a060020a03909116815260200160405180910390f35b341561065a57600080fd5b61028c61163d565b60405190815260200160405180910390f35b341561067f57600080fd5b6102b1611643565b604051901515815260200160405180910390f35b34156106a657600080fd5b610276600435151561164f565b005b6102766116f8565b005b34156106ca57600080fd5b6102766004356117a9565b005b34156106e257600080fd5b61041f6117ce565b604051600160a060020a03909116815260200160405180910390f35b341561071157600080fd5b61041f6117dd565b604051600160a060020a03909116815260200160405180910390f35b341561074057600080fd5b61028c600160a060020a03600435166117ec565b60405190815260200160405180910390f35b6102766fffffffffffffffffffffffffffffffff600435166117fe565b005b341561079057600080fd5b6102b160043560243560443560643561180c565b604051901515815260200160405180910390f35b61027661181a565b005b34156107cd57600080fd5b6102b1611826565b604051901515815260200160405180910390f35b34156107f457600080fd5b61028c611890565b60405190815260200160405180910390f35b341561081957600080fd5b6102b1611896565b604051901515815260200160405180910390f35b341561084057600080fd5b6102b161189f565b604051901515815260200160405180910390f35b341561086757600080fd5b6102b1600160a060020a03600435166118c0565b604051901515815260200160405180910390f35b341561089a57600080fd5b6102766118d5565b005b34156108af57600080fd5b6102b161193c565b604051901515815260200160405180910390f35b34156108d657600080fd5b6102b161194b565b604051901515815260200160405180910390f35b34156108fd57600080fd5b61028c611957565b60405190815260200160405180910390f35b341561092257600080fd5b610276600160a060020a0360043516602435151561195d565b005b341561094857600080fd5b6102766004351515600160a060020a03602435166119eb565b005b610276600160a060020a03600435166fffffffffffffffffffffffffffffffff60243516611ab9565b005b341561099957600080fd5b610276600160a060020a0360043516611afd565b005b34156109ba57600080fd5b610276600160a060020a0360043516611b5a565b005b6102766fffffffffffffffffffffffffffffffff6004351660ff60243516604435606435611bb3565b005b3415610a0657600080fd5b61028c611bc7565b60405190815260200160405180910390f35b3415610a2b57600080fd5b61041f611bcd565b604051600160a060020a03909116815260200160405180910390f35b601454610100900460ff1615610a6457600080fd5b60145462010000900460ff1615610a7a57600080fd5b610a85816000611bdc565b505b50565b60135481565b601454610100900460ff1681565b600354600090600160a060020a0316638e76828830836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610af957600080fd5b6102c65a03f11515610b0a57600080fd5b50505060405180519150505b90565b60085481565b60065481565b600f5460009060ff1615610b3b57506006610b16565b600454600160a060020a03161515610b5557506001610b16565b600454600160a060020a03166382771c8e6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610b9d57600080fd5b6102c65a03f11515610bae57600080fd5b505050604051805190501515610bc657506001610b16565b600354600160a060020a0316638e7682883060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610c1f57600080fd5b6102c65a03f11515610c3057600080fd5b505050604051805190501515610c4857506001610b16565b600754421015610c5a57506002610b16565b6008544211158015610c715750610c6f61194b565b155b15610c7e57506003610b16565b610c86611643565b15610c9357506004610b16565b610c9b611643565b158015610caa57506000600a54115b8015610cba5750600a54600d5410155b15610cc757506007610b16565b506005610b16565b5b5b5b5b5b5b5b5b90565b60005433600160a060020a03908116911614610cf557600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383811691909117918290551663614cb9046000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610d6057600080fd5b6102c65a03f11515610d7157600080fd5b505050604051805190501515610a8757600080fd5b5b5b50565b6000600286600060405160200152604051600160a060020a03919091166c0100000000000000000000000002815260140160206040518083038160008661646e5a03f11515610dd957600080fd5b5050604051805160145490925063010000009004600160a060020a031690506001828686866040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f11515610e5d57600080fd5b505060206040510351600160a060020a031614610e7957600080fd5b6fffffffffffffffffffffffffffffffff85161515610e9757600080fd5b610ea18686611bdc565b505b505050505050565b60106020526000908152604090205481565b600454600160a060020a031681565b60008054819033600160a060020a03908116911614610eea57600080fd5b600254600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610f3257600080fd5b6102c65a03f11515610f4357600080fd5b50505060405180519050600a0a840291508383029050600a547393ba3058ad5fa1af80079aaabb530c97eb8222226366098d4f90918360006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515610fbb57600080fd5b6102c65a03f41515610fcc57600080fd5b5050506040518051600a55506009547393ba3058ad5fa1af80079aaabb530c97eb822222906366098d4f908460006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561103a57600080fd5b6102c65a03f4151561104b57600080fd5b505050604051805160095550600160a060020a038516600090815260106020526040808220547393ba3058ad5fa1af80079aaabb530c97eb822222926366098d4f92859190516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b15156110ce57600080fd5b6102c65a03f415156110df57600080fd5b5050506040518051600160a060020a03871660009081526010602090815260408083209390935560119052818120547393ba3058ad5fa1af80079aaabb530c97eb82222293506366098d4f9290918691516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561116d57600080fd5b6102c65a03f4151561117e57600080fd5b5050506040518051600160a060020a038716600090815260116020526040902055506111aa85836121c0565b7f0396f60aaad038749091d273dc13aaabc63db6e2271c7bad442d5cf25cc4335085828460006040518085600160a060020a0316600160a060020a03168152602001848152602001838152602001826fffffffffffffffffffffffffffffffff16815260200194505050505060405180910390a15b5b5050505050565b60155481565b600a5481565b60015b90565b6004805b611245610b25565b600781111561125057fe5b1461125a57600080fd5b60005433600160a060020a0390811691161461127557600080fd5b60005474010000000000000000000000000000000000000000900460ff161561129d57600080fd5b600f5460ff16156112ad57600080fd5b600454600160a060020a03161561131257600454600160a060020a0316630bf318a36040518163ffffffff1660e060020a028152600401600060405180830381600087803b15156112fd57600080fd5b6102c65a03f1151561130e57600080fd5b5050505b600f805460ff191660011790555b5b5b5b50565b60005433600160a060020a0390811691161461134157600080fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169190911791829055166304bbc2556000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610d6057600080fd5b6102c65a03f11515610d7157600080fd5b505050604051805190501515610a8757600080fd5b5b5b50565b60095481565b60145460ff1681565b60006007805b6113f4610b25565b60078111156113ff57fe5b1461140957600080fd5b600160a060020a033316600090815260106020526040902054915081151561143057600080fd5b600160a060020a033316600090815260106020526040808220829055600e547393ba3058ad5fa1af80079aaabb530c97eb822222926366098d4f92869190516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b15156114ac57600080fd5b6102c65a03f415156114bd57600080fd5b5050506040518051600e55507fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d3383604051600160a060020a03909216825260208201526040908101905180910390a1600160a060020a03331682156108fc0283604051600060405180830381858888f193505050501515610a8557600080fd5b5b5b5050565b60145463010000009004600160a060020a031681565b600e5481565b60005433600160a060020a0390811691161461157b57600080fd5b6000805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790555b5b565b60015481565b60005433600160a060020a039081169116146115d557600080fd5b804211156115e257600080fd5b8060075411156115f157600080fd5b60088190557fd34bb772c4ae9baa99db852f622773b31c7827e8ee818449fef20d30980bd3108160405190815260200160405180910390a15b5b50565b600354600160a060020a031681565b600d5481565b600654600a5410155b90565b60005433600160a060020a0390811691161461166a57600080fd5b6014805461ff001916610100831515810291909117918290557f48d826081348f5f00e8a33c9ae8ce89ed4c6e88400b585a478bc203d9e8177d39160ff918104821691620100008204169063010000009004600160a060020a031660405192151583529015156020830152600160a060020a03166040808301919091526060909101905180910390a15b5b50565b6005805b611704610b25565b600781111561170f57fe5b1461171957600080fd5b34151561172557600080fd5b600d547393ba3058ad5fa1af80079aaabb530c97eb8222226366098d4f90913460006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561178757600080fd5b6102c65a03f4151561179857600080fd5b5050506040518051600d55505b5b50565b60005433600160a060020a039081169116146117c457600080fd5b60138190555b5b50565b600054600160a060020a031681565b600554600160a060020a031681565b60116020526000908152604090205481565b610a873382611ab9565b5b50565b60155481115b949350505050565b6115b133610a4f565b5b565b600454600090600160a060020a03166382771c8e82604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610af957600080fd5b6102c65a03f11515610b0a57600080fd5b50505060405180519150505b90565b60075481565b600f5460ff1681565b60005474010000000000000000000000000000000000000000900460ff1681565b60126020526000908152604090205460ff1681565b60005433600160a060020a039081169116146118f057600080fd5b60005474010000000000000000000000000000000000000000900460ff16151561191957600080fd5b6000805474ff0000000000000000000000000000000000000000191690555b5b5b565b60145462010000900460ff1681565b60155460095410155b90565b600c5481565b60005433600160a060020a0390811691161461197857600080fd5b600160a060020a03821660009081526012602052604090819020805460ff19168315151790557fa54714518c5d275fdcd3d2a461e4858e4e8cb04fb93cd0bca9d6d34115f26440908390839051600160a060020a039092168252151560208201526040908101905180910390a15b5b5050565b60005433600160a060020a03908116911614611a0657600080fd5b6014805462ff000019166201000084151581029190911776ffffffffffffffffffffffffffffffffffffffff00000019166301000000600160a060020a03858116820292909217938490557f48d826081348f5f00e8a33c9ae8ce89ed4c6e88400b585a478bc203d9e8177d39360ff6101008204811694820416929190041660405192151583529015156020830152600160a060020a03166040808301919091526060909101905180910390a15b5b5050565b60145462010000900460ff1615611acf57600080fd5b6fffffffffffffffffffffffffffffffff81161515611aed57600080fd5b611af78282611bdc565b505b5050565b60005433600160a060020a03908116911614611b1857600080fd5b600160a060020a0381161515611b2d57600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b60005433600160a060020a03908116911614611b7557600080fd5b600154600c541115611b8657600080fd5b6005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b611bc03385858585610d8b565b5b50505050565b600b5481565b600254600160a060020a031681565b600080548190819074010000000000000000000000000000000000000000900460ff1615611c0957600080fd5b60025b611c14610b25565b6007811115611c1f57fe5b1415611c5157600160a060020a03851660009081526012602052604090205460ff161515611c4c57600080fd5b611c77565b60035b611c5c610b25565b6007811115611c6757fe5b1415611c7257611c77565b600080fd5b5b600354600b54600a54600954600254349650600160a060020a03948516946318a4155e94889403929133911663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611ce057600080fd5b6102c65a03f11515611cf157600080fd5b5050506040518051905060006040516020015260405160e060020a63ffffffff8816028152600481019590955260248501939093526044840191909152600160a060020a03166064830152608482015260a401602060405180830381600087803b1515611d5d57600080fd5b6102c65a03f11515611d6e57600080fd5b5050506040518051915050801515611d8557600080fd5b600160a060020a0385166000908152601060205260409020541515611dae57600c805460010190555b600160a060020a038516600090815260106020526040808220547393ba3058ad5fa1af80079aaabb530c97eb822222926366098d4f92869190516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515611e2557600080fd5b6102c65a03f41515611e3657600080fd5b5050506040518051600160a060020a03871660009081526010602090815260408083209390935560119052818120547393ba3058ad5fa1af80079aaabb530c97eb82222293506366098d4f9290918591516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515611ec457600080fd5b6102c65a03f41515611ed557600080fd5b5050506040518051600160a060020a03871660009081526011602052604080822092909255600a547393ba3058ad5fa1af80079aaabb530c97eb82222293506366098d4f9290918691516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515611f5c57600080fd5b6102c65a03f41515611f6d57600080fd5b5050506040518051600a55506009547393ba3058ad5fa1af80079aaabb530c97eb822222906366098d4f908360006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515611fdb57600080fd5b6102c65a03f41515611fec57600080fd5b505050604051805160095550600354600160a060020a031663f14ae17d8660006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561205157600080fd5b6102c65a03f1151561206257600080fd5b50505060405180519050156120f157600b547393ba3058ad5fa1af80079aaabb530c97eb8222226366098d4f90918460006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b15156120d357600080fd5b6102c65a03f415156120e457600080fd5b5050506040518051600b55505b6121018282600a5460095461180c565b1561210b57600080fd5b61211585826121c0565b600554600160a060020a031682156108fc0283604051600060405180830381858888f19350505050151561214857600080fd5b7f0396f60aaad038749091d273dc13aaabc63db6e2271c7bad442d5cf25cc4335085838387604051600160a060020a03909416845260208401929092526040808401919091526fffffffffffffffffffffffffffffffff90911660608301526080909101905180910390a18092505b5b505092915050565b600254600160a060020a0316806340c10f19848460405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561221757600080fd5b6102c65a03f11515610ea357600080fd5b5050505b5050505600a165627a7a72305820e493afe907efc64acfbdba5ee2e945c4d1d729557b7e89b645f39d5838b6eea400290000000000000000000000002167fb82309cf76513e83b25123f8b0559d6b48f00000000000000000000000042245fd5c9d7b4af5df92a0bafd83cacda73944e000000000000000000000000a5f18e3c4749c2e248f716719ecc42c1e8afafa5000000000000000000000000000000000000000000000000000000005a19ce18000000000000000000000000000000000000000000000000000000005a934e0000000000000000000000000000000000000000000000006c6b935b8bbd400000000000000000000000000000000000000000000000cecb8f27f4200f3a000000

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

-----Decoded View---------------
Found 7 constructor arguments :
Arg [0] : 0000000000000000000000002167fb82309cf76513e83b25123f8b0559d6b48f
Arg [1] : 00000000000000000000000042245fd5c9d7b4af5df92a0bafd83cacda73944e
Arg [2] : 000000000000000000000000a5f18e3c4749c2e248f716719ecc42c1e8afafa5
Arg [3] : 000000000000000000000000000000000000000000000000000000005a19ce18
Arg [4] : 000000000000000000000000000000000000000000000000000000005a934e00
Arg [5] : 00000000000000000000000000000000000000000000006c6b935b8bbd400000
Arg [6] : 000000000000000000000000000000000000000000cecb8f27f4200f3a000000


   Library Used
SafeMathLib : 0x93ba3058ad5fa1af80079aaabb530c97eb822222

   Swarm Source:
bzzr://e493afe907efc64acfbdba5ee2e945c4d1d729557b7e89b645f39d5838b6eea4

 

View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.