Sponsored:   Ubex.com - Additional 17% of tokens are available for purchase! Trading on exchanges already started.
Contract Overview | DutyOfCareCrowdsale
Balance: 0 Ether
Ether Value: $0
Transactions: 83 txns
 Latest 25 txns from a total Of 83 transactions

TxHash Age From To Value [TxFee]
0x93027e473e34d978227f0656c656d548296f42b05b160b573615dbc81cd1662b1 day 19 hrs ago0xc604ee675d19a97c8919ccb6569669e8af690fd7  IN   DutyOfCareCrowdsale18.151119239999999 Ether0.000264996
0x6a6d16fb059ec97f90675b1f86479047642200c047d3aa56afb874919d009b6d13 days 3 hrs ago0xc604ee675d19a97c8919ccb6569669e8af690fd7  IN   DutyOfCareCrowdsale0.16711746 Ether0.00018947214
0x7f6293db86d1df63189e4d7d7833b56f856336b300f83ca41996a134a85013a813 days 3 hrs ago0xc604ee675d19a97c8919ccb6569669e8af690fd7  IN   DutyOfCareCrowdsale0.16763746 Ether0.0001722474
0x3224bf3d693cde700da5635c64aa4287652854d60837c551ad0404264482df3713 days 3 hrs ago0xc604ee675d19a97c8919ccb6569669e8af690fd7  IN   DutyOfCareCrowdsale0.16780867 Ether0.00011
0xe22d1a88c8eccde45d4b5e975524d0962c1400d6bc7c382c470c9b8bdca365f216 days 13 hrs ago0xc604ee675d19a97c8919ccb6569669e8af690fd7  IN   DutyOfCareCrowdsale0.16789746 Ether0.00002121
0x780ce1098e174f9a5ce971ad309c43ba36567fa17ae017387cfe16f8aaf4816923 days 11 hrs ago0xc604ee675d19a97c8919ccb6569669e8af690fd7  IN   DutyOfCareCrowdsale0.04 Ether0.00182713
0x4bff08c0da8556a8a93d5fa569d2cae383b3175e9e56cb6d9ec25732017ef89638 days 9 hrs ago0x00ec84aec2f4fe5790728fb6bbda1ef6d0b30351  IN   DutyOfCareCrowdsale0 Ether0.000784499
0x2ea23318b47217311fdd2e66446a43fc845c0ae9e997dd2af7561ad8361fb05b103 days 11 hrs ago0x004e7106c4df291ba773fddc9305f0fba03fe5df  IN   DutyOfCareCrowdsale0.05 Ether0.00794988
0x47f29960fac98ee1fe8306261b1ba1da7d5ac3b5ed48c3729ab15ab5902d9ae7103 days 12 hrs ago0x5032764a36405a06b80c10b230db39dbc5fb88d3  IN   DutyOfCareCrowdsale3 Ether0.00365426
0xb7d87451ef5ae7d3097b7009d174adcb0673e1ec431a36fd1d8a05d8fa34b317103 days 16 hrs ago0x004e7106c4df291ba773fddc9305f0fba03fe5df  IN   DutyOfCareCrowdsale0.05 Ether0.00794988
0x58b2dd1164e027aefba8a84074466d629b8e1c8993d25a36a0245f5c0581e797103 days 16 hrs ago0xd4d81e8280063eda1ba526699875514efccd8b03  IN   DutyOfCareCrowdsale0.01 Ether0.00066249
0x35b49cc18b1801a9d344582c44403739e513e2c876a4097395ac30ce2180a956103 days 17 hrs ago0x00ec84aec2f4fe5790728fb6bbda1ef6d0b30351  IN   DutyOfCareCrowdsale0 Ether0.000113855
0x2f4e92d4deaab5d7a560aaf261b89e6b2deb4efa2b10a32cdb9d9fb15e31caec105 days 11 hrs ago0x004e7106c4df291ba773fddc9305f0fba03fe5df  IN   DutyOfCareCrowdsale0.05 Ether0.00242616
0x02184640c55f957c087ba765b9ead23aca8c14fd5d128fce33f99d0756b2dce5108 days 18 hrs ago0x00ec84aec2f4fe5790728fb6bbda1ef6d0b30351  IN   DutyOfCareCrowdsale0 Ether0.000276882
0x630671b97a85a5553cd86a707fceec3fe46ccde89b4c065f1fe12bfb9d9468f9118 days 18 hrs ago0x00ec84aec2f4fe5790728fb6bbda1ef6d0b30351  IN   DutyOfCareCrowdsale0 Ether0.000230735
0x639133b26be70447415e1e174213a5f58833a74db565b99b357cf02d4e6ad1f9125 days 9 hrs ago0xadc1aac9c1872fc9b6e9725d84ed2b236c704a81  IN   DutyOfCareCrowdsale29 Ether0.00794988
0xf89e6218040f25f3a90af83b471b55e721f0776c78369bb633358bd5a067ddb9125 days 9 hrs ago0xadc1aac9c1872fc9b6e9725d84ed2b236c704a81  IN   DutyOfCareCrowdsale0.5 Ether0.01096278
0x906bdc5394c426f40d993db8f658badac9002daaa0288f236625490dac66a453125 days 9 hrs ago0xadc1aac9c1872fc9b6e9725d84ed2b236c704a81  IN   DutyOfCareCrowdsale0.5 Ether0.000053
0x54f896d8f60b48b666479edb8aa859068813bc4023bd3ef7f4a5fb6b045c0a50125 days 10 hrs ago0x00ec84aec2f4fe5790728fb6bbda1ef6d0b30351  IN   DutyOfCareCrowdsale0 Ether0.000184588
0x11319fbf4260d94c77c07bf72af8d28f0efd3a107565828f8314a7671afa520e125 days 10 hrs ago0xadc1aac9c1872fc9b6e9725d84ed2b236c704a81  IN   DutyOfCareCrowdsale0.5 Ether0.000022271
0x8f5943369e22f6229e3cc59c9ff5c5fca14d16ad999fb5f2c517113ce9250875129 days 16 hrs ago0xd4d81e8280063eda1ba526699875514efccd8b03  IN   DutyOfCareCrowdsale0.005 Ether0.00066249
0x9d928bf3bec77eb11cef8480aff01a8331aba1820bb469e314b0e1175825fa20130 days 10 hrs ago0xd4d81e8280063eda1ba526699875514efccd8b03  IN   DutyOfCareCrowdsale0.005 Ether0.00066249
0xfd491ca5a874e10568d0e72253cd0f76c14add91a710378ceaec4fde10d1c308143 days 9 hrs ago0xb4073cb51643f8789ef0a46226ea57ac0a5179b1  IN   DutyOfCareCrowdsale0.193 Ether0.000548139
0x98d54b3c62ea62b56efe5673db49bb22a26e7eb799c63074fa7e682fb617c4c3147 days 19 hrs ago0x00ec84aec2f4fe5790728fb6bbda1ef6d0b30351  IN   DutyOfCareCrowdsale0 Ether0.000230735
0xb3b1f7f32903c4eac1e67f33f5c64eb32c3bb027f60049f90374486e19230505150 days 7 hrs ago0x18298a4cf7509b786c2603081e6716be997c0d2b  IN   DutyOfCareCrowdsale0.025 Ether0.000365426
[ 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
0x93027e473e34d978227f0656c656d548296f42b05b160b573615dbc81cd1662b61719101 day 19 hrs ago0xe8db4cea1f7ad7ba22f3dbbab55a336545701d960x771226ea2e5eb2f0d4f373d0f42a63a3aa81cc3b18.151119239999999488 Ether
0x6a6d16fb059ec97f90675b1f86479047642200c047d3aa56afb874919d009b6d610478213 days 3 hrs ago0xe8db4cea1f7ad7ba22f3dbbab55a336545701d960x771226ea2e5eb2f0d4f373d0f42a63a3aa81cc3b0.16711746 Ether
0x7f6293db86d1df63189e4d7d7833b56f856336b300f83ca41996a134a85013a8610478213 days 3 hrs ago0xe8db4cea1f7ad7ba22f3dbbab55a336545701d960x771226ea2e5eb2f0d4f373d0f42a63a3aa81cc3b0.16763746 Ether
0x780ce1098e174f9a5ce971ad309c43ba36567fa17ae017387cfe16f8aaf48169604346723 days 11 hrs ago0xe8db4cea1f7ad7ba22f3dbbab55a336545701d960x771226ea2e5eb2f0d4f373d0f42a63a3aa81cc3b0.04 Ether
0x2ea23318b47217311fdd2e66446a43fc845c0ae9e997dd2af7561ad8361fb05b5582005103 days 11 hrs ago0xe8db4cea1f7ad7ba22f3dbbab55a336545701d960x771226ea2e5eb2f0d4f373d0f42a63a3aa81cc3b0.05 Ether
0x47f29960fac98ee1fe8306261b1ba1da7d5ac3b5ed48c3729ab15ab5902d9ae75581747103 days 12 hrs ago0xe8db4cea1f7ad7ba22f3dbbab55a336545701d960x771226ea2e5eb2f0d4f373d0f42a63a3aa81cc3b3 Ether
0xb7d87451ef5ae7d3097b7009d174adcb0673e1ec431a36fd1d8a05d8fa34b3175580873103 days 16 hrs ago0xe8db4cea1f7ad7ba22f3dbbab55a336545701d960x771226ea2e5eb2f0d4f373d0f42a63a3aa81cc3b0.05 Ether
0x58b2dd1164e027aefba8a84074466d629b8e1c8993d25a36a0245f5c0581e7975580872103 days 16 hrs ago0xe8db4cea1f7ad7ba22f3dbbab55a336545701d960x771226ea2e5eb2f0d4f373d0f42a63a3aa81cc3b0.01 Ether
0x639133b26be70447415e1e174213a5f58833a74db565b99b357cf02d4e6ad1f95455611125 days 9 hrs ago0xe8db4cea1f7ad7ba22f3dbbab55a336545701d960x771226ea2e5eb2f0d4f373d0f42a63a3aa81cc3b29 Ether
0xf89e6218040f25f3a90af83b471b55e721f0776c78369bb633358bd5a067ddb95455584125 days 9 hrs ago0xe8db4cea1f7ad7ba22f3dbbab55a336545701d960x771226ea2e5eb2f0d4f373d0f42a63a3aa81cc3b0.5 Ether
0x8f5943369e22f6229e3cc59c9ff5c5fca14d16ad999fb5f2c517113ce92508755430262129 days 16 hrs ago0xe8db4cea1f7ad7ba22f3dbbab55a336545701d960x771226ea2e5eb2f0d4f373d0f42a63a3aa81cc3b0.005 Ether
0x9d928bf3bec77eb11cef8480aff01a8331aba1820bb469e314b0e1175825fa205425854130 days 10 hrs ago0xe8db4cea1f7ad7ba22f3dbbab55a336545701d960x771226ea2e5eb2f0d4f373d0f42a63a3aa81cc3b0.005 Ether
0xf1c6d09aa6b116494233353c4a23600d8d8b91d54bc6f6c0d5e47002180622305358544141 days 14 hrs ago0xd6a062cae6123c158768a5c444ca0896cc60d6b10xe8db4cea1f7ad7ba22f3dbbab55a336545701d963.5 Ether
0xfd491ca5a874e10568d0e72253cd0f76c14add91a710378ceaec4fde10d1c3085347694143 days 9 hrs ago0xe8db4cea1f7ad7ba22f3dbbab55a336545701d960x771226ea2e5eb2f0d4f373d0f42a63a3aa81cc3b0.193 Ether
0xb3b1f7f32903c4eac1e67f33f5c64eb32c3bb027f60049f90374486e192305055306537150 days 7 hrs ago0xe8db4cea1f7ad7ba22f3dbbab55a336545701d960x771226ea2e5eb2f0d4f373d0f42a63a3aa81cc3b0.025 Ether
0x98b5169bfec1967fa78c646dbf11e635e0bd5916a328ca08e239bc26ecde96fc5288201153 days 8 hrs ago0xe8db4cea1f7ad7ba22f3dbbab55a336545701d960x771226ea2e5eb2f0d4f373d0f42a63a3aa81cc3b0.57 Ether
0xdb366c7f5f67ab2e2237bcf35a1bfb43a51cdf12969aebd19c0f4cb0ac10e6bc5281363154 days 12 hrs ago0xe8db4cea1f7ad7ba22f3dbbab55a336545701d960x771226ea2e5eb2f0d4f373d0f42a63a3aa81cc3b0.02 Ether
0xa05ffb4ef750b9a3f42ce6c8b3228162661337bd046b001096fa3eaecaff94ca5281330154 days 12 hrs ago0xe8db4cea1f7ad7ba22f3dbbab55a336545701d960x771226ea2e5eb2f0d4f373d0f42a63a3aa81cc3b0.05 Ether
0x8d91207598efd34bef1bdfaf72eec16c8699339c0df56f3df203278559a114905259421158 days 5 hrs ago0xe8db4cea1f7ad7ba22f3dbbab55a336545701d960x771226ea2e5eb2f0d4f373d0f42a63a3aa81cc3b10.7 Ether
0xcb079f696e8847eb867f647dcdeb1354dede1b21ccbd68ac0fa1989f3f2bddf95255854158 days 20 hrs ago0xe8db4cea1f7ad7ba22f3dbbab55a336545701d960x771226ea2e5eb2f0d4f373d0f42a63a3aa81cc3b7.6 Ether
0xb6dfe611443fa2901550bf9542e3ae6c92faa6bb223b14cfca17add38158ac8d5246077160 days 12 hrs ago0xe8db4cea1f7ad7ba22f3dbbab55a336545701d960x771226ea2e5eb2f0d4f373d0f42a63a3aa81cc3b15 Ether
0x51115a9ecacb4b2d35838caf7e9e86814d01899e033f57b5dc15f11d3340be005224222164 days 5 hrs ago0xe8db4cea1f7ad7ba22f3dbbab55a336545701d960x771226ea2e5eb2f0d4f373d0f42a63a3aa81cc3b0.5 Ether
0xf151fb8ab98bc46f29649d1de52e3ccc6d46f50898c31ba66e31f8ab923411b55222705164 days 11 hrs ago0xe8db4cea1f7ad7ba22f3dbbab55a336545701d960x771226ea2e5eb2f0d4f373d0f42a63a3aa81cc3b0.0011 Ether
0x42ed916e0fdf70963cbc4b58d0264675cb59809e6fd42f06e0d8b86cdd9d21e45221775164 days 15 hrs ago0xe8db4cea1f7ad7ba22f3dbbab55a336545701d960x771226ea2e5eb2f0d4f373d0f42a63a3aa81cc3b0.74 Ether
0x351629242085044c1edd5073cbbfba88aa55890dcfc8e2fe8f550ad29d6f9ba15215238165 days 18 hrs ago0xe8db4cea1f7ad7ba22f3dbbab55a336545701d960x771226ea2e5eb2f0d4f373d0f42a63a3aa81cc3b0.34 Ether
[ Download CSV Export  ] 
Warning: The compiled contract might be susceptible to EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) Solidity compiler bugs.

