Sponsored Link:  Download the Monaco app for Android and iOS on Aug 31 - www.mona.co
Contract Overview
ETH Balance: 0 Ether
ETH USD Value: $0
No Of Transactions: 1803 txns
  Latest 25 txns from a total Of 1803 transactions View All

TxHash Age From To Value [TxFee]
0x10c4bc60c10ece9cb055b368e6b90f71951f16cf3cff41418fae470d127da5181 day 5 hrs ago0x62c03ce1c7eafd107d8ade8d251da3b3ad638b34  IN  0x36e168966f61b674a3073e1d9e159a56880c70599.835 Ether0.000000000017
0x37c48eb1c22c9c0e1346e2e2e9aa161b1b54964dc1f0f5c5709551f592b9bcdf3 days 14 hrs ago0x23764c757cbc522499ba0123eb87f8182e2840b9  IN  0x36e168966f61b674a3073e1d9e159a56880c705931.94 Ether0.0021
0xb3e4ca89e87204e357cd857388390592a4c8f0f73e7cc4d6255523badbdccec43 days 23 hrs ago0xb2abee613475fa803206ffac9b90c663d760ca4e  IN  0x36e168966f61b674a3073e1d9e159a56880c70595.11 Ether0.005138736
0x78d2b3870a5147a4b02ea83cc7fe84dcb3513d28184d077d13fd0b02d34537f34 days 3 hrs ago0xc5d50f2ee5baa7da55ea559e7d0252e641f11be9  IN  0x36e168966f61b674a3073e1d9e159a56880c70593 Ether0.001280058
0x5b355960e6d3c51393f2c9dd58d592bf8f76e8f1d49f8fa1db8730345b8c9a234 days 6 hrs ago0x4b84a6f9db6869699f6bf0c198e0c8c4654e966f  IN  0x36e168966f61b674a3073e1d9e159a56880c70591.5 Ether0.01015
0xf4afa94b6daf6edf6c811decdc855929c63e28b54da83856a759ec586d2d06024 days 10 hrs ago0xf09d0b3a4ed7424d5a3e5a96272df46453da80de  IN  0x36e168966f61b674a3073e1d9e159a56880c705953 Ether0.0098
0x23112ad7af9581a1e37104abdb7f3dfd128f4f95e79c24549a8f8a09e60865cb4 days 11 hrs ago0xc47b7de3ffc99fbec0f18519ced0439293955ea8  IN  0x36e168966f61b674a3073e1d9e159a56880c70591.146289399715667 Ether0.005644208
0x4da16d7b4b50101eb74ddcdcef2e811b075269f2e705361113736351775a88cb4 days 11 hrs ago0x00be0723cc6cdc2a40f0f697fce2d69daf04259f  IN  0x36e168966f61b674a3073e1d9e159a56880c705947.5 Ether0.035
0xd1f58ee0968db98eb76f2a1216e73430614a8b3838e78328f719715f497261d14 days 11 hrs ago0xc47b7de3ffc99fbec0f18519ced0439293955ea8  IN  0x36e168966f61b674a3073e1d9e159a56880c70591.14636773396727 Ether0.0243
0x216f77762139cb4a4ff290a7853507b0c989754b021437c3c7bee0214160e95a4 days 11 hrs ago0xc47b7de3ffc99fbec0f18519ced0439293955ea8  IN  0x36e168966f61b674a3073e1d9e159a56880c70591.14636773399093 Ether0.0363
0x26b902f901198b68f3f582290761d704b0c4af75ca47f85dd79e00ef949e4d124 days 11 hrs ago0xc47b7de3ffc99fbec0f18519ced0439293955ea8  IN  0x36e168966f61b674a3073e1d9e159a56880c70591.14636773396728 Ether0.0363
0x6378078e6cc0871bace5978ba099b18b47f3dd534780e57013ca9c4c0eb1d0e74 days 12 hrs ago0x2a7e1a714696217433f84e6347ed58294483fddf  IN  0x36e168966f61b674a3073e1d9e159a56880c70591.9 Ether0.00713715
0x93494f8f0647bb2687dccca2794e8212d3d439bdd50b81ebbf5598c4768e03b84 days 12 hrs ago0x90c04590363a7eba1c7da472e405e304067e4128  IN  0x36e168966f61b674a3073e1d9e159a56880c705920 Ether0.0175
0xa6f1d754fc25771ef362b07a0e7861ce6cfe2bae30070429943258565b94a74d4 days 12 hrs ago0xdac976629020966a03ed95f19d0db8f3a8a7215a  IN  0x36e168966f61b674a3073e1d9e159a56880c705910 Ether0.00735
0x0abbfbf316df8aec885d6c2ef2cf82bbccbd7e94435972522a862b8c4da0725e4 days 12 hrs ago0x90c04590363a7eba1c7da472e405e304067e4128  IN  0x36e168966f61b674a3073e1d9e159a56880c705920 Ether0.0175
0x1609fe16717b6658f0f0d3488d838c387773666b06a45202f9d260dd9c9460574 days 12 hrs ago0xc47b7de3ffc99fbec0f18519ced0439293955ea8  IN  0x36e168966f61b674a3073e1d9e159a56880c70593.2328691686826 Ether0.0363
0xdb3a3dea4e3c88e9d39add77a9a82eab617e9c5dcb77e81d5c8d259948fcfe664 days 12 hrs ago0xdac976629020966a03ed95f19d0db8f3a8a7215a  IN  0x36e168966f61b674a3073e1d9e159a56880c705920 Ether0.00735
0xa7b172fbec2fe2d037ad31ae294088f57e4682f5f2ca52296fa92dd40ac7c6504 days 12 hrs ago0xfeaacdbbc318ebbf9bb5835d4173c1a7fc24b3b9  IN  0x36e168966f61b674a3073e1d9e159a56880c70590 Ether0.0047096
0xe7d9b73eade4dcb342e9edf64e21444358fe88158091f3913df5cca29c1dc5624 days 12 hrs ago0xcae8a820d829ac7c18057680c392c766ab2866bd  IN  0x36e168966f61b674a3073e1d9e159a56880c70590.186542024 Ether0.001943088
0xacf6443e6153d704524e969b8c9d3fac9351378aac2c290802880425f7f70eb54 days 12 hrs ago0xdac976629020966a03ed95f19d0db8f3a8a7215a  IN  0x36e168966f61b674a3073e1d9e159a56880c705950 Ether0.0147
0x41e7bb8441d48a18e5f404aa4d0ca72d40ce6bf574003072fe0be9b0d7fb02974 days 12 hrs ago0xa9fdfc45912307d37948e771499999aa1e55001c  IN  0x36e168966f61b674a3073e1d9e159a56880c705915 Ether0.0175
0xbeed93a1d6940fba277da96856c8744c982e58730a2395fefa56a55b7480851b4 days 12 hrs ago0xa9fdfc45912307d37948e771499999aa1e55001c  IN  0x36e168966f61b674a3073e1d9e159a56880c705910 Ether0.0084
0x1b3bea152e412ff68dae7dfc6f207636b1bd81fee2f6d6fed815d68c1d3a22ed4 days 12 hrs ago0x001df30cb66f209c889575099e5e482e432b3daf  IN  0x36e168966f61b674a3073e1d9e159a56880c7059170 Ether0.010915433621
0xd8322b50f04db4005eb3370abe346b42807356b66bc35a26e28f18d9ecafeb284 days 12 hrs ago0x3c9045f51a62e3da0cf0a0c55be1967a8146a72a  IN  0x36e168966f61b674a3073e1d9e159a56880c70595 Ether0.0175
0xbe62bc23c8165e5c4b82b32ffd4a13af1a03aec585d9ec03e27afb86ef28ba8d4 days 12 hrs ago0x7ae8cf58dbdf4186f0d584745dc78255bc93495c  IN  0x36e168966f61b674a3073e1d9e159a56880c705913 Ether0.0046264
[ 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
0x23112ad7af9581a1e37104abdb7f3dfd128f4f95e79c24549a8f8a09e60865cb43623434 days 11 hrs ago0x36e168966f61b674a3073e1d9e159a56880c70590x4ebc26dd291b391cd94bf32f55eeed539560e7f31.146289399715667729 Ether
0x6378078e6cc0871bace5978ba099b18b47f3dd534780e57013ca9c4c0eb1d0e743623144 days 12 hrs ago0x36e168966f61b674a3073e1d9e159a56880c70590x4ebc26dd291b391cd94bf32f55eeed539560e7f31.9 Ether
0xe7d9b73eade4dcb342e9edf64e21444358fe88158091f3913df5cca29c1dc56243622984 days 12 hrs ago0x36e168966f61b674a3073e1d9e159a56880c70590x4ebc26dd291b391cd94bf32f55eeed539560e7f30.186542024 Ether
0xbe62bc23c8165e5c4b82b32ffd4a13af1a03aec585d9ec03e27afb86ef28ba8d43622904 days 12 hrs ago0x36e168966f61b674a3073e1d9e159a56880c70590x4ebc26dd291b391cd94bf32f55eeed539560e7f313 Ether
0x2d36d8d4b5a38b12c431ca574a03ea56e83c493293022f5351bffd11f4d1aeb543622844 days 12 hrs ago0x36e168966f61b674a3073e1d9e159a56880c70590x4ebc26dd291b391cd94bf32f55eeed539560e7f30.215 Ether
0x2afe48ec9fd282451f4f291b3abc42570c28ab6f88125451e721bda0f88b193243622844 days 12 hrs ago0x36e168966f61b674a3073e1d9e159a56880c70590x4ebc26dd291b391cd94bf32f55eeed539560e7f32.98 Ether
0x689b585322c340c63ed9f1c0c5f293fba8b91f72e0fd6a497746ec602ebf5f4043622774 days 12 hrs ago0x36e168966f61b674a3073e1d9e159a56880c70590x4ebc26dd291b391cd94bf32f55eeed539560e7f38.9 Ether
0x61428d933ed906ba4c539fdab1df399e83b5eeee14d7ea88c794c6a395c94e3943622774 days 12 hrs ago0x36e168966f61b674a3073e1d9e159a56880c70590x4ebc26dd291b391cd94bf32f55eeed539560e7f33.567439911425599 Ether
0xfc0d2a2599ff3ee231696a94b2418258bd5a644813bd1609c3ea99d80cb078a543622764 days 12 hrs ago0x36e168966f61b674a3073e1d9e159a56880c70590x4ebc26dd291b391cd94bf32f55eeed539560e7f328.188780624 Ether
0x360c16aea308d35f5fdc6b1186fee89c8453c41d9bc45c7b3496378542a2558b43622664 days 12 hrs ago0x36e168966f61b674a3073e1d9e159a56880c70590x4ebc26dd291b391cd94bf32f55eeed539560e7f319 Ether
0x15ffd59c21f7189c119f60221c2a1888557b1fbd1bf47292c179afb4e5a559c043622634 days 12 hrs ago0x36e168966f61b674a3073e1d9e159a56880c70590x4ebc26dd291b391cd94bf32f55eeed539560e7f30.99 Ether
0x7053b8ae4f226f0c3ec2deb23b6d68869ddd4917bc5730c675dbde01d967a16a43622634 days 12 hrs ago0x36e168966f61b674a3073e1d9e159a56880c70590x4ebc26dd291b391cd94bf32f55eeed539560e7f33 Ether
0x747e5ffa4ac15bcc5c37ac8e940860778c4aaf8b2628c599819e77c705c0aacd43622614 days 12 hrs ago0x36e168966f61b674a3073e1d9e159a56880c70590x4ebc26dd291b391cd94bf32f55eeed539560e7f34 Ether
0x8361d4934109367996ddb142d0cba40615efb7cf3243def1191bed1c971b744443622614 days 12 hrs ago0x36e168966f61b674a3073e1d9e159a56880c70590x4ebc26dd291b391cd94bf32f55eeed539560e7f30.1505523 Ether
0x773f44b0c733f3dc2c8fd1ba530bdefcf35cabb996be76bc1ca65552a19b713243622614 days 12 hrs ago0x36e168966f61b674a3073e1d9e159a56880c70590x4ebc26dd291b391cd94bf32f55eeed539560e7f30.1505523 Ether
0xaec3db2dcb9f2318e896d1a3d0ca2629a34a99441980898c734a599eab357b0643622594 days 12 hrs ago0x36e168966f61b674a3073e1d9e159a56880c70590x4ebc26dd291b391cd94bf32f55eeed539560e7f30.19076712 Ether
0x89ff053e1201604ecce865bd0ccf5fe1e095ae21d2cd469d7309799deb13d64543622574 days 12 hrs ago0x36e168966f61b674a3073e1d9e159a56880c70590x4ebc26dd291b391cd94bf32f55eeed539560e7f30.35166373 Ether
0x19f84d32a4ab60cde44f97ea1449c1d6b3457a38df52b012889e75fad39d28af43622574 days 12 hrs ago0x36e168966f61b674a3073e1d9e159a56880c70590x4ebc26dd291b391cd94bf32f55eeed539560e7f30.25147758 Ether
0x8cb08e7a8771dafa85397588ee3556cbc880a471b966eea686d009288853d9b543622574 days 12 hrs ago0x36e168966f61b674a3073e1d9e159a56880c70590x4ebc26dd291b391cd94bf32f55eeed539560e7f30.11881155 Ether
0x272ae3aacc54410a4daa9a0a6683743b12ea05c1b0c85b8483099d75a926894e43622494 days 12 hrs ago0x36e168966f61b674a3073e1d9e159a56880c70590x4ebc26dd291b391cd94bf32f55eeed539560e7f31 Ether
0x1988eaec3a45c243e2c563d4bc196d602d112d6b68524aae30e7d41f7f628f7243622494 days 12 hrs ago0x36e168966f61b674a3073e1d9e159a56880c70590x4ebc26dd291b391cd94bf32f55eeed539560e7f36.5 Ether
0x01f2a9617fa987980933d8e722ee034104fa752c0502af8a69d2f23e937ec64843622474 days 12 hrs ago0x36e168966f61b674a3073e1d9e159a56880c70590x4ebc26dd291b391cd94bf32f55eeed539560e7f317 Ether
0xc4b7d4eb467ce7f384faaa92f8cce2f8e6108dfdea3c812da23b704ad958c2fc43622454 days 12 hrs ago0x36e168966f61b674a3073e1d9e159a56880c70590x4ebc26dd291b391cd94bf32f55eeed539560e7f33.2 Ether
0x2b654fed201efb3b5d1d40c91a07aca0f14b6931487a1cdc0fcaf047ef7ce11543622424 days 12 hrs ago0x36e168966f61b674a3073e1d9e159a56880c70590x4ebc26dd291b391cd94bf32f55eeed539560e7f31 Ether
0x90bdbc492e8919d1d6c82ecf8748a08fab0e6cbec91143e10831fe01ac017e1c43622424 days 12 hrs ago0x36e168966f61b674a3073e1d9e159a56880c70590x4ebc26dd291b391cd94bf32f55eeed539560e7f31 Ether
[ Download CSV Export  ] 
Warning: The compiled contract might be susceptible to DelegateCallReturnValue (low-severity), ECRecoverMalformedInput (medium-severity), SkipEmptyStringLiteral (low-severity), ConstantOptimizerSubtraction (low-severity) Solidity compiler bugs.

Contract Source Code Verified
Contract Name: MintedTokenCappedCrowdsale
Compiler Version: v0.4.8+commit.60cc1668
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts
/**
 *  Streamr Network AG crowd contribution
 *  By contributing ETH to this smart contract you agree to the following terms and conditions:
 *  https://s3.amazonaws.com/streamr-public/Governance+Terms+-+Crowdcontribution.pdf
 */



/**
 * Math operations with safety checks
 */
contract SafeMath {
  function safeMul(uint a, uint b) internal returns (uint) {
    uint c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function safeDiv(uint a, uint b) internal returns (uint) {
    assert(b > 0);
    uint c = a / b;
    assert(a == b * c + a % b);
    return c;
  }

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

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

  function max64(uint64 a, uint64 b) internal constant returns (uint64) {
    return a >= b ? a : b;
  }

  function min64(uint64 a, uint64 b) internal constant returns (uint64) {
    return a < b ? a : b;
  }

  function max256(uint256 a, uint256 b) internal constant returns (uint256) {
    return a >= b ? a : b;
  }

  function min256(uint256 a, uint256 b) internal constant returns (uint256) {
    return a < b ? a : b;
  }

  function assert(bool assertion) internal {
    if (!assertion) {
      throw;
    }
  }
}




/*
 * Ownable
 *
 * Base contract with an owner.
 * Provides onlyOwner modifier, which prevents function from running if it is called by anyone other than the owner.
 */
contract Ownable {
  address public owner;

  function Ownable() {
    owner = msg.sender;
  }

  modifier onlyOwner() {
    if (msg.sender != owner) {
      throw;
    }
    _;
  }

  function transferOwnership(address newOwner) onlyOwner {
    if (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 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;
  }

}


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

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


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

}




/*
 * ERC20 interface
 * see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 {
  uint public totalSupply;
  function balanceOf(address who) constant returns (uint);
  function allowance(address owner, address spender) constant returns (uint);

  function transfer(address to, uint value) returns (bool ok);
  function transferFrom(address from, address to, uint value) returns (bool ok);
  function approve(address spender, uint value) returns (bool ok);
  event Transfer(address indexed from, address indexed to, uint value);
  event Approval(address indexed owner, address indexed spender, uint value);
}


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

  uint public decimals;

}


/**
 * Abstract base contract for token sales.
 *
 * 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)
 *
 * Changes:
 * - Whitelisting also for the State.Funding phase, with individual limits
 */
contract Crowdsale is Haltable, SafeMath {

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

  /* 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; CHANGE: small-cap limits apply */
  uint public startsAt;

  /* CHANGE: Seconds after start of the crowdsale when the large-cap limit applies (added on top of small-cap limit) */
  uint public largeCapDelay = 24 * 60 * 60;

  /* 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;

  /* 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;

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

  /**
    * 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 = false;

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

  /** 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, and their individual limit (in wei) */
  mapping (address => uint256) public smallCapLimitOf;

  /** Addresses that are allowed to invest after a largeCapDelay, and their individual large-cap limit (in wei, possibly in addition to smallCapLimitOf their account) */
  mapping (address => uint256) public largeCapLimitOf;

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

  /** Addresses that are allowed to add participants to the LimitOf whitelists */
  mapping (address => bool) public isWhitelistAgent;

  /** 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 requireCustomerId, bool requiredSignedAddress, address signerAddress);

  // Whitelist status and/or wei limit changed
  event WhitelistedEarlyParticipant(address addr, bool status);
  event WhitelistedSmallCap(address addr, uint256 limit);
  event WhitelistedLargeCap(address addr, uint256 limit);

  // Crowdsale start/end time has been changed
  event EndsAtChanged(uint endsAt);
  event StartsAtChanged(uint startsAt);
  event LargeCapStartTimeChanged(uint startsAt);

  function Crowdsale(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;
    }

    // owner and multisig are able to whitelist participants by default
    isWhitelistAgent[owner] = true;
    isWhitelistAgent[multisigWallet] = true;

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

  /**
   * Receiving money is ok, because that's what this contract is for. Sending money to Crowdsale is equivalent to buy().
   */
  function() payable {
    invest(msg.sender);
  }

  /**
   * 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
   *
   */
  function investInternal(address receiver, uint128 customerId) stopInEmergency private {

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

    uint weiAmount = msg.value;
    uint tokenAmount = pricingStrategy.calculatePrice(weiAmount, weiRaised, tokensSold, msg.sender, token.decimals());

    if (tokenAmount == 0) {
      // Dust transaction
      throw;
    }

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

    // Update investor
    investedAmountOf[receiver] = safeAdd(investedAmountOf[receiver], weiAmount);
    tokenAmountOf[receiver] = safeAdd(tokenAmountOf[receiver], tokenAmount);

    // Check individual token limit (also acts as crowdsale whitelist)
    uint256 personalWeiLimit = smallCapLimitOf[receiver];
    if (block.timestamp > startsAt + largeCapDelay) {
      personalWeiLimit = safeAdd(personalWeiLimit, largeCapLimitOf[receiver]);
    }
    if (investedAmountOf[receiver] > personalWeiLimit) {
      throw;
    }

    // Update totals
    weiRaised = safeAdd(weiRaised, weiAmount);
    tokensSold = safeAdd(tokensSold, tokenAmount);

    // Check that we did not bust the cap
    if (isBreakingCap(weiAmount, tokenAmount, weiRaised, tokensSold)) {
      throw;
    }

    assignTokens(receiver, tokenAmount);

    // Pocket the money
    if (!multisigWallet.send(weiAmount)) throw;

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

  /**
   * 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 tokenAmount Tokens (in "atomic units") allocated to the contributor
   * @param weiAmount Contribution in wei
   *
   */
  function preallocate(address receiver, uint tokenAmount, uint weiAmount) public onlyOwner {
    if (getState() != State.PreFunding) { throw; }

    // Free pre-allocations don't count as "sold tokens"
    if (weiAmount == 0) {
      tokenAmountOf[receiver] = safeAdd(tokenAmountOf[receiver], tokenAmount);
      assignTokens(receiver, tokenAmount);
    } else {

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

      weiRaised = safeAdd(weiRaised, weiAmount);
      tokensSold = safeAdd(tokensSold, tokenAmount);
      investedAmountOf[receiver] = safeAdd(investedAmountOf[receiver], weiAmount);
      tokenAmountOf[receiver] = safeAdd(tokenAmountOf[receiver], tokenAmount);

      assignTokens(receiver, tokenAmount);

      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 partipants 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);
  }

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

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

  /**
   * Allow addresses to do early participation.
   */
  function setEarlyParticipantWhitelist(address addr, bool status) onlyOwner {
    earlyParticipantWhitelist[addr] = status;
    WhitelistedEarlyParticipant(addr, status);
  }

  /**
   * Change to original: require all participants to be whitelisted, with individual token limits
   */
  function setSmallCapWhitelistParticipant(address addr, uint256 weiLimit) {
    if (isWhitelistAgent[msg.sender]) {
      smallCapLimitOf[addr] = weiLimit;
      WhitelistedSmallCap(addr, weiLimit);
    }
  }
  function setSmallCapWhitelistParticipants(address[] addrs, uint256 weiLimit) {
    if (isWhitelistAgent[msg.sender]) {
      for (uint i = 0; i < addrs.length; i++) {
        var addr = addrs[i];
        smallCapLimitOf[addr] = weiLimit;
        WhitelistedSmallCap(addr, weiLimit);
      }
    }
  }
  function setSmallCapWhitelistParticipants(address[] addrs, uint256[] weiLimits) {
    if (addrs.length != weiLimits.length) {
      throw;
    }
    if (isWhitelistAgent[msg.sender]) {
      for (uint i = 0; i < addrs.length; i++) {
        var addr = addrs[i];
        var weiLimit = weiLimits[i];
        smallCapLimitOf[addr] = weiLimit;
        WhitelistedSmallCap(addr, weiLimit);
      }
    }
  }

  function setLargeCapWhitelistParticipant(address addr, uint256 weiLimit) {
    if (isWhitelistAgent[msg.sender]) {
      largeCapLimitOf[addr] = weiLimit;
      WhitelistedLargeCap(addr, weiLimit);
    }
  }
  function setLargeCapWhitelistParticipants(address[] addrs, uint256 weiLimit) {
    if (isWhitelistAgent[msg.sender]) {
      for (uint i = 0; i < addrs.length; i++) {
        var addr = addrs[i];
        largeCapLimitOf[addr] = weiLimit;
        WhitelistedLargeCap(addr, weiLimit);
      }
    }
  }
  function setLargeCapWhitelistParticipants(address[] addrs, uint256[] weiLimits) {
    if (addrs.length != weiLimits.length) {
      throw;
    }
    if (isWhitelistAgent[msg.sender]) {
      for (uint i = 0; i < addrs.length; i++) {
        var addr = addrs[i];
        var weiLimit = weiLimits[i];
        largeCapLimitOf[addr] = weiLimit;
        WhitelistedLargeCap(addr, weiLimit);
      }
    }
  }

  function setWhitelistAgent(address addr, bool status) onlyOwner {
    isWhitelistAgent[addr] = status;
  }

  /**
   * Allow crowdsale owner to postpone the start of the crowdsale
   */
  function setStartsAt(uint time) onlyOwner {

    // Don't put into past
    if (time < now) { throw; }

    // Change endsAt first...
    if (time > endsAt) { throw; }

    // If crowdsale has already started, the start can't be postponed anymore
    if (startsAt < now) { throw; }

    startsAt = time;
    StartsAtChanged(endsAt);
  }

  function setLargeCapDelay(uint secs) onlyOwner {
    if (secs < 0) { throw; }

    // Change endsAt first...
    if (startsAt + secs > endsAt) { throw; }

    // If large-cap sale has already started, the start can't be postponed anymore
    if (startsAt + largeCapDelay < now) { throw; }

    largeCapDelay = secs;
    LargeCapStartTimeChanged(startsAt + largeCapDelay);
  }

  /**
   * 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
    }

    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 = safeAdd(loadedRefund, 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 = safeAdd(weiRefunded, 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;
  }

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









/**
 * Standard ERC20 token with Short Hand Attack and approve() race condition mitigation.
 *
 * Based on code by FirstBlood:
 * https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 */
contract StandardToken is ERC20, SafeMath {

  /* Token supply got increased and a new owner received these tokens */
  event Minted(address receiver, uint amount);

  /* Actual balances of token holders */
  mapping(address => uint) balances;

  /* approve() allowances */
  mapping (address => mapping (address => uint)) allowed;

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

  function transfer(address _to, uint _value) returns (bool success) {
    balances[msg.sender] = safeSub(balances[msg.sender], _value);
    balances[_to] = safeAdd(balances[_to], _value);
    Transfer(msg.sender, _to, _value);
    return true;
  }

  function transferFrom(address _from, address _to, uint _value) returns (bool success) {
    uint _allowance = allowed[_from][msg.sender];

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

  function balanceOf(address _owner) constant returns (uint balance) {
    return balances[_owner];
  }

  function approve(address _spender, uint _value) returns (bool success) {

    // 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
    if ((_value != 0) && (allowed[msg.sender][_spender] != 0)) throw;

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

  function allowance(address _owner, address _spender) constant returns (uint remaining) {
    return allowed[_owner][_spender];
  }

}



/**
 * 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 StandardToken, Ownable {

  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);

  /**
   * 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 = safeAdd(totalSupply, amount);
    balances[receiver] = safeAdd(balances[receiver], 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) private {
    MintableToken mintableToken = MintableToken(token);
    mintableToken.mint(receiver, tokenAmount);
  }
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"ownerTestValue","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"requireCustomerId","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"invest","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"isPricingSane","outputs":[{"name":"sane","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"endsAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"minimumFundingGoal","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getState","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"setFinalizeAgent","outputs":[],"payable":false,"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,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"investedAmountOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"weiLimit","type":"uint256"}],"name":"setSmallCapWhitelistParticipant","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"finalizeAgent","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"smallCapLimitOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"addrs","type":"address[]"},{"name":"weiLimit","type":"uint256"}],"name":"setSmallCapWhitelistParticipants","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"receiver","type":"address"},{"name":"tokenAmount","type":"uint256"},{"name":"weiAmount","type":"uint256"}],"name":"preallocate","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isWhitelistAgent","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"maximumSellableTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"secs","type":"uint256"}],"name":"setLargeCapDelay","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isCrowdsale","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"addrs","type":"address[]"},{"name":"weiLimits","type":"uint256[]"}],"name":"setLargeCapWhitelistParticipants","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_pricingStrategy","type":"address"}],"name":"setPricingStrategy","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tokensSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"status","type":"bool"}],"name":"setEarlyParticipantWhitelist","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"refund","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"signerAddress","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"weiRefunded","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"halt","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"MAX_INVESTMENTS_BEFORE_MULTISIG_CHANGE","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"time","type":"uint256"}],"name":"setEndsAt","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"weiLimit","type":"uint256"}],"name":"setLargeCapWhitelistParticipant","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"pricingStrategy","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"loadedRefund","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isMinimumGoalReached","outputs":[{"name":"reached","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"value","type":"bool"}],"name":"setRequireCustomerId","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"loadRefund","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"val","type":"uint256"}],"name":"setOwnerTestValue","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"multisigWallet","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokenAmountOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"customerId","type":"uint128"}],"name":"buyWithCustomerId","outputs":[],"payable":true,"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,"type":"function"},{"constant":false,"inputs":[],"name":"buy","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"isFinalizerSane","outputs":[{"name":"sane","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"addrs","type":"address[]"},{"name":"weiLimits","type":"uint256[]"}],"name":"setSmallCapWhitelistParticipants","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"startsAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"largeCapLimitOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"finalized","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"addrs","type":"address[]"},{"name":"weiLimit","type":"uint256"}],"name":"setLargeCapWhitelistParticipants","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"halted","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"time","type":"uint256"}],"name":"setStartsAt","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"largeCapDelay","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"earlyParticipantWhitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"unhalt","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"requiredSignedAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isCrowdsaleFull","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"investorCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"value","type":"bool"},{"name":"_signerAddress","type":"address"}],"name":"setRequireSignedAddress","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"customerId","type":"uint128"}],"name":"investWithCustomerId","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"setMultisig","outputs":[],"payable":false,"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,"type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"status","type":"bool"}],"name":"setWhitelistAgent","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"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,"type":"constructor"},{"payable":true,"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":"requireCustomerId","type":"bool"},{"indexed":false,"name":"requiredSignedAddress","type":"bool"},{"indexed":false,"name":"signerAddress","type":"address"}],"name":"InvestmentPolicyChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addr","type":"address"},{"indexed":false,"name":"status","type":"bool"}],"name":"WhitelistedEarlyParticipant","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addr","type":"address"},{"indexed":false,"name":"limit","type":"uint256"}],"name":"WhitelistedSmallCap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addr","type":"address"},{"indexed":false,"name":"limit","type":"uint256"}],"name":"WhitelistedLargeCap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"endsAt","type":"uint256"}],"name":"EndsAtChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"startsAt","type":"uint256"}],"name":"StartsAtChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"startsAt","type":"uint256"}],"name":"LargeCapStartTimeChanged","type":"event"}]

  Contract Creation Code Switch To Opcodes View
60606040526005600155620151806008556000600a819055600b819055600c819055600d819055600e55600f805462ffff001916905534620000005760405160e080620026b283398101604090815281516020830151918301516060840151608085015160a086015160c09096015193959293919290915b8686868686865b5b60008054600160a060020a03191633600160a060020a03161790555b60008054600160a060020a03338116600160a060020a0319928316179092556002805492891692909116919091179055620000e485640100000000620015c5620001a782021704565b60058054600160a060020a031916600160a060020a038681169190911791829055161515620001135762000000565b821515620001215762000000565b6007839055811515620001345762000000565b60098290556007548290106200014a5762000000565b60008054600160a060020a039081168252601560205260408083208054600160ff199182168117909255600554909316845292208054909116909117905560068190555b50505060178490555050505b5050505050505062000260565b60005433600160a060020a03908116911614620001c45762000000565b60038054600160a060020a031916600160a060020a038381169190911791829055604080516000602091820181905282517f04bbc255000000000000000000000000000000000000000000000000000000008152925194909316936304bbc255936004808501948390030190829087803b15620000005760325a03f1156200000057505060405151151590506200025b5762000000565b5b5b50565b61244280620002706000396000f300606060405236156102e55763ffffffff60e060020a6000350416630226401d81146102f757806303ca0eed1461031657806303f9c79314610337578063062b01ce1461034d5780630a09284a1461036e57806313f4e9771461038d5780631865c57d146103ac57806319b667da146103da5780631a49803b146103f55780631aae3460146104235780631e87fe1d1461044e57806321d5c0f61461046c5780632b9897fb146104955780632e91812b146104c057806332013ac31461051457806332da7840146105355780633ad075ea146105625780633c33d473146105815780634042b66f146105935780634551dd59146105b25780634bb278f3146105d35780634d20b992146105e257806350c677341461066c578063518ab2a81461068757806358bad3eb146106a6578063590e1ae3146106c65780635b7633d0146106d55780635da89ac0146106fe5780635ed7ca5b1461071d5780636203f09f1461072c5780636e50eb3f1461074b57806371b505ad1461075d57806378b99c241461077b578063797d9437146107a45780637c2e08a3146107c35780637f7d711e146107e457806387612102146107f85780638d51faec146108025780638da5cb5b146108145780639075becf1461083d57806397b150ca1461086657806399e9376c146108915780639d3c663f146108a7578063a6f2ae3a146108d4578063a7ba44c3146108de578063ac2ac86c146108ff578063af46868214610989578063b2983281146109a8578063b3f05b97146109d3578063b5a04829146109f4578063b9b8af0b14610a48578063bf5fc2ee14610a69578063c6f482aa14610a7b578063cb16e6d014610a9a578063cb3e64fd14610ac7578063d222dc0414610ad6578063d5d0902114610af7578063d7e64c0014610b18578063ed68ff2c14610b37578063ef86944314610b57578063f2fde38b14610b79578063f3283fba14610b94578063f486972614610baf578063f74e865514610bd1578063fc0c546a14610bf1575b6102f55b6102f233610c1a565b5b565b005b3461000057610304610c54565b60408051918252519081900360200190f35b3461000057610323610c5a565b604080519115158252519081900360200190f35b6102f5600160a060020a0360043516610c1a565b005b3461000057610323610c68565b604080519115158252519081900360200190f35b3461000057610304610cd4565b60408051918252519081900360200190f35b3461000057610304610cda565b60408051918252519081900360200190f35b34610000576103b9610ce0565b6040518082600781116100005760ff16815260200191505060405180910390f35b34610000576102f5600160a060020a0360043516610e8f565b005b6102f5600160a060020a03600435166001608060020a036024351660ff60443516606435608435610f43565b005b3461000057610304600160a060020a036004351661104e565b60408051918252519081900360200190f35b34610000576102f5600160a060020a0360043516602435611060565b005b34610000576104796110dc565b60408051600160a060020a039092168252519081900360200190f35b3461000057610304600160a060020a03600435166110eb565b60408051918252519081900360200190f35b34610000576102f560048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284375094965050933593506110fd92505050565b005b34610000576102f5600160a060020a03600435166024356044356111ad565b005b3461000057610323600160a060020a036004351661134b565b604080519115158252519081900360200190f35b3461000057610304611360565b60408051918252519081900360200190f35b34610000576102f5600435611366565b005b34610000576103046113f6565b60408051918252519081900360200190f35b34610000576103236113fc565b604080519115158252519081900360200190f35b34610000576102f5611402565b005b34610000576102f5600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750506040805187358901803560208181028481018201909552818452989a9989019892975090820195509350839250850190849080828437509496506114e995505050505050565b005b34610000576102f5600160a060020a03600435166115c5565b005b3461000057610304611678565b60408051918252519081900360200190f35b34610000576102f5600160a060020a0360043516602435151561167e565b005b34610000576102f56116ff565b005b34610000576104796117e8565b60408051600160a060020a039092168252519081900360200190f35b34610000576103046117fe565b60408051918252519081900360200190f35b34610000576102f5611804565b005b3461000057610304611847565b60408051918252519081900360200190f35b34610000576102f560043561184d565b005b34610000576102f5600160a060020a03600435166024356118b2565b005b346100005761047961192e565b60408051600160a060020a039092168252519081900360200190f35b346100005761030461193d565b60408051918252519081900360200190f35b3461000057610323611943565b604080519115158252519081900360200190f35b34610000576102f5600435151561194f565b005b6102f56119e9565b005b34610000576102f5600435611a26565b005b3461000057610479611a4b565b60408051600160a060020a039092168252519081900360200190f35b3461000057610479611a5a565b60408051600160a060020a039092168252519081900360200190f35b3461000057610304600160a060020a0360043516611a69565b60408051918252519081900360200190f35b6102f56001608060020a0360043516611a7b565b005b3461000057610323600435602435604435606435611a89565b604080519115158252519081900360200190f35b6102f56102e9565b005b3461000057610323611aa3565b604080519115158252519081900360200190f35b34610000576102f5600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750506040805187358901803560208181028481018201909552818452989a998901989297509082019550935083925085019084908082843750949650611b1495505050505050565b005b3461000057610304611bf0565b60408051918252519081900360200190f35b3461000057610304600160a060020a0360043516611bf6565b60408051918252519081900360200190f35b3461000057610323611c08565b604080519115158252519081900360200190f35b34610000576102f56004808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437509496505093359350611c1192505050565b005b3461000057610323611cc1565b604080519115158252519081900360200190f35b34610000576102f5600435611cd1565b005b3461000057610304611d56565b60408051918252519081900360200190f35b3461000057610323600160a060020a0360043516611d5c565b604080519115158252519081900360200190f35b34610000576102f5611d71565b005b3461000057610323611dc7565b604080519115158252519081900360200190f35b3461000057610323611dd6565b604080519115158252519081900360200190f35b3461000057610304611de2565b60408051918252519081900360200190f35b34610000576102f56004351515600160a060020a0360243516611de8565b005b6102f5600160a060020a03600435166001608060020a0360243516611ea6565b005b34610000576102f5600160a060020a0360043516611ee0565b005b34610000576102f5600160a060020a0360043516611f2b565b005b6102f56001608060020a036004351660ff60243516604435606435611f77565b005b34610000576102f5600160a060020a03600435166024351515611f8b565b005b3461000057610479611fd0565b60408051600160a060020a039092168252519081900360200190f35b600f54610100900460ff1615610c2f57610000565b600f5462010000900460ff1615610c4557610000565b610c50816000611fdf565b5b50565b60165481565b600f54610100900460ff1681565b6003546040805160006020918201819052825160e360020a6311ced051028152600160a060020a033081166004830152935191949390931692638e76828892602480830193919282900301818787803b156100005760325a03f115610000575050604051519150505b90565b60095481565b60065481565b600f5460009060ff1615610cf657506006610cd1565b600454600160a060020a03161515610d1057506001610cd1565b600460009054906101000a9004600160a060020a0316600160a060020a03166382771c8e6000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040515115159050610d8857506001610cd1565b6003546040805160006020918201819052825160e360020a6311ced051028152600160a060020a03308116600483015293519390941693638e768288936024808301949391928390030190829087803b156100005760325a03f1156100005750506040515115159050610dfd57506001610cd1565b600754421015610e0f57506002610cd1565b6009544211158015610e265750610e24611dd6565b155b15610e3357506003610cd1565b610e3b611943565b15610e4857506004610cd1565b610e50611943565b158015610e5f57506000600b54115b8015610e6f5750600b54600d5410155b15610e7c57506007610cd1565b506005610cd1565b5b5b5b5b5b5b5b5b90565b60005433600160a060020a03908116911614610eaa57610000565b60048054600160a060020a031916600160a060020a0383811691909117808355604080516000602091820181905282517f614cb9040000000000000000000000000000000000000000000000000000000081529251939094169463614cb9049483820194929383900390910190829087803b156100005760325a03f1156100005750506040515115159050610c5057610000565b5b5b50565b60006002866000604051602001526040518082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506020604051808303816000866161da5a03f115610000575050604080518051600f54600083815260208085018652938501819052845183815260ff8a16818601528086018990526060810188905294519295506301000000909104600160a060020a0316936001936080808301949193601f198301938390039091019190866161da5a03f115610000575050604051601f190151600160a060020a03161461102657610000565b6001608060020a038516151561103b57610000565b6110458686611fdf565b5b505050505050565b60106020526000908152604090205481565b600160a060020a03331660009081526015602052604090205460ff16156110d757600160a060020a0382166000818152601260209081526040918290208490558151928352820183905280517f24a38383290a5525cd57e2bc5ba0a6fdeecfc4e35358081036bb7f16f75fe44c9281900390910190a15b5b5050565b600454600160a060020a031681565b60126020526000908152604090205481565b600160a060020a033316600090815260156020526040812054819060ff16156111a557600091505b83518210156111a55783828151811015610000576020908102909101810151600160a060020a038116600081815260128452604090819020879055805191825292810186905282519193507f24a38383290a5525cd57e2bc5ba0a6fdeecfc4e35358081036bb7f16f75fe44c92908290030190a15b600190910190611125565b5b5b50505050565b60005433600160a060020a039081169116146111c857610000565b60026111d2610ce0565b6007811161000057146111e457610000565b80151561123657600160a060020a03831660009081526011602052604090205461120e9083612361565b600160a060020a0384166000908152601160205260409020556112318383612389565b611344565b600160a060020a038316600090815260106020526040902054151561125f57600c805460010190555b61126b600b5482612361565b600b55600a5461127b9083612361565b600a55600160a060020a0383166000908152601060205260409020546112a19082612361565b600160a060020a0384166000908152601060209081526040808320939093556011905220546112d09083612361565b600160a060020a0384166000908152601160205260409020556112f38383612389565b60408051600160a060020a0385168152602081018390528082018490526000606082015290517f0396f60aaad038749091d273dc13aaabc63db6e2271c7bad442d5cf25cc433509181900360800190a15b5b5b505050565b60156020526000908152604090205460ff1681565b60175481565b60005433600160a060020a0390811691161461138157610000565b600081101561138f57610000565b600954816007540111156113a257610000565b426008546007540110156113b557610000565b6008819055600754604080519183018252517fe66c4175e3aaa49c92f939f7ef3ba52f6aae83d5cd4d802d4f500908a34682519181900360200190a15b5b50565b600b5481565b60015b90565b60048061140d610ce0565b60078111610000571461141f57610000565b60005433600160a060020a0390811691161461143a57610000565b60005460a060020a900460ff161561145157610000565b600f5460ff161561146157610000565b600454600160a060020a0316156114d55760048054604080517f0bf318a30000000000000000000000000000000000000000000000000000000081529051600160a060020a0390921692630bf318a392828201926000929082900301818387803b156100005760325a03f115610000575050505b600f805460ff191660011790555b5b5b5b50565b600060006000835185511415156114ff57610000565b600160a060020a03331660009081526015602052604090205460ff16156115bc57600092505b84518310156115bc57848381518110156100005790602001906020020151915083838151811015610000576020908102909101810151600160a060020a038416600081815260138452604090819020839055805191825292810182905282519193507f250590529a9cc5c130bc965bf509bdd9a1f6afd495e115bb79dff548826c988192908290030190a15b600190920191611525565b5b5b5050505050565b60005433600160a060020a039081169116146115e057610000565b60038054600160a060020a031916600160a060020a038381169190911791829055604080516000602091820181905282517f04bbc255000000000000000000000000000000000000000000000000000000008152925194909316936304bbc255936004808501948390030190829087803b156100005760325a03f1156100005750506040515115159050610c5057610000565b5b5b50565b600a5481565b60005433600160a060020a0390811691161461169957610000565b600160a060020a038216600081815260146020908152604091829020805460ff191685151590811790915582519384529083015280517f37f344ff00bb5da1c41ad23410b42b80bad2309375937c0b5928539882b0b11e9281900390910190a15b5b5050565b600060078061170c610ce0565b60078111610000571461171e57610000565b600160a060020a033316600090815260106020526040902054915081151561174557610000565b600160a060020a033316600090815260106020526040812055600e5461176b9083612361565b600e5560408051600160a060020a03331681526020810184905281517fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d929181900390910190a1604051600160a060020a0333169083156108fc029084906000818181858888f1935050505015156110d757610000565b5b5b5050565b600f5463010000009004600160a060020a031681565b600e5481565b60005433600160a060020a0390811691161461181f57610000565b6000805474ff0000000000000000000000000000000000000000191660a060020a1790555b5b565b60015481565b60005433600160a060020a0390811691161461186857610000565b8042111561187557610000565b60098190556040805182815290517fd34bb772c4ae9baa99db852f622773b31c7827e8ee818449fef20d30980bd3109181900360200190a15b5b50565b600160a060020a03331660009081526015602052604090205460ff16156110d757600160a060020a0382166000818152601360209081526040918290208490558151928352820183905280517f250590529a9cc5c130bc965bf509bdd9a1f6afd495e115bb79dff548826c98819281900390910190a15b5b5050565b600354600160a060020a031681565b600d5481565b600654600b5410155b90565b60005433600160a060020a0390811691161461196a57610000565b600f805461ff001916610100831515810291909117918290556040805160ff928404831615158152620100008404909216151560208301526301000000909204600160a060020a03168183015290517f48d826081348f5f00e8a33c9ae8ce89ed4c6e88400b585a478bc203d9e8177d3916060908290030190a15b5b50565b6005806119f4610ce0565b600781116100005714611a0657610000565b341515611a1257610000565b611a1e600d5434612361565b600d555b5b50565b60005433600160a060020a03908116911614611a4157610000565b60168190555b5b50565b600054600160a060020a031681565b600554600160a060020a031681565b60116020526000908152604090205481565b610c503382611ea6565b5b50565b60175481115b949350505050565b6102f233610c1a565b5b565b6000600460009054906101000a9004600160a060020a0316600160a060020a03166382771c8e6000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f115610000575050604051519150505b90565b60006000600083518551141515611b2a57610000565b600160a060020a03331660009081526015602052604090205460ff16156115bc57600092505b84518310156115bc57848381518110156100005790602001906020020151915083838151811015610000576020908102909101810151600160a060020a038416600081815260128452604090819020839055805191825292810182905282519193507f24a38383290a5525cd57e2bc5ba0a6fdeecfc4e35358081036bb7f16f75fe44c92908290030190a15b600190920191611b50565b5b5b5050505050565b60075481565b60136020526000908152604090205481565b600f5460ff1681565b600160a060020a033316600090815260156020526040812054819060ff16156111a557600091505b83518210156111a55783828151811015610000576020908102909101810151600160a060020a038116600081815260138452604090819020879055805191825292810186905282519193507f250590529a9cc5c130bc965bf509bdd9a1f6afd495e115bb79dff548826c988192908290030190a15b600190910190611c39565b5b5b50505050565b60005460a060020a900460ff1681565b60005433600160a060020a03908116911614611cec57610000565b42811015611cf957610000565b600954811115611d0857610000565b426007541015611d1757610000565b600781905560095460408051918252517fa3f2a813a039e5195c620dabcd490267a9aa5a50e4e1383bc474e9b800f7defe9181900360200190a15b5b50565b60085481565b60146020526000908152604090205460ff1681565b60005433600160a060020a03908116911614611d8c57610000565b60005460a060020a900460ff161515611da457610000565b6000805474ff0000000000000000000000000000000000000000191690555b5b5b565b600f5462010000900460ff1681565b601754600a5410155b90565b600c5481565b60005433600160a060020a03908116911614611e0357610000565b600f805462ff000019166201000084151581029190911776ffffffffffffffffffffffffffffffffffffffff00000019166301000000600160a060020a03858116820292909217938490556040805160ff6101008704811615158252948604909416151560208501529304168183015290517f48d826081348f5f00e8a33c9ae8ce89ed4c6e88400b585a478bc203d9e8177d3916060908290030190a15b5b5050565b600f5462010000900460ff1615611ebc57610000565b6001608060020a0381161515611ed157610000565b6110d78282611fdf565b5b5050565b60005433600160a060020a03908116911614611efb57610000565b600160a060020a03811615610c505760008054600160a060020a031916600160a060020a0383161790555b5b5b50565b60005433600160a060020a03908116911614611f4657610000565b600154600c541115611f5757610000565b60058054600160a060020a031916600160a060020a0383161790555b5b50565b6111a53385858585610f43565b5b50505050565b60005433600160a060020a03908116911614611fa657610000565b600160a060020a0382166000908152601560205260409020805460ff19168215151790555b5b5050565b600254600160a060020a031681565b6000600060006000600060149054906101000a900460ff161561200157610000565b612009610ce0565b93506003846007811161000057141561202157612063565b6002846007811161000057141561205e57600160a060020a03861660009081526014602052604090205460ff16151561205957610000565b612063565b610000565b5b349250600360009054906101000a9004600160a060020a0316600160a060020a03166318a4155e84600b54600a5433600260009054906101000a9004600160a060020a0316600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f11561000057505050604051805190506000604051602001526040518663ffffffff1660e060020a0281526004018086815260200185815260200184815260200183600160a060020a0316600160a060020a0316815260200182815260200195505050505050602060405180830381600087803b156100005760325a03f1156100005750506040515192505081151561218757610000565b600160a060020a03861660009081526010602052604090205415156121b057600c805460010190555b600160a060020a0386166000908152601060205260409020546121d39084612361565b600160a060020a0387166000908152601060209081526040808320939093556011905220546122029083612361565b600160a060020a0387166000908152601160209081526040808320939093556012905220546008546007549192500142111561225f57600160a060020a03861660009081526013602052604090205461225c908290612361565b90505b600160a060020a0386166000908152601060205260409020548190111561228557610000565b612291600b5484612361565b600b55600a546122a19083612361565b600a819055506122b78383600b54600a54611a89565b156122c157610000565b6122cb8683612389565b600554604051600160a060020a039091169084156108fc029085906000818181858888f1935050505015156122ff57610000565b60408051600160a060020a0388168152602081018590528082018490526001608060020a038716606082015290517f0396f60aaad038749091d273dc13aaabc63db6e2271c7bad442d5cf25cc433509181900360800190a15b5b505050505050565b600082820161237e8482108015906123795750838210155b612406565b8091505b5092915050565b600254604080517f40c10f19000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152602482018590529151919092169182916340c10f199160448082019260009290919082900301818387803b156100005760325a03f115610000575050505b505050565b801515610c5057610000565b5b505600a165627a7a72305820344cabd697c26801005cfbae304de1356fbd9c7106abcadce9b1e7b6356de25000290000000000000000000000000cf0ee63788a0849fe5297f3407f701e122cc0230000000000000000000000000f23b40d3c72cf0b2aab6506c81e11eb89a732b00000000000000000000000004ebc26dd291b391cd94bf32f55eeed539560e7f30000000000000000000000000000000000000000000000000000000059df59400000000000000000000000000000000000000000000000000000000059f1ce400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1b52add496b8b33500000

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

-----Decoded View---------------
Found 7 constructor arguments :
Arg [0] : 0000000000000000000000000cf0ee63788a0849fe5297f3407f701e122cc023
Arg [1] : 0000000000000000000000000f23b40d3c72cf0b2aab6506c81e11eb89a732b0
Arg [2] : 0000000000000000000000004ebc26dd291b391cd94bf32f55eeed539560e7f3
Arg [3] : 0000000000000000000000000000000000000000000000000000000059df5940
Arg [4] : 0000000000000000000000000000000000000000000000000000000059f1ce40
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [6] : 000000000000000000000000000000000000000000a1b52add496b8b33500000


   Swarm Source:
bzzr://344cabd697c26801005cfbae304de1356fbd9c7106abcadce9b1e7b6356de250
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.