Contract Source Code Verified (Exact match)
Contract Name: AllocatedCrowdsale
Compiler Version: v0.4.18+commit.9cf6e910
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
 */


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

}

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






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


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

  function getCurrentTrancheVolume(uint tokensSold) public constant returns (uint);
}

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

}



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

  /** Addresses that are allowed to participate at any stage */
  mapping (address => bool) public isKycWhitelist;

  /** Addresses that are allowed to call automated management functions */
  mapping (address => bool) public isManagement;

  /** Minimum number of transactions in a tranche (protects against large purchases breaking tranche barriers by too much */
  uint public trancheMinTx = 0;

  /** Maximum that any single address can purchase (1 / max * totalSupply) */
  uint public maximumPurchaseFraction = 0;

  /** 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);
  event KycWhitelisted(address addr, bool status);
  event ManagementWhitelisted(address addr, bool status);

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

  State public testState;

  modifier onlyWhitelist() {
    require(isKycWhitelist[msg.sender]);
    _;
  }
  modifier onlyManagement() {
    require(isManagement[msg.sender]);
    _;
  }

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

  /**
   * Whitelist manegement
   */
  function setKycWhitelist(address _address, bool _state) public onlyManagement {
    isKycWhitelist[_address] = _state;
    KycWhitelisted(_address, _state);
  }
  /**
   * Management list manegement
   */
  function setManagement(address _address, bool _state) public onlyOwner {
    isManagement[_address] = _state;
    ManagementWhitelisted(_address, _state);
  }

  /**
   * Tranche TX minimums
   */
  function setTrancheMinTx(uint _minimum) public onlyOwner {
    trancheMinTx = _minimum;
  }

  /**
   * Total allowable purchase of tokens per address
   */
  function setMaximumPurchaseFraction(uint _maximum) public onlyOwner {
    maximumPurchaseFraction = _maximum;
  }

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

    // Check that the tx is a reasonable volume for the tranche
    if (trancheMinTx > 0) {
      uint trancheVolume = pricingStrategy.getCurrentTrancheVolume(tokensSold);
      uint maxVolume = trancheVolume / trancheMinTx;
      require(tokenAmount <= maxVolume);
    }

    if(maximumPurchaseFraction > 0) {
      uint256 maximumPurchase = token.totalSupply() / maximumPurchaseFraction;
      uint256 willHaveTokens = tokenAmountOf[receiver] + tokenAmount;
      require(willHaveTokens <= maximumPurchase);
    }

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


/**
 * A mixin that is selling tokens from a preallocated pool
 *
 * - Tokens have precreated supply "premined"
 *
 * - Token owner must transfer sellable tokens to the crowdsale contract using ERC20.approve()
 *
 * - The mixin does not implement buy entry point.
 *
 */
contract AllocatedCrowdsaleMixin is CrowdsaleBase {

  /* The party who holds the full token pool and has approve()'ed tokens for this crowdsale */
  address public beneficiary;

  /**
   * @param _beneficiary The account who has performed approve() to allocate tokens for the token sale.
   *
   */
  function AllocatedCrowdsaleMixin(address _beneficiary) {
    beneficiary = _beneficiary;
  }

  /**
   * 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) {
    if(tokenAmount > getTokensLeft()) {
      return true;
    } else {
      return false;
    }
  }

  /**
   * We are sold out when our approve pool becomes empty.
   */
  function isCrowdsaleFull() public constant returns (bool) {
    return getTokensLeft() == 0;
  }

  /**
   * Get the amount of unsold tokens allocated to this contract;
   */
  function getTokensLeft() public constant returns (uint) {
    return token.allowance(owner, this);
  }

  /**
   * Transfer tokens from approve() pool to the buyer.
   *
   * Use approve() given to this crowdsale to distribute the tokens.
   */
  function assignTokens(address receiver, uint tokenAmount) internal {
    if(!token.transferFrom(beneficiary, receiver, tokenAmount)) throw;
  }
}

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









/**
 * 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 buyWithCustomerIdWithChecksum(uint128 customerId, bytes1 checksum) public payable {
    // see customerid.py
    if (bytes1(sha3(customerId)) != checksum) throw;
    investWithCustomerId(msg.sender, customerId);
  }

  /**
   * Legacy API signature.
   */
  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);
  }
  function() payable {
    buy();
  }

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

}



/**
 * An implementation of allocated crowdsale.
 *
 * This implementation does not have KYC logic (vs. KYCCrowdsale).
 *
 */
contract AllocatedCrowdsale is AllocatedCrowdsaleMixin, Crowdsale {

  function AllocatedCrowdsale(address _token, PricingStrategy _pricingStrategy, address _multisigWallet, uint _start, uint _end, uint _minimumFundingGoal, address _beneficiary) Crowdsale(_token, _pricingStrategy, _multisigWallet, _start, _end, _minimumFundingGoal) AllocatedCrowdsaleMixin(_beneficiary) {

  }

}

    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":"beneficiary","outputs":[{"name":"","type":"address"}],"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":true,"inputs":[{"name":"","type":"address"}],"name":"isKycWhitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","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":"_minimum","type":"uint256"}],"name":"setTrancheMinTx","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"customerId","type":"uint128"},{"name":"checksum","type":"bytes1"}],"name":"buyWithCustomerIdWithChecksum","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_maximum","type":"uint256"}],"name":"setMaximumPurchaseFraction","outputs":[],"payable":false,"stateMutability":"nonpayable","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":false,"inputs":[{"name":"_address","type":"address"},{"name":"_state","type":"bool"}],"name":"setKycWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokenAmountOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"trancheMinTx","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":false,"inputs":[{"name":"_address","type":"address"},{"name":"_state","type":"bool"}],"name":"setManagement","outputs":[],"payable":false,"stateMutability":"nonpayable","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":true,"inputs":[],"name":"getTokensLeft","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maximumPurchaseFraction","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":true,"inputs":[{"name":"","type":"address"}],"name":"isManagement","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","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":"_beneficiary","type":"address"}],"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":"addr","type":"address"},{"indexed":false,"name":"status","type":"bool"}],"name":"KycWhitelisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addr","type":"address"},{"indexed":false,"name":"status","type":"bool"}],"name":"ManagementWhitelisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newEndsAt","type":"uint256"}],"name":"EndsAtChanged","type":"event"}]

  Contract Creation Code Switch To Opcodes View
6060604052600560015560006009556000600a556000600b556000600c556000600d556000600e556000601555600060165534156200003d57600080fd5b60405160e080620028428339810160405280805191906020018051919060200180519190602001805191906020018051919060200180519190602001805160008054600160a060020a03338116600160a060020a0319928316811783161790925560028054928c16929091169190911790559150879050868686868686868686868686620000d985640100000000620012786200017e82021704565b60058054600160a060020a031916600160a060020a0386811691909117918290551615156200010757600080fd5b8215156200011457600080fd5b60078390558115156200012657600080fd5b60088290556007548290106200013b57600080fd5b600655505060188054600160a060020a039095166101000261010060a860020a031990951694909417909355506200023d9e505050505050505050505050505050565b60005433600160a060020a039081169116146200019a57600080fd5b60038054600160a060020a031916600160a060020a038381169190911791829055166304bbc2556000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156200021257600080fd5b6102c65a03f115156200022457600080fd5b5050506040518051905015156200023a57600080fd5b50565b6125f5806200024d6000396000f3006060604052600436106102dc5763ffffffff60e060020a6000350416630226401d81146102e657806303ca0eed1461030b57806303f9c79314610332578063062b01ce146103465780630a09284a1461035957806313f4e9771461036c5780631865c57d1461037f57806319b667da146103b65780631a49803b146103d55780631aae34601461040a57806321d5c0f61461042957806332013ac31461045857806338af3eed1461047d5780634042b66f146104905780634551dd59146104a35780634bb278f3146104b65780634d925ea3146104c957806350c67734146104e8578063518ab2a814610507578063579506971461051a578063590e1ae31461052d5780635b7633d0146105405780635da89ac0146105535780635eb51d3c146105665780635ed7ca5b1461057c5780636203f09f1461058f57806363c6082f146105a2578063683799e6146105e45780636e50eb3f146105fa57806378b99c2414610610578063797d9437146106235780637c2e08a3146106365780637f7d711e1461064957806387612102146106615780638d51faec146106695780638da5cb5b1461067f5780639075becf1461069257806396401c58146106a557806397b150ca146106c957806399d9b306146106e857806399e9376c146106fb5780639d3c663f14610718578063a6f2ae3a146102dc578063a7ba44c314610737578063af4686821461074a578063b3f05b971461075d578063b9b8af0b14610770578063c3edbc2614610783578063cb16e6d0146107a7578063cb3e64fd146107c6578063d222dc04146107d9578063d5d09021146107ec578063d7e64c00146107ff578063de5f986614610812578063ea05667a14610825578063eac2493214610838578063ec0c7e281461085c578063ed68ff2c1461087b578063ef8694431461089f578063f2fde38b146108c8578063f3283fba146108e7578063f486972614610906578063f7c00e2f1461092f578063fc0c546a14610942575b6102e4610955565b005b34156102f157600080fd5b6102f9610960565b60405190815260200160405180910390f35b341561031657600080fd5b61031e610966565b604051901515815260200160405180910390f35b6102e4600160a060020a0360043516610988565b341561035157600080fd5b61031e6109ea565b341561036457600080fd5b6102f9610a65565b341561037757600080fd5b6102f9610a6b565b341561038a57600080fd5b610392610a71565b604051808260078111156103a257fe5b60ff16815260200191505060405180910390f35b34156103c157600080fd5b6102e4600160a060020a0360043516610c1b565b6102e4600160a060020a03600435166fffffffffffffffffffffffffffffffff6024351660ff60443516606435608435610cca565b341561041557600080fd5b6102f9600160a060020a0360043516610de2565b341561043457600080fd5b61043c610df4565b604051600160a060020a03909116815260200160405180910390f35b341561046357600080fd5b6102e4600160a060020a0360043516602435604435610e03565b341561048857600080fd5b61043c61115c565b341561049b57600080fd5b6102f9611170565b34156104ae57600080fd5b61031e611176565b34156104c157600080fd5b6102e461117b565b34156104d457600080fd5b61031e600160a060020a0360043516611263565b34156104f357600080fd5b6102e4600160a060020a0360043516611278565b341561051257600080fd5b6102f96112fe565b341561052557600080fd5b610392611304565b341561053857600080fd5b6102e461130d565b341561054b57600080fd5b61043c611464565b341561055e57600080fd5b6102f9611473565b341561057157600080fd5b6102e4600435611479565b341561058757600080fd5b6102e4611499565b341561059a57600080fd5b6102f96114eb565b6102e46fffffffffffffffffffffffffffffffff600435167fff00000000000000000000000000000000000000000000000000000000000000602435166114f1565b34156105ef57600080fd5b6102e4600435611584565b341561060557600080fd5b6102e46004356115a4565b341561061b57600080fd5b61043c611616565b341561062e57600080fd5b6102f9611625565b341561064157600080fd5b61031e61162b565b341561065457600080fd5b6102e46004351515611636565b6102e4611716565b341561067457600080fd5b6102e46004356117c4565b341561068a57600080fd5b61043c6117e4565b341561069d57600080fd5b61043c6117f3565b34156106b057600080fd5b6102e4600160a060020a03600435166024351515611802565b34156106d457600080fd5b6102f9600160a060020a036004351661189a565b34156106f357600080fd5b6102f96118ac565b6102e46fffffffffffffffffffffffffffffffff600435166118b2565b341561072357600080fd5b61031e6004356024356044356064356118bc565b341561074257600080fd5b61031e6118e1565b341561075557600080fd5b6102f961192b565b341561076857600080fd5b61031e611931565b341561077b57600080fd5b61031e61193a565b341561078e57600080fd5b6102e4600160a060020a0360043516602435151561195b565b34156107b257600080fd5b61031e600160a060020a03600435166119e7565b34156107d157600080fd5b6102e46119fc565b34156107e457600080fd5b61031e611a60565b34156107f757600080fd5b61031e611a83565b341561080a57600080fd5b6102f9611a93565b341561081d57600080fd5b6102f9611a99565b341561083057600080fd5b6102f9611b03565b341561084357600080fd5b6102e4600160a060020a03600435166024351515611b09565b341561086757600080fd5b61031e600160a060020a0360043516611b95565b341561088657600080fd5b6102e46004351515600160a060020a0360243516611baa565b6102e4600160a060020a03600435166fffffffffffffffffffffffffffffffff60243516611cae565b34156108d357600080fd5b6102e4600160a060020a0360043516611d05565b34156108f257600080fd5b6102e4600160a060020a0360043516611d64565b6102e46fffffffffffffffffffffffffffffffff6004351660ff60243516604435606435611dbf565b341561093a57600080fd5b6102f9611dd2565b341561094d57600080fd5b61043c611dd8565b61095e33610988565b565b60175481565b6018547501000000000000000000000000000000000000000000900460ff1681565b6018547501000000000000000000000000000000000000000000900460ff16156109b157600080fd5b601854760100000000000000000000000000000000000000000000900460ff16156109db57600080fd5b6109e6816000611de7565b5050565b600354600090600160a060020a0316638e76828830836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610a4557600080fd5b6102c65a03f11515610a5657600080fd5b50505060405180519150505b90565b60085481565b60065481565b600f5460009060ff1615610a8757506006610a62565b600454600160a060020a03161515610aa157506001610a62565b600454600160a060020a03166382771c8e6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610ae957600080fd5b6102c65a03f11515610afa57600080fd5b505050604051805190501515610b1257506001610a62565b600354600160a060020a0316638e7682883060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610b6b57600080fd5b6102c65a03f11515610b7c57600080fd5b505050604051805190501515610b9457506001610a62565b600754421015610ba657506002610a62565b6008544211158015610bbd5750610bbb611a83565b155b15610bca57506003610a62565b610bd261162b565b15610bdf57506004610a62565b610be761162b565b158015610bf657506000600a54115b8015610c065750600a54600d5410155b15610c1357506007610a62565b506005610a62565b60005433600160a060020a03908116911614610c3657600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383811691909117918290551663614cb9046000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610ca157600080fd5b6102c65a03f11515610cb257600080fd5b505050604051805190501515610cc757600080fd5b50565b6000600286600060405160200152604051600160a060020a03919091166c0100000000000000000000000002815260140160206040518083038160008661646e5a03f11515610d1857600080fd5b50506040518051601954909250600160a060020a031690506001828686866040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f11515610d9557600080fd5b505060206040510351600160a060020a031614610db157600080fd5b6fffffffffffffffffffffffffffffffff85161515610dcf57600080fd5b610dd98686611de7565b50505050505050565b60106020526000908152604090205481565b600454600160a060020a031681565b60008054819033600160a060020a03908116911614610e2157600080fd5b600254600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610e6957600080fd5b6102c65a03f11515610e7a57600080fd5b50505060405180519050600a0a840291508383029050600a547399422cd5a7ebca1c477e9275a8093255d24bed026366098d4f90918360006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515610ef257600080fd5b6102c65a03f41515610f0357600080fd5b5050506040518051600a55506009547399422cd5a7ebca1c477e9275a8093255d24bed02906366098d4f908460006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515610f7157600080fd5b6102c65a03f41515610f8257600080fd5b505050604051805160095550600160a060020a038516600090815260106020526040808220547399422cd5a7ebca1c477e9275a8093255d24bed02926366098d4f92859190516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561100557600080fd5b6102c65a03f4151561101657600080fd5b5050506040518051600160a060020a03871660009081526010602090815260408083209390935560119052818120547399422cd5a7ebca1c477e9275a8093255d24bed0293506366098d4f9290918691516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b15156110a457600080fd5b6102c65a03f415156110b557600080fd5b5050506040518051600160a060020a038716600090815260116020526040902055506110e1858361252b565b7f0396f60aaad038749091d273dc13aaabc63db6e2271c7bad442d5cf25cc4335085828460006040518085600160a060020a0316600160a060020a03168152602001848152602001838152602001826fffffffffffffffffffffffffffffffff16815260200194505050505060405180910390a15050505050565b6018546101009004600160a060020a031681565b600a5481565b600190565b600480611186610a71565b600781111561119157fe5b1461119b57600080fd5b60005433600160a060020a039081169116146111b657600080fd5b60005474010000000000000000000000000000000000000000900460ff16156111de57600080fd5b600f5460ff16156111ee57600080fd5b600454600160a060020a03161561125357600454600160a060020a0316630bf318a36040518163ffffffff1660e060020a028152600401600060405180830381600087803b151561123e57600080fd5b6102c65a03f1151561124f57600080fd5b5050505b50600f805460ff19166001179055565b60136020526000908152604090205460ff1681565b60005433600160a060020a0390811691161461129357600080fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169190911791829055166304bbc2556000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610ca157600080fd5b60095481565b60185460ff1681565b600060078061131a610a71565b600781111561132557fe5b1461132f57600080fd5b600160a060020a033316600090815260106020526040902054915081151561135657600080fd5b600160a060020a033316600090815260106020526040808220829055600e547399422cd5a7ebca1c477e9275a8093255d24bed02926366098d4f92869190516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b15156113d257600080fd5b6102c65a03f415156113e357600080fd5b5050506040518051600e55507fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d3383604051600160a060020a03909216825260208201526040908101905180910390a1600160a060020a03331682156108fc0283604051600060405180830381858888f1935050505015156109e657600080fd5b601954600160a060020a031681565b600e5481565b60005433600160a060020a0390811691161461149457600080fd5b601555565b60005433600160a060020a039081169116146114b457600080fd5b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b60015481565b7fff000000000000000000000000000000000000000000000000000000000000008116826040516fffffffffffffffffffffffffffffffff919091167001000000000000000000000000000000000281526010016040519081900390207fff00000000000000000000000000000000000000000000000000000000000000161461157a57600080fd5b6109e63383611cae565b60005433600160a060020a0390811691161461159f57600080fd5b601655565b60005433600160a060020a039081169116146115bf57600080fd5b804211156115cc57600080fd5b8060075411156115db57600080fd5b60088190557fd34bb772c4ae9baa99db852f622773b31c7827e8ee818449fef20d30980bd3108160405190815260200160405180910390a150565b600354600160a060020a031681565b600d5481565b600654600a54101590565b60005433600160a060020a0390811691161461165157600080fd5b6018805475ff00000000000000000000000000000000000000000019167501000000000000000000000000000000000000000000831515810291909117918290556019547f48d826081348f5f00e8a33c9ae8ce89ed4c6e88400b585a478bc203d9e8177d39260ff9281048316927601000000000000000000000000000000000000000000009091041690600160a060020a031660405192151583529015156020830152600160a060020a03166040808301919091526060909101905180910390a150565b600580611721610a71565b600781111561172c57fe5b1461173657600080fd5b34151561174257600080fd5b600d547399422cd5a7ebca1c477e9275a8093255d24bed026366098d4f90913460006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b15156117a457600080fd5b6102c65a03f415156117b557600080fd5b5050506040518051600d555050565b60005433600160a060020a039081169116146117df57600080fd5b601755565b600054600160a060020a031681565b600554600160a060020a031681565b600160a060020a03331660009081526014602052604090205460ff16151561182957600080fd5b600160a060020a03821660009081526013602052604090819020805460ff19168315151790557fa9cdd5d09190ef5411d8af62b4a1d1b260a1168b644cabcee1afdc7f9808c1ea908390839051600160a060020a039092168252151560208201526040908101905180910390a15050565b60116020526000908152604090205481565b60155481565b610cc73382611cae565b60006118c6611a99565b8411156118d5575060016118d9565b5060005b949350505050565b600454600090600160a060020a03166382771c8e82604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610a4557600080fd5b60075481565b600f5460ff1681565b60005474010000000000000000000000000000000000000000900460ff1681565b60005433600160a060020a0390811691161461197657600080fd5b600160a060020a03821660009081526014602052604090819020805460ff19168315151790557f3722931bae6148ab64541ce067a6e0ecbb3f21e016ba52c034ae3e7f8982e737908390839051600160a060020a039092168252151560208201526040908101905180910390a15050565b60126020526000908152604090205460ff1681565b60005433600160a060020a03908116911614611a1757600080fd5b60005474010000000000000000000000000000000000000000900460ff161515611a4057600080fd5b6000805474ff000000000000000000000000000000000000000019169055565b601854760100000000000000000000000000000000000000000000900460ff1681565b6000611a8d611a99565b15905090565b600c5481565b600254600080549091600160a060020a039081169163dd62ed3e911630846040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b1515610a4557600080fd5b60165481565b60005433600160a060020a03908116911614611b2457600080fd5b600160a060020a03821660009081526012602052604090819020805460ff19168315151790557fa54714518c5d275fdcd3d2a461e4858e4e8cb04fb93cd0bca9d6d34115f26440908390839051600160a060020a039092168252151560208201526040908101905180910390a15050565b60146020526000908152604090205460ff1681565b60005433600160a060020a03908116911614611bc557600080fd5b6018805476ff000000000000000000000000000000000000000000001916760100000000000000000000000000000000000000000000841515810291909117918290556019805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0385811691909117918290557f48d826081348f5f00e8a33c9ae8ce89ed4c6e88400b585a478bc203d9e8177d39360ff7501000000000000000000000000000000000000000000820481169490910416911660405192151583529015156020830152600160a060020a03166040808301919091526060909101905180910390a15050565b601854760100000000000000000000000000000000000000000000900460ff1615611cd857600080fd5b6fffffffffffffffffffffffffffffffff81161515611cf657600080fd5b611d008282611de7565b505050565b60005433600160a060020a03908116911614611d2057600080fd5b600160a060020a0381161515611d3557600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60005433600160a060020a03908116911614611d7f57600080fd5b600154600c541115611d9057600080fd5b6005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b611dcc3385858585610cca565b50505050565b600b5481565b600254600160a060020a031681565b60008060008060008060008060149054906101000a900460ff1615611e0b57600080fd5b600160a060020a03331660009081526013602052604090205460ff161515611e3257600080fd5b6002611e3c610a71565b6007811115611e4757fe5b1415611e7957600160a060020a03891660009081526012602052604090205460ff161515611e7457600080fd5b611e9e565b6003611e83610a71565b6007811115611e8e57fe5b1415611e9957611e9e565b600080fd5b600354600b54600a54600954600254349a50600160a060020a03948516946318a4155e948c9403929133911663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611f0657600080fd5b6102c65a03f11515611f1757600080fd5b5050506040518051905060006040516020015260405160e060020a63ffffffff8816028152600481019590955260248501939093526044840191909152600160a060020a03166064830152608482015260a401602060405180830381600087803b1515611f8357600080fd5b6102c65a03f11515611f9457600080fd5b5050506040518051955050841515611fab57600080fd5b6000601554111561204757600354600954600160a060020a039091169063306c4ebe9060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561200d57600080fd5b6102c65a03f1151561201e57600080fd5b5050506040518051905093506015548481151561203757fe5b0492508285111561204757600080fd5b600060165411156120f057601654600254600160a060020a03166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561209d57600080fd5b6102c65a03f115156120ae57600080fd5b505050604051805190508115156120c157fe5b600160a060020a038b16600090815260116020526040902054919004925085019050818111156120f057600080fd5b600160a060020a038916600090815260106020526040902054151561211957600c805460010190555b600160a060020a038916600090815260106020526040808220547399422cd5a7ebca1c477e9275a8093255d24bed02926366098d4f928a9190516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561219057600080fd5b6102c65a03f415156121a157600080fd5b5050506040518051600160a060020a038b1660009081526010602090815260408083209390935560119052818120547399422cd5a7ebca1c477e9275a8093255d24bed0293506366098d4f9290918991516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561222f57600080fd5b6102c65a03f4151561224057600080fd5b5050506040518051600160a060020a038b1660009081526011602052604080822092909255600a547399422cd5a7ebca1c477e9275a8093255d24bed0293506366098d4f9290918a91516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b15156122c757600080fd5b6102c65a03f415156122d857600080fd5b5050506040518051600a55506009547399422cd5a7ebca1c477e9275a8093255d24bed02906366098d4f908760006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561234657600080fd5b6102c65a03f4151561235757600080fd5b505050604051805160095550600354600160a060020a031663f14ae17d8a60006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156123bc57600080fd5b6102c65a03f115156123cd57600080fd5b505050604051805190501561245c57600b547399422cd5a7ebca1c477e9275a8093255d24bed026366098d4f90918860006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561243e57600080fd5b6102c65a03f4151561244f57600080fd5b5050506040518051600b55505b61246c8686600a546009546118bc565b1561247657600080fd5b612480898661252b565b600554600160a060020a031686156108fc0287604051600060405180830381858888f1935050505015156124b357600080fd5b7f0396f60aaad038749091d273dc13aaabc63db6e2271c7bad442d5cf25cc433508987878b604051600160a060020a03909416845260208401929092526040808401919091526fffffffffffffffffffffffffffffffff90911660608301526080909101905180910390a15092979650505050505050565b600254601854600160a060020a03918216916323b872dd91610100900416848460006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b15156125a357600080fd5b6102c65a03f115156125b457600080fd5b5050506040518051905015156109e657600080fd00a165627a7a723058208af48e030a93930483bb13006950704887d20afbb325c77ce82f2351b2f3a11d002900000000000000000000000082bd526bdb718c6d4dd2291ed013a5186cae2dca000000000000000000000000fed170a89320b695e745bece9441ee33049b25d0000000000000000000000000771226ea2e5eb2f0d4f373d0f42a63a3aa81cc3b000000000000000000000000000000000000000000000000000000005a97c110000000000000000000000000000000000000000000000000000000005ae82c900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000771226ea2e5eb2f0d4f373d0f42a63a3aa81cc3b

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

-----Decoded View---------------
Found 7 constructor arguments :
Arg [0] : 00000000000000000000000082bd526bdb718c6d4dd2291ed013a5186cae2dca
Arg [1] : 000000000000000000000000fed170a89320b695e745bece9441ee33049b25d0
Arg [2] : 000000000000000000000000771226ea2e5eb2f0d4f373d0f42a63a3aa81cc3b
Arg [3] : 000000000000000000000000000000000000000000000000000000005a97c110
Arg [4] : 000000000000000000000000000000000000000000000000000000005ae82c90
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [6] : 000000000000000000000000771226ea2e5eb2f0d4f373d0f42a63a3aa81cc3b


   Library Used
SafeMathLib : 0x99422cd5a7ebca1c477e9275a8093255d24bed02

   Swarm Source:
bzzr://8af48e030a93930483bb13006950704887d20afbb325c77ce82f2351b2f3a11d

 

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.