Contract 0x230c2a140e758087f7107dd31943c5c03b819e55

 

TxHash Block Age From To Value [TxFee]
0x2345af08e9460a7877b50e5a2a05f3539f289bb60dd80c4a39b7e96af458f6e272163863 days 17 hrs ago0x3f41bbb95e19a5dce78abe289014b9661beede1f  IN   Cointed_TokenSale0 Ether0.00046771
0x39e838961910877d5c446cb7ad3b8e33fd5657e1f8cb1e73f10ada0dad93315872127824 days 14 hrs ago0x306e7a4b38251107c53e9f43a0233ac09b101836  IN   Cointed_TokenSale0 Ether0.000259923009
0xf0dbfb53dd5a34ae2a17a1ee36b3f69483cdccc5b66a3b101166dc69fe03e361712756622 days 7 hrs ago0x5889823cd24e11222ba370732218ffe1d9938108  IN   Cointed_TokenSale0 Ether0.000187084
0x40415a8de2b9be609e67fe61d1e7a7271a1b2f6d54ee9cd2269bc9ed068b4d5d708501130 days 9 hrs ago0x11ea5d20c306daa1f015e4ebed59fef82d979342  IN   Cointed_TokenSale0 Ether0.003735666
0x834b4acef54a0ca8592f12625eb844d8b06d5fec56f8b0750b6030d2aebc6d00701363243 days 4 hrs ago0x7b734c018bfb8d481e2ff19841e42ae4ddbfdd85  IN   Cointed_TokenSale0 Ether0.001207488
0x811eba16180239a1847ce70097043f56bc31a7d241f5622b0c1faf7346c2fc96700949643 days 22 hrs ago0x61173c95682e1518e89cb4ccfc72c7303b827d60  IN   Cointed_TokenSale0 Ether0.00022602
0x99968168e7cefe0d6606c0daa6aa461958ed89b7cd3f159a5abfd7066ed4bbf6698843847 days 14 hrs ago0xd140b8dfe64db9e42c535c03413609eaf3ee24f4  IN   Cointed_TokenSale0 Ether0.001175
0xc75fe532fcc08eb30a5d3195162e32a6661bb8a051501eb35bdda23d800654be698842747 days 14 hrs ago0xd140b8dfe64db9e42c535c03413609eaf3ee24f4  IN   Cointed_TokenSale0 Ether0.00018867
0x5895f74993f615d56fd3e39b5d3ed3c4cb7b368cba636d6315fda99f1016dad6697538949 days 18 hrs ago0xbaf076a34323278d81dd5685186dda1ed68e56ae  IN   Cointed_TokenSale0 Ether0.00086641
0xf60ac657a5657ef3afcd34165f525744ee91089ae594a2e93f917a7ffec2f32c694426955 days 49 mins ago0xad638318b41e39859c6052a3d909fab9e28c64d5  IN   Cointed_TokenSale0 Ether0.001547094
0xef8abaab08f002d6308da4a70e1dcf6cf1c55ae686f4b6d7d0cc95a2a58190326604556111 days 3 hrs ago0x846c5f9d1164e98586d5a8cd35822a803e574c41  IN   Cointed_TokenSale0 Ether0.000150936
0xc9aaecc86b52958e50d3816f9c1d4d076e51d92e7637b98e72e1a26aa99a91a96604535111 days 3 hrs ago0x846c5f9d1164e98586d5a8cd35822a803e574c41  IN   Cointed_TokenSale0 Ether0.000953496
0x5b06c3a9655f8e74908b95e803e6c623945f796f30b49e7dcdf57dc234f505a46588513113 days 18 hrs ago0x5e5be167e2e5fa1ad9020fdb5287fc9280f2353b  IN   Cointed_TokenSale0 Ether0.00113202
0xb02063fac824501151d283580d7069269d08cb4e9801d68b21c1de96f5cf689b6575616115 days 21 hrs ago0xd2bdb790df12e4e124084e280dd4c31ef08cdace  IN   Cointed_TokenSale0 Ether0.000514481
0xcb3b16a733bc2c447fbe0532147f8e156ce4bdb77af86daa3234ade29aa1d80f6561319118 days 5 hrs ago0x33e8810b5432ccd823b6c45975a55fb9f6c931d6  IN   Cointed_TokenSale0 Ether0.000561252
0x04c9ed5d490763bcc444d57b25c77d9128116dd932520c11357c00c4682d464c6467920133 days 10 hrs ago0xc92b113a6295456e39abfb8f5903b8717b513003  IN   Cointed_TokenSale0 Ether0.0000608023
0xfbfd71e9a7283e00f3b076d09b27b7b02ef272e6912ec9afd616b3f55c525d226466035133 days 17 hrs ago0x66ca2435347a05ec90482fc6b8b3309ad80a1101  IN   Cointed_TokenSale0 Ether0.000093542
0xdcdd6909e9f57eb196baf8f5d8fe8c36f481b6dba1655b0d0e3b2166d50396696465976133 days 17 hrs ago0x00c0790fd01a61b25f97515bc705d5946d693315  IN   Cointed_TokenSale0 Ether0.0001028962
0x8ab8c7cd82dd34aaeb5b717ed732f166f928f12f4bbe904f53eeb65297e4da9b6332419155 days 15 hrs ago0xf65bb1dd453066a8705fc931a48c40f00ce979d4  IN   Cointed_TokenSale0 Ether0.000233855
0xcd4525df5aab6eab05da350e385fb54e6a6ffc8561c1c14bea5571558fabd2086287987163 days 1 hr ago0x53b0b71c1303ef5639c4669f888b670f86929680  IN   Cointed_TokenSale0 Ether0.000187084
0x027091a04664be43edb756b3e728a166ae3c356025e1faf5b73bf997cd522d6e6265509166 days 20 hrs ago0xe7b4aac17dbd50d040b3cf989cc2d197aca54d0b  IN   Cointed_TokenSale0 Ether0.000187084
0x2542e586928c4a5eb896bef8a472754a01123e816df234dca4a73673c0ff47476245208170 days 6 hrs ago0x1acee83486b6671b005eed45c9fb9277e7eeb63d  IN   Cointed_TokenSale0 Ether0.001547094
0x7b8aee407306245dcea4f30c1dcfb1db5f691b4d3bff4a808b9f5c69450fa18e6187782179 days 22 hrs ago0x23f42432f7f50ed8594aaf312e22a19ee71bf05e  IN   Cointed_TokenSale0 Ether0.00037734
0x9d0d3d27d50149eb55a956be59e67f00aeac4b4c8cb9d4c6360b800f665f26cc6187727179 days 23 hrs ago0x23f42432f7f50ed8594aaf312e22a19ee71bf05e  IN   Cointed_TokenSale0 Ether0.00021
0x2418e168937f5fbe7b859c3fd497e845a456ea1a113c7b8d8f1a537e798b5c226176527181 days 20 hrs ago0x297880871bd2e4f8e5af71303b4a2db4aaed98ac  IN   Cointed_TokenSale0 Ether0.000075468
[ Download CSV Export 

Latest 25 Internal Transaction, Click here to view more Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0x8ddc659702bf4e972f166454ff448fc346a674790f0f116c6be0c2e107e10b845173797353 days 14 hrs ago0x230c2a140e758087f7107dd31943c5c03b819e550x2b076d1ca0ec6ea8002b7a69512281e513406c941.1 Ether
0xf3532ebde970de32322fa3c472c5bea4ddcd71bc3266773718bed247163cce2b5173785353 days 14 hrs ago0x230c2a140e758087f7107dd31943c5c03b819e550x2b076d1ca0ec6ea8002b7a69512281e513406c940.2627 Ether
0xf1016656bfcabadbde92926daf73b9e6bbb1c81780bee300bdd62ce78293bafb5173748353 days 14 hrs ago0x230c2a140e758087f7107dd31943c5c03b819e550x2b076d1ca0ec6ea8002b7a69512281e513406c9410 Ether
0xb646f332f2a085cf0d0ad55949c1dbb68cd59f0be2080eb07d4de9b66c1f754a5173731353 days 14 hrs ago0x230c2a140e758087f7107dd31943c5c03b819e550x2b076d1ca0ec6ea8002b7a69512281e513406c940.5 Ether
0x5e1521568235da44544c9a3294de03608a440ec56935271c295ac93da9bf8f475173666353 days 15 hrs ago0x230c2a140e758087f7107dd31943c5c03b819e550x2b076d1ca0ec6ea8002b7a69512281e513406c943 Ether
0x6bf49cc79db32c15d8d26d384c435d5acbe75fb6ca8af9c78e72ebeda8c49be05173650353 days 15 hrs ago0x230c2a140e758087f7107dd31943c5c03b819e550x2b076d1ca0ec6ea8002b7a69512281e513406c940.387211829 Ether
0x76aafa276581e47fd0bb4874b8332e6cf7d779cba6423a31538a01097be4c8c85173644353 days 15 hrs ago0x230c2a140e758087f7107dd31943c5c03b819e550x2b076d1ca0ec6ea8002b7a69512281e513406c940.333 Ether
0xf618daf1bbc93d86b1fa350b421b926de56af7ae338022406bc26b1ba1a797375173636353 days 15 hrs ago0x230c2a140e758087f7107dd31943c5c03b819e550x2b076d1ca0ec6ea8002b7a69512281e513406c940.15 Ether
0xf3879cbd7effa3f9c02f38606cbc71dbaff2de3c82daabf0c1419e3151d86c9a5173628353 days 15 hrs ago0x230c2a140e758087f7107dd31943c5c03b819e550x2b076d1ca0ec6ea8002b7a69512281e513406c940.183 Ether
0x04854ac6aeb3f61e7eb24e5f820b1acdaec79d9cf3fbfd8b645061a60eee78455173627353 days 15 hrs ago0x230c2a140e758087f7107dd31943c5c03b819e550x2b076d1ca0ec6ea8002b7a69512281e513406c940.22073606 Ether
0x043eb748c564e6ec3b8f0397ffdc2423e1c2821c3e99683c0828e6c9a64048ef5173596353 days 15 hrs ago0x230c2a140e758087f7107dd31943c5c03b819e550x2b076d1ca0ec6ea8002b7a69512281e513406c940.26 Ether
0x96742b55a760bc4c94c9a0bfc2bb4da33f1c32cbce9850843ed46934f1bd540f5173530353 days 15 hrs ago0x230c2a140e758087f7107dd31943c5c03b819e550x2b076d1ca0ec6ea8002b7a69512281e513406c941.40087116 Ether
0x5d841e3d9f16cc53088648fcb9be64154743392298103f5b87321aa3ecfac9f55173492353 days 16 hrs ago0x230c2a140e758087f7107dd31943c5c03b819e550x2b076d1ca0ec6ea8002b7a69512281e513406c942.685 Ether
0x96b3119e8c7a48ba34eb5a188554aa34d17b1d83fd1379e4f7fddfa3e3f0b25b5173462353 days 16 hrs ago0x230c2a140e758087f7107dd31943c5c03b819e550x2b076d1ca0ec6ea8002b7a69512281e513406c940.019 Ether
0x266be4007f7941b7e5341404c629311dc4dd591b7875e5169eae4a4ab36777f45173458353 days 16 hrs ago0x230c2a140e758087f7107dd31943c5c03b819e550x2b076d1ca0ec6ea8002b7a69512281e513406c940.42940738973632141 Ether
0xac32d63ce8687772d49cb3d92784f52663aa178e421291828917f833d7161a195173454353 days 16 hrs ago0x230c2a140e758087f7107dd31943c5c03b819e550x2b076d1ca0ec6ea8002b7a69512281e513406c940.13 Ether
0x5dc83b15c990be60fe2b260017c21183d916850e7158b409882bdaff8d3d59cf5173447353 days 16 hrs ago0x230c2a140e758087f7107dd31943c5c03b819e550x2b076d1ca0ec6ea8002b7a69512281e513406c940.2 Ether
0xe4a9a13ec75744e2fc6ea36e2302a6350e3afd91302af5c2c651ea80f7be89735173442353 days 16 hrs ago0x230c2a140e758087f7107dd31943c5c03b819e550x2b076d1ca0ec6ea8002b7a69512281e513406c940.005 Ether
0x8d11807895e2386a6460d33085454fe06973730169959ab6497435bcc55522595173400353 days 16 hrs ago0x230c2a140e758087f7107dd31943c5c03b819e550x2b076d1ca0ec6ea8002b7a69512281e513406c942 Ether
0x57d8613e5096463d4d5bcb028b45e6f6cac552754dbe2f62ed426f165f9c665e5173324353 days 16 hrs ago0x230c2a140e758087f7107dd31943c5c03b819e550x2b076d1ca0ec6ea8002b7a69512281e513406c940.558863134 Ether
0x168d91f58086c842455e31a1156d9d2396c3776d55057846397f339d5222ed8d5173284353 days 16 hrs ago0x230c2a140e758087f7107dd31943c5c03b819e550x2b076d1ca0ec6ea8002b7a69512281e513406c940.65 Ether
0xe0c2f93e1227e404e45519524a02d0d9943fb15b8cb9c2453ddd2f2dc9cfc0355173248353 days 17 hrs ago0x230c2a140e758087f7107dd31943c5c03b819e550x2b076d1ca0ec6ea8002b7a69512281e513406c940.314653105 Ether
0xf9ec294ed34dd02afbc89480ccce7882bc1f7b7b34d0516c2a4204be61a7dabf5173169353 days 17 hrs ago0x230c2a140e758087f7107dd31943c5c03b819e550x2b076d1ca0ec6ea8002b7a69512281e513406c940.003 Ether
0x9d7c6c8e823160ad1c5bfcb942c8442d548b990d6e1cd16439a821ae9fa31c105173070353 days 17 hrs ago0x230c2a140e758087f7107dd31943c5c03b819e550x2b076d1ca0ec6ea8002b7a69512281e513406c940.047 Ether
0xadbba8a3f5a72b56770722c84a62934502b0c967f02c82cc0910118d017328ce5173068353 days 17 hrs ago0x230c2a140e758087f7107dd31943c5c03b819e550x2b076d1ca0ec6ea8002b7a69512281e513406c943 Ether
[ Download CSV Export 
Warning: The compiled contract might be susceptible to ExpExponentCleanup (medium/high-severity), NestedArrayFunctionCallDecoder (medium-severity), ZeroFunctionSelector (very low-severity) Solidity Compiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: CtdToken
Compiler Version: v0.4.15+commit.bbb8e64f
Optimization Enabled: Yes
Runs (Optimizer):  200


Contract Source Code
pragma solidity 0.4.15;

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

  function div(uint256 a, uint256 b) internal constant returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

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

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

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


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


  /**
   * @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 public {
    require(newOwner != address(0));
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}

/**
 * @title PausableOnce
 * @dev The PausableOnce contract provides an option for the "pauseMaster"
 * to pause once the transactions for two weeks.
 *
 */

contract PausableOnce is Ownable {

    /** Address that can start the pause */
    address public pauseMaster;

    uint constant internal PAUSE_DURATION = 14 days;
    uint64 public pauseEnd = 0;

    event Paused();

    /**
     * @dev Set the pauseMaster (callable by the owner only).
     * @param _pauseMaster The address of the pauseMaster
     */
    function setPauseMaster(address _pauseMaster) onlyOwner external returns (bool success) {
        require(_pauseMaster != address(0));
        pauseMaster = _pauseMaster;
        return true;
    }

    /**
     * @dev Start the pause (by the pauseMaster, ONCE only).
     */
    function pause() onlyPauseMaster external returns (bool success) {
        require(pauseEnd == 0);
        pauseEnd = uint64(now + PAUSE_DURATION);
        Paused();
        return true;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     */
    modifier whenNotPaused() {
        require(now > pauseEnd);
        _;
    }

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

}

/**
 * @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) public constant returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}

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

  mapping(address => uint256) balances;

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

    // SafeMath.sub will throw if there is not enough balance.
    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    Transfer(msg.sender, _to, _value);
    return true;
  }

  /**
  * @dev Gets the balance of the specified address.
  * @param _owner The address to query the the balance of.
  * @return An uint256 representing the amount owned by the passed address.
  */
  function balanceOf(address _owner) public constant returns (uint256 balance) {
    return balances[_owner];
  }

}

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

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

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


  /**
   * @dev Transfer tokens from one address to another
   * @param _from address The address which you want to send tokens from
   * @param _to address The address which you want to transfer to
   * @param _value uint256 the amount of tokens to be transferred
   */
  function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));

    uint256 _allowance = allowed[_from][msg.sender];

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

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

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

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

  /**
   * approve should be called when allowed[_spender] == 0. To increment
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   */
  function increaseApproval (address _spender, uint _addedValue)
    returns (bool success) {
    allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

  function decreaseApproval (address _spender, uint _subtractedValue)
    returns (bool success) {
    uint oldValue = allowed[msg.sender][_spender];
    if (_subtractedValue > oldValue) {
      allowed[msg.sender][_spender] = 0;
    } else {
      allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
    }
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

}

/**
* @title Upgrade agent interface
*/
contract InterfaceUpgradeAgent {

    uint32 public revision;
    uint256 public originalSupply;

    /**
     * @dev Reissue the tokens onto the new contract revision.
     * @param holder Holder (owner) of the tokens
     * @param tokenQty How many tokens to be issued
     */
    function upgradeFrom(address holder, uint256 tokenQty) public;
}

/**
 * @title UpgradableToken
 * @dev The UpgradableToken contract provides an option of upgrading the tokens to a new revision.
 * The "upgradeMaster" may propose the upgrade. Token holders can opt-in amount of tokens to upgrade.
 */

contract UpgradableToken is StandardToken, Ownable {

    using SafeMath for uint256;

    uint32 public REVISION;

    /** Address that can set the upgrade agent thus enabling the upgrade. */
    address public upgradeMaster = address(0);

    /** Address of the contract that issues the new revision tokens. */
    address public upgradeAgent = address(0);

    /** How many tokens are upgraded. */
    uint256 public totalUpgraded;

    event Upgrade(address indexed _from, uint256 _value);
    event UpgradeEnabled(address agent);

    /**
     * @dev Set the upgrade master.
     * parameter _upgradeMaster Upgrade master
     */
    function setUpgradeMaster(address _upgradeMaster) onlyOwner external {
        require(_upgradeMaster != address(0));
        upgradeMaster = _upgradeMaster;
    }

    /**
     * @dev Set the upgrade agent (once only) thus enabling the upgrade.
     * @param _upgradeAgent Upgrade agent contract address
     * @param _revision Unique ID that agent contract must return on ".revision()"
     */
    function setUpgradeAgent(address _upgradeAgent, uint32 _revision)
        onlyUpgradeMaster whenUpgradeDisabled external
    {
        require((_upgradeAgent != address(0)) && (_revision != 0));

        InterfaceUpgradeAgent agent = InterfaceUpgradeAgent(_upgradeAgent);

        require(agent.revision() == _revision);
        require(agent.originalSupply() == totalSupply);

        upgradeAgent = _upgradeAgent;
        UpgradeEnabled(_upgradeAgent);
    }

    /**
     * @dev Upgrade tokens to the new revision.
     * @param value How many tokens to be upgraded
     */
    function upgrade(uint256 value) whenUpgradeEnabled external {
        require(value > 0);

        uint256 balance = balances[msg.sender];
        require(balance > 0);

        // Take tokens out from the old contract
        balances[msg.sender] = balance.sub(value);
        totalSupply = totalSupply.sub(value);
        totalUpgraded = totalUpgraded.add(value);
        // Issue the new revision tokens
        InterfaceUpgradeAgent agent = InterfaceUpgradeAgent(upgradeAgent);
        agent.upgradeFrom(msg.sender, value);

        Upgrade(msg.sender, value);
    }

    /**
    * @dev Modifier to make a function callable only when the upgrade is enabled.
    */
    modifier whenUpgradeEnabled() {
        require(upgradeAgent != address(0));
        _;
    }

    /**
    * @dev Modifier to make a function callable only when the upgrade is impossible.
    */
    modifier whenUpgradeDisabled() {
        require(upgradeAgent == address(0));
        _;
    }

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

}

/**
 * @title Withdrawable
 * @dev The Withdrawable contract provides a mechanism of withdrawal(s).
 * "Withdrawals" are permissions for specified addresses to pull (withdraw) payments from the contract balance.
 */

contract Withdrawable {

    mapping (address => uint) pendingWithdrawals;

    /*
     * @dev Logged upon a granted allowance to the specified drawer on withdrawal.
     * @param drawer The address of the drawer.
     * @param weiAmount The value in Wei which may be withdrawn.
     */
    event Withdrawal(address indexed drawer, uint256 weiAmount);

    /*
     * @dev Logged upon a withdrawn value.
     * @param drawer The address of the drawer.
     * @param weiAmount The value in Wei which has been withdrawn.
     */
    event Withdrawn(address indexed drawer, uint256 weiAmount);

    /*
     * @dev Allow the specified drawer to withdraw the specified value from the contract balance.
     * @param drawer The address of the drawer.
     * @param weiAmount The value in Wei allowed to withdraw.
     * @return success
     */
    function setWithdrawal(address drawer, uint256 weiAmount) internal returns (bool success) {
        if ((drawer != address(0)) && (weiAmount > 0)) {
            uint256 oldBalance = pendingWithdrawals[drawer];
            uint256 newBalance = oldBalance + weiAmount;
            if (newBalance > oldBalance) {
                pendingWithdrawals[drawer] = newBalance;
                Withdrawal(drawer, weiAmount);
                return true;
            }
        }
        return false;
    }

    /*
     * @dev Withdraw the allowed value from the contract balance.
     * @return success
     */
    function withdraw() public returns (bool success) {
        uint256 weiAmount = pendingWithdrawals[msg.sender];
        require(weiAmount > 0);

        pendingWithdrawals[msg.sender] = 0;
        msg.sender.transfer(weiAmount);
        Withdrawn(msg.sender, weiAmount);
        return true;
    }

}

/**
 * @title Cointed Token
 * @dev Cointed Token (CTD) and Token Sale (ICO).
 */

contract CtdToken is UpgradableToken, PausableOnce, Withdrawable {

    using SafeMath for uint256;

    string public constant name = "Cointed Token";
    string public constant symbol = "CTD";
    /** Number of "Atom" in 1 CTD (1 CTD = 1x10^decimals Atom) */
    uint8  public constant decimals = 18;

    /** Holder of bounty tokens */
    address public bounty;

    /** Limit (in Atom) issued, inclusive owner's and bounty shares */
    uint256 constant internal TOTAL_LIMIT   = 650000000 * (10 ** uint256(decimals));
    /** Limit (in Atom) for Pre-ICO Phases A, incl. owner's and bounty shares */
    uint256 constant internal PRE_ICO_LIMIT = 130000000 * (10 ** uint256(decimals));

    /**
    * ICO Phases.
    *
    * - PreStart: tokens are not yet sold/issued
    * - PreIcoA:  new tokens sold/issued at the premium price
    * - PreIcoB:  new tokens sold/issued at the discounted price
    * - MainIco   new tokens sold/issued at the regular price
    * - AfterIco: new tokens can not be not be sold/issued any longer
    */
    enum Phases {PreStart, PreIcoA, PreIcoB, MainIco, AfterIco}

    uint64 constant internal PRE_ICO_DURATION = 745 hours;
    uint64 constant internal ICO_DURATION = 2423 hours + 59 minutes;
    uint64 constant internal RETURN_WEI_PAUSE = 30 days;

    // Main ICO rate in CTD(s) per 1 ETH:
    uint256 constant internal TO_SENDER_RATE   = 1000;
    uint256 constant internal TO_OWNER_RATE    =  263;
    uint256 constant internal TO_BOUNTY_RATE   =   52;
    uint256 constant internal TOTAL_RATE   =   TO_SENDER_RATE + TO_OWNER_RATE + TO_BOUNTY_RATE;
    // Pre-ICO Phase A rate
    uint256 constant internal TO_SENDER_RATE_A = 1150;
    uint256 constant internal TO_OWNER_RATE_A  =  304;
    uint256 constant internal TO_BOUNTY_RATE_A =   61;
    uint256 constant internal TOTAL_RATE_A   =   TO_SENDER_RATE_A + TO_OWNER_RATE_A + TO_BOUNTY_RATE_A;
    // Pre-ICO Phase B rate
    uint256 constant internal TO_SENDER_RATE_B = 1100;
    uint256 constant internal TO_OWNER_RATE_B  =  292;
    uint256 constant internal TO_BOUNTY_RATE_B =   58;
    uint256 constant internal TOTAL_RATE_B   =   TO_SENDER_RATE_B + TO_OWNER_RATE_B + TO_BOUNTY_RATE_B;

    // Award in Wei(s) to a successful initiator of a Phase shift
    uint256 constant internal PRE_OPENING_AWARD = 100 * (10 ** uint256(15));
    uint256 constant internal ICO_OPENING_AWARD = 200 * (10 ** uint256(15));
    uint256 constant internal ICO_CLOSING_AWARD = 500 * (10 ** uint256(15));

    struct Rates {
        uint256 toSender;
        uint256 toOwner;
        uint256 toBounty;
        uint256 total;
    }

    event NewTokens(uint256 amount);
    event NewFunds(address funder, uint256 value);
    event NewPhase(Phases phase);

    // current Phase
    Phases public phase = Phases.PreStart;

    // Timestamps limiting duration of Phases, in seconds since Unix epoch.
    uint64 public preIcoOpeningTime;  // when Pre-ICO Phase A starts
    uint64 public icoOpeningTime;     // when Main ICO starts (if not sold out before)
    uint64 public closingTime;        // by when the ICO campaign finishes in any way
    uint64 public returnAllowedTime;  // when owner may withdraw Eth from contract, if any

    uint256 public totalProceeds;

    /*
     * @dev constructor
     * @param _preIcoOpeningTime Timestamp when the Pre-ICO (Phase A) shall start.
     * msg.value MUST be at least the sum of awards.
     */
    function CtdToken(uint64 _preIcoOpeningTime) payable {
        require(_preIcoOpeningTime > now);

        preIcoOpeningTime = _preIcoOpeningTime;
        icoOpeningTime = preIcoOpeningTime + PRE_ICO_DURATION;
        closingTime = icoOpeningTime + ICO_DURATION;
    }

    /*
     * @dev Fallback function delegates the request to create().
     */
    function () payable external {
        create();
    }

    /**
     * @dev Set the address of the holder of bounty tokens.
     * @param _bounty The address of the bounty token holder.
     * @return success/failure
     */
    function setBounty(address _bounty) onlyOwner external returns (bool success) {
        require(_bounty != address(0));
        bounty = _bounty;
        return true;
    }

    /**
     * @dev Mint tokens and add them to the balance of the message.sender.
     * Additional tokens are minted and added to the owner and the bounty balances.
     * @return success/failure
     */
    function create() payable whenNotClosed whenNotPaused public returns (bool success) {
        require(msg.value > 0);
        require(now >= preIcoOpeningTime);

        Phases oldPhase = phase;
        uint256 weiToParticipate = msg.value;
        uint256 overpaidWei;

        adjustPhaseBasedOnTime();

        if (phase != Phases.AfterIco) {

            Rates memory rates = getRates();
            uint256 newTokens = weiToParticipate.mul(rates.total);
            uint256 requestedSupply = totalSupply.add(newTokens);

            uint256 oversoldTokens = computeOversoldAndAdjustPhase(requestedSupply);
            overpaidWei = (oversoldTokens > 0) ? oversoldTokens.div(rates.total) : 0;

            if (overpaidWei > 0) {
                weiToParticipate = msg.value.sub(overpaidWei);
                newTokens = weiToParticipate.mul(rates.total);
                requestedSupply = totalSupply.add(newTokens);
            }

            // "emission" of new tokens
            totalSupply = requestedSupply;
            balances[msg.sender] = balances[msg.sender].add(weiToParticipate.mul(rates.toSender));
            balances[owner] = balances[owner].add(weiToParticipate.mul(rates.toOwner));
            balances[bounty] = balances[bounty].add(weiToParticipate.mul(rates.toBounty));

            // ETH transfers
            totalProceeds = totalProceeds.add(weiToParticipate);
            owner.transfer(weiToParticipate);
            if (overpaidWei > 0) {
                setWithdrawal(msg.sender, overpaidWei);
            }

            // Logging
            NewTokens(newTokens);
            NewFunds(msg.sender, weiToParticipate);

        } else {
            setWithdrawal(msg.sender, msg.value);
        }

        if (phase != oldPhase) {
            logShiftAndBookAward();
        }

        return true;
    }

    /**
     * @dev Send the value (ethers) that the contract holds to the owner address.
     */
    function returnWei() onlyOwner whenClosed afterWithdrawPause external {
        owner.transfer(this.balance);
    }

    function adjustPhaseBasedOnTime() internal {

        if (now >= closingTime) {
            if (phase != Phases.AfterIco) {
                phase = Phases.AfterIco;
            }
        } else if (now >= icoOpeningTime) {
            if (phase != Phases.MainIco) {
                phase = Phases.MainIco;
            }
        } else if (phase == Phases.PreStart) {
            setDefaultParamsIfNeeded();
            phase = Phases.PreIcoA;
        }
    }

    function setDefaultParamsIfNeeded() internal {
        if (bounty == address(0)) {
            bounty = owner;
        }
        if (upgradeMaster == address(0)) {
            upgradeMaster = owner;
        }
        if (pauseMaster == address(0)) {
            pauseMaster = owner;
        }
    }

    function computeOversoldAndAdjustPhase(uint256 newTotalSupply) internal returns (uint256 oversoldTokens) {

        if ((phase == Phases.PreIcoA) &&
            (newTotalSupply >= PRE_ICO_LIMIT)) {
            phase = Phases.PreIcoB;
            oversoldTokens = newTotalSupply.sub(PRE_ICO_LIMIT);

        } else if (newTotalSupply >= TOTAL_LIMIT) {
            phase = Phases.AfterIco;
            oversoldTokens = newTotalSupply.sub(TOTAL_LIMIT);

        } else {
            oversoldTokens = 0;
        }

        return oversoldTokens;
    }

    function getRates() internal returns (Rates rates) {

        if (phase == Phases.PreIcoA) {
            rates.toSender = TO_SENDER_RATE_A;
            rates.toOwner = TO_OWNER_RATE_A;
            rates.toBounty = TO_BOUNTY_RATE_A;
            rates.total = TOTAL_RATE_A;
        } else if (phase == Phases.PreIcoB) {
            rates.toSender = TO_SENDER_RATE_B;
            rates.toOwner = TO_OWNER_RATE_B;
            rates.toBounty = TO_BOUNTY_RATE_B;
            rates.total = TOTAL_RATE_B;
        } else {
            rates.toSender = TO_SENDER_RATE;
            rates.toOwner = TO_OWNER_RATE;
            rates.toBounty = TO_BOUNTY_RATE;
            rates.total = TOTAL_RATE;
        }
        return rates;
    }

    function logShiftAndBookAward() internal {
        uint256 shiftAward;

        if ((phase == Phases.PreIcoA) || (phase == Phases.PreIcoB)) {
            shiftAward = PRE_OPENING_AWARD;

        } else if (phase == Phases.MainIco) {
            shiftAward = ICO_OPENING_AWARD;

        } else {
            shiftAward = ICO_CLOSING_AWARD;
            returnAllowedTime = uint64(now + RETURN_WEI_PAUSE);
        }

        setWithdrawal(msg.sender, shiftAward);
        NewPhase(phase);
    }

    /**
     * @dev Transfer tokens to the specified address.
     * @param _to The address to transfer to.
     * @param _value The amount of tokens to be transferred.
     * @return success/failure
     */
    function transfer(address _to, uint256 _value)
        whenNotPaused limitForOwner public returns (bool success)
    {
        return super.transfer(_to, _value);
    }

    /**
     * @dev Transfer tokens from one address to another.
     * @param _from address The address which you want to send tokens from.
     * @param _to address The address which you want to transfer to.
     * @param _value the amount of tokens to be transferred.
     * @return success/failure
     */
    function transferFrom(address _from, address _to, uint256 _value)
        whenNotPaused limitForOwner public returns (bool success)
    {
        return super.transferFrom(_from, _to, _value);
    }

    /**
     * @dev Approve the specified address to spend the specified amount of tokens on behalf of the msg.sender.
     * Use "increaseApproval" or "decreaseApproval" function to change the approval, if needed.
     * @param _spender The address which will spend the funds.
     * @param _value The amount of tokens to be spent.
     * @return success/failure
     */
    function approve(address _spender, uint256 _value)
        whenNotPaused limitForOwner public returns (bool success)
    {
        require((_value == 0) || (allowed[msg.sender][_spender] == 0));
        return super.approve(_spender, _value);
    }

    /**
     * @dev Increase the approval for the passed address to spend tokens on behalf of the msg.sender.
     * @param _spender The address which will spend the funds.
     * @param _addedValue The amount of tokens to increase the approval with.
     * @return success/failure
     */
    function increaseApproval(address _spender, uint _addedValue)
        whenNotPaused limitForOwner public returns (bool success)
    {
        return super.increaseApproval(_spender, _addedValue);
    }

    /**
     * @dev Decrease the approval for the passed address to spend tokens on behalf of the msg.sender.
     * @param _spender The address which will spend the funds.
     * @param _subtractedValue The amount of tokens to decrease the approval with.
     * @return success/failure
     */
    function decreaseApproval(address _spender, uint _subtractedValue)
        whenNotPaused limitForOwner public returns (bool success)
    {
        return super.decreaseApproval(_spender, _subtractedValue);
    }

    /*
     * @dev Withdraw the allowed value (ethers) from the contract balance.
     * @return success/failure
     */
    function withdraw() whenNotPaused public returns (bool success) {
        return super.withdraw();
    }

    /**
     * @dev Throws if called when ICO is active.
     */
    modifier whenClosed() {
        require(phase == Phases.AfterIco);
        _;
    }

    /**
     * @dev Throws if called when ICO is completed.
     */
    modifier whenNotClosed() {
        require(phase != Phases.AfterIco);
        _;
    }

    /**
     * @dev Throws if called by the owner before ICO is completed.
     */
    modifier limitForOwner() {
        require((msg.sender != owner) || (phase == Phases.AfterIco));
        _;
    }

    /**
     * @dev Throws if called before returnAllowedTime.
     */
    modifier afterWithdrawPause() {
        require(now > returnAllowedTime);
        _;
    }

}

Contract ABI
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_pauseMaster","type":"address"}],"name":"setPauseMaster","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"icoOpeningTime","outputs":[{"name":"","type":"uint64"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"returnWei","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"upgrade","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"closingTime","outputs":[{"name":"","type":"uint64"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"upgradeAgent","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"upgradeMaster","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"bounty","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_upgradeAgent","type":"address"},{"name":"_revision","type":"uint32"}],"name":"setUpgradeAgent","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"phase","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_bounty","type":"address"}],"name":"setBounty","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"pauseMaster","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalUpgraded","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"pauseEnd","outputs":[{"name":"","type":"uint64"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"REVISION","outputs":[{"name":"","type":"uint32"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"create","outputs":[{"name":"success","type":"bool"}],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"totalProceeds","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"preIcoOpeningTime","outputs":[{"name":"","type":"uint64"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"returnAllowedTime","outputs":[{"name":"","type":"uint64"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_upgradeMaster","type":"address"}],"name":"setUpgradeMaster","outputs":[],"payable":false,"type":"function"},{"inputs":[{"name":"_preIcoOpeningTime","type":"uint64"}],"payable":true,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"NewTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"funder","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"NewFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"phase","type":"uint8"}],"name":"NewPhase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"drawer","type":"address"},{"indexed":false,"name":"weiAmount","type":"uint256"}],"name":"Withdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"drawer","type":"address"},{"indexed":false,"name":"weiAmount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"anonymous":false,"inputs":[],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Upgrade","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"agent","type":"address"}],"name":"UpgradeEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]

Contract Creation Code
606060405260048054600160a060020a03199081169091556005805490911690556007805460a060020a60e060020a0319169055600980546000919060a060020a60ff02191674010000000000000000000000000000000000000000835b02179055506040516020806122ea833981016040528080519150505b5b60038054600160a060020a03191633600160a060020a03161790555b426001604060020a038216116100ab57600080fd5b600980546001604060020a03808416750100000000000000000000000000000000000000000090810260a860020a60e860020a03199093169290921792839055600a80549290930481166228ec9001811667ffffffffffffffff199092169190911780821662852744019091166801000000000000000002604060020a608060020a03199091161790555b505b6121a3806101476000396000f3006060604052361561019b5763ffffffff60e060020a60003504166306fdde0381146101a8578063095ea7b3146102335780630f4391f51461026957806318160ddd1461029c57806323b872dd146102c15780632d884a51146102fd578063313ce5671461032d5780633ccfd60b146103565780633f5cbdb61461037d57806345977d03146103925780634b6753bc146103aa5780635de4ccb0146103da578063600440cb14610409578063661884631461043857806370a082311461046e5780638456cb591461049f5780638da5cb5b146104c6578063943dfef1146104f557806395d89b4114610524578063a9059cbb146105af578063aa5a20e5146105e5578063b1c9fe6e1461060f578063bc300ed314610646578063c5c0b85914610679578063c752ff62146106a8578063d73dd623146106cd578063d87522ae14610703578063dd62ed3e14610733578063dde43cba1461076a578063efc81a8c14610796578063f1db23dc146107b2578063f2fde38b146107d7578063f397884b146107f8578063f885eaf214610828578063ffeb7d7514610858575b5b6101a4610879565b505b005b34156101b357600080fd5b6101bb610c3b565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101f85780820151818401525b6020016101df565b50505050905090810190601f1680156102255780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561023e57600080fd5b610255600160a060020a0360043516602435610c72565b604051901515815260200160405180910390f35b341561027457600080fd5b610255600160a060020a0360043516610d25565b604051901515815260200160405180910390f35b34156102a757600080fd5b6102af610d7d565b60405190815260200160405180910390f35b34156102cc57600080fd5b610255600160a060020a0360043581169060243516604435610d83565b604051901515815260200160405180910390f35b341561030857600080fd5b610310610dfd565b60405167ffffffffffffffff909116815260200160405180910390f35b341561033857600080fd5b610340610e0d565b60405160ff909116815260200160405180910390f35b341561036157600080fd5b610255610e12565b604051901515815260200160405180910390f35b341561038857600080fd5b6101a6610e43565b005b341561039d57600080fd5b6101a6600435610eee565b005b34156103b557600080fd5b610310611043565b60405167ffffffffffffffff909116815260200160405180910390f35b34156103e557600080fd5b6103ed61105f565b604051600160a060020a03909116815260200160405180910390f35b341561041457600080fd5b6103ed61106e565b604051600160a060020a03909116815260200160405180910390f35b341561044357600080fd5b610255600160a060020a036004351660243561107d565b604051901515815260200160405180910390f35b341561047957600080fd5b6102af600160a060020a03600435166110f5565b60405190815260200160405180910390f35b34156104aa57600080fd5b610255611114565b604051901515815260200160405180910390f35b34156104d157600080fd5b6103ed6111c3565b604051600160a060020a03909116815260200160405180910390f35b341561050057600080fd5b6103ed6111d2565b604051600160a060020a03909116815260200160405180910390f35b341561052f57600080fd5b6101bb6111e1565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101f85780820151818401525b6020016101df565b50505050905090810190601f1680156102255780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156105ba57600080fd5b610255600160a060020a0360043516602435611218565b604051901515815260200160405180910390f35b34156105f057600080fd5b6101a6600160a060020a036004351663ffffffff60243516611290565b005b341561061a57600080fd5b610622611438565b6040518082600481111561063257fe5b60ff16815260200191505060405180910390f35b341561065157600080fd5b610255600160a060020a0360043516611448565b604051901515815260200160405180910390f35b341561068457600080fd5b6103ed6114a0565b604051600160a060020a03909116815260200160405180910390f35b34156106b357600080fd5b6102af6114af565b60405190815260200160405180910390f35b34156106d857600080fd5b610255600160a060020a03600435166024356114b5565b604051901515815260200160405180910390f35b341561070e57600080fd5b61031061152d565b60405167ffffffffffffffff909116815260200160405180910390f35b341561073e57600080fd5b6102af600160a060020a0360043581169060243516611544565b60405190815260200160405180910390f35b341561077557600080fd5b61077d611571565b60405163ffffffff909116815260200160405180910390f35b610255610879565b604051901515815260200160405180910390f35b34156107bd57600080fd5b6102af611584565b60405190815260200160405180910390f35b34156107e257600080fd5b6101a6600160a060020a036004351661158a565b005b341561080357600080fd5b610310611616565b60405167ffffffffffffffff909116815260200160405180910390f35b341561083357600080fd5b61031061163f565b60405167ffffffffffffffff909116815260200160405180910390f35b341561086357600080fd5b6101a6600160a060020a0360043516611663565b005b60008060008061088761214e565b6000808060045b60095460a060020a900460ff1660048111156108a657fe5b14156108b157600080fd5b60075460a060020a900467ffffffffffffffff1642116108d057600080fd5b600034116108dd57600080fd5b6009547501000000000000000000000000000000000000000000900467ffffffffffffffff1642101561090f57600080fd5b60095460a060020a900460ff1696503495506109296116b3565b60045b60095460a060020a900460ff16600481111561094457fe5b14610bec576109516117e8565b93506109688460600151879063ffffffff61189616565b60005490935061097e908463ffffffff6118c516565b9150610989826118df565b90506000811161099a5760006109af565b6109af8460600151829063ffffffff6119d416565b5b945060008511156109fb576109cb348663ffffffff6119f016565b95506109e28460600151879063ffffffff61189616565b6000549093506109f8908463ffffffff6118c516565b91505b6000829055610a3a610a158551889063ffffffff61189616565b600160a060020a0333166000908152600160205260409020549063ffffffff6118c516565b600160a060020a033316600090815260016020908152604090912091909155610a9890610a7190860151889063ffffffff61189616565b600354600160a060020a03166000908152600160205260409020549063ffffffff6118c516565b600354600160a060020a03166000908152600160205260409081902091909155610af790610ad090860151889063ffffffff61189616565b600954600160a060020a03166000908152600160205260409020549063ffffffff6118c516565b600954600160a060020a0316600090815260016020526040902055600b54610b25908763ffffffff6118c516565b600b55600354600160a060020a031686156108fc0287604051600060405180830381858888f193505050501515610b5b57600080fd5b6000851115610b7057610b6e3386611a07565b505b7fd7c894eab7da0862dea424c47485ac49eab56e3690186d9ee97bfc895e0eb5e98360405190815260200160405180910390a17f2b6aa69d7af29fd38518d44025ae0801e505fb9e1065cb57945b4200ef7d71943387604051600160a060020a03909216825260208201526040908101905180910390a1610bf8565b610bf63334611a07565b505b866004811115610c0457fe5b60095460a060020a900460ff166004811115610c1c57fe5b14610c2957610c29611ab5565b5b600197505b5b5b5050505050505090565b60408051908101604052600d81527f436f696e74656420546f6b656e00000000000000000000000000000000000000602082015281565b60075460009060a060020a900467ffffffffffffffff164211610c9457600080fd5b60035433600160a060020a039081169116141580610cca575060045b60095460a060020a900460ff166004811115610cc857fe5b145b1515610cd557600080fd5b811580610d055750600160a060020a03338116600090815260026020908152604080832093871683529290522054155b1515610d1057600080fd5b610d1a8383611bec565b90505b5b5b92915050565b60035460009033600160a060020a03908116911614610d4357600080fd5b600160a060020a0382161515610d5857600080fd5b5060078054600160a060020a031916600160a060020a03831617905560015b5b919050565b60005481565b60075460009060a060020a900467ffffffffffffffff164211610da557600080fd5b60035433600160a060020a039081169116141580610ddb575060045b60095460a060020a900460ff166004811115610dd957fe5b145b1515610de657600080fd5b610df1848484611c59565b90505b5b5b9392505050565b600a5467ffffffffffffffff1681565b601281565b60075460009060a060020a900467ffffffffffffffff164211610e3457600080fd5b610e3c611d85565b90505b5b90565b60035433600160a060020a03908116911614610e5e57600080fd5b60045b60095460a060020a900460ff166004811115610e7957fe5b14610e8357600080fd5b600a54700100000000000000000000000000000000900467ffffffffffffffff164211610eaf57600080fd5b600354600160a060020a039081169030163180156108fc0290604051600060405180830381858888f193505050501515610ee857600080fd5b5b5b5b5b565b6005546000908190600160a060020a03161515610f0a57600080fd5b60008311610f1757600080fd5b600160a060020a03331660009081526001602052604081205492508211610f3d57600080fd5b610f4d828463ffffffff6119f016565b600160a060020a03331660009081526001602052604081209190915554610f7a908463ffffffff6119f016565b600055600654610f90908463ffffffff6118c516565b60065550600554600160a060020a03168063753e88e5338560405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610feb57600080fd5b6102c65a03f11515610ffc57600080fd5b50505033600160a060020a03167f318d2be9b9a887c0d168715bd2f44017dafbb3360b14cdcc2a8c0086b4e2d1518460405190815260200160405180910390a25b5b505050565b600a5468010000000000000000900467ffffffffffffffff1681565b600554600160a060020a031681565b600454600160a060020a031681565b60075460009060a060020a900467ffffffffffffffff16421161109f57600080fd5b60035433600160a060020a0390811691161415806110d5575060045b60095460a060020a900460ff1660048111156110d357fe5b145b15156110e057600080fd5b610d1a8383611e34565b90505b5b5b92915050565b600160a060020a0381166000908152600160205260409020545b919050565b60075460009033600160a060020a0390811691161461113257600080fd5b60075460a060020a900467ffffffffffffffff161561115057600080fd5b600780547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff1660a060020a62127500420167ffffffffffffffff16021790557f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75260405160405180910390a15060015b5b90565b600354600160a060020a031681565b600954600160a060020a031681565b60408051908101604052600381527f4354440000000000000000000000000000000000000000000000000000000000602082015281565b60075460009060a060020a900467ffffffffffffffff16421161123a57600080fd5b60035433600160a060020a039081169116141580611270575060045b60095460a060020a900460ff16600481111561126e57fe5b145b151561127b57600080fd5b610d1a8383611f30565b90505b5b5b92915050565b60045460009033600160a060020a039081169116146112ae57600080fd5b600554600160a060020a0316156112c457600080fd5b600160a060020a038316158015906112e1575063ffffffff821615155b15156112ec57600080fd5b508163ffffffff8216600160a060020a038216637cc963806000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561133b57600080fd5b6102c65a03f1151561134c57600080fd5b5050506040518051905063ffffffff1614151561136857600080fd5b60005481600160a060020a0316634b2ba0dd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156113b157600080fd5b6102c65a03f115156113c257600080fd5b505050604051805190501415156113d857600080fd5b60058054600160a060020a031916600160a060020a0385161790557ff2c44e779d94e9806f973c8ff14aa5dcfd972c84192842a273550c3def4e27d883604051600160a060020a03909116815260200160405180910390a15b5b5b505050565b60095460a060020a900460ff1681565b60035460009033600160a060020a0390811691161461146657600080fd5b600160a060020a038216151561147b57600080fd5b5060098054600160a060020a031916600160a060020a03831617905560015b5b919050565b600754600160a060020a031681565b60065481565b60075460009060a060020a900467ffffffffffffffff1642116114d757600080fd5b60035433600160a060020a03908116911614158061150d575060045b60095460a060020a900460ff16600481111561150b57fe5b145b151561151857600080fd5b610d1a8383612007565b90505b5b5b92915050565b60075460a060020a900467ffffffffffffffff1681565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60035460a060020a900463ffffffff1681565b600b5481565b60035433600160a060020a039081169116146115a557600080fd5b600160a060020a03811615156115ba57600080fd5b600354600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360038054600160a060020a031916600160a060020a0383161790555b5b50565b6009547501000000000000000000000000000000000000000000900467ffffffffffffffff1681565b600a54700100000000000000000000000000000000900467ffffffffffffffff1681565b60035433600160a060020a0390811691161461167e57600080fd5b600160a060020a038116151561169357600080fd5b60048054600160a060020a031916600160a060020a0383161790555b5b50565b600a5468010000000000000000900467ffffffffffffffff1642106117245760045b60095460a060020a900460ff1660048111156116ed57fe5b1461171f57600980546004919074ff0000000000000000000000000000000000000000191660a060020a835b02179055505b610ee8565b600a5467ffffffffffffffff16421061178d5760035b60095460a060020a900460ff16600481111561175257fe5b1461171f57600980546003919074ff0000000000000000000000000000000000000000191660a060020a83611719565b02179055505b610ee8565b60005b60095460a060020a900460ff1660048111156117a857fe5b1415610ee8576117b66120ac565b600980546001919074ff0000000000000000000000000000000000000000191660a060020a835b02179055505b5b5b5b565b6117f061214e565b60015b60095460a060020a900460ff16600481111561180b57fe5b14156118325761047e81526101306020820152603d60408201526105eb6060820152610e3f565b60025b60095460a060020a900460ff16600481111561184d57fe5b14156118745761044c81526101246020820152603a60408201526105aa6060820152610e3f565b6103e8815261010760208201526034604082015261052360608201525b5b5b90565b60008282028315806118b257508284828115156118af57fe5b04145b15156118ba57fe5b8091505b5092915050565b6000828201838110156118ba57fe5b8091505b5092915050565b600060015b60095460a060020a900460ff1660048111156118fc57fe5b14801561191457506a6b88921f0410abc20000008210155b1561196757600980546002919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550611960826a6b88921f0410abc200000063ffffffff6119f016565b9050610d77565b6b0219aada9b14535aca00000082106119c957600980546004919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550611960826b0219aada9b14535aca00000063ffffffff6119f016565b9050610d77565b5060005b5b5b919050565b60008082848115156119e257fe5b0490508091505b5092915050565b6000828211156119fc57fe5b508082035b92915050565b60008080600160a060020a03851615801590611a235750600084115b15611aa7575050600160a060020a03831660009081526008602052604090205482810181811115611aa757600160a060020a038516600081815260086020526040908190208390557f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659086905190815260200160405180910390a260019250611aad565b5b600092505b505092915050565b600060015b60095460a060020a900460ff166004811115611ad257fe5b1480611af6575060025b60095460a060020a900460ff166004811115611af457fe5b145b15611b0a575067016345785d8a0000611b8a565b60035b60095460a060020a900460ff166004811115611b2557fe5b1415611b3a57506702c68af0bb140000611b8a565b50600a805477ffffffffffffffff00000000000000000000000000000000191670010000000000000000000000000000000067ffffffffffffffff62278d00420116021790556706f05b59d3b200005b5b611b953382611a07565b506009547f31f72b44f546d9e7eaec13f65636997665e15f134a81c82924f568f5c0d07b939060a060020a900460ff1660405180826004811115611bd557fe5b60ff16815260200191505060405180910390a15b50565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b600080600160a060020a0384161515611c7157600080fd5b50600160a060020a03808516600081815260026020908152604080832033909516835293815283822054928252600190529190912054611cb7908463ffffffff6119f016565b600160a060020a038087166000908152600160205260408082209390935590861681522054611cec908463ffffffff6118c516565b600160a060020a038516600090815260016020526040902055611d15818463ffffffff6119f016565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b600160a060020a033316600090815260086020526040812054818111611daa57600080fd5b600160a060020a0333166000818152600860205260408082209190915582156108fc0290839051600060405180830381858888f193505050501515611dee57600080fd5b33600160a060020a03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d58260405190815260200160405180910390a2600191505b5090565b600160a060020a03338116600090815260026020908152604080832093861683529290529081205480831115611e9157600160a060020a033381166000908152600260209081526040808320938816835292905290812055611ec8565b611ea1818463ffffffff6119f016565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5092915050565b6000600160a060020a0383161515611f4757600080fd5b600160a060020a033316600090815260016020526040902054611f70908363ffffffff6119f016565b600160a060020a033381166000908152600160205260408082209390935590851681522054611fa5908363ffffffff6118c516565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b600160a060020a03338116600090815260026020908152604080832093861683529290529081205461203f908363ffffffff6118c516565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a35060015b92915050565b600954600160a060020a031615156120e15760035460098054600160a060020a031916600160a060020a039092169190911790555b600454600160a060020a031615156121165760035460048054600160a060020a031916600160a060020a039092169190911790555b600754600160a060020a03161515610ee85760035460078054600160a060020a031916600160a060020a039092169190911790555b5b565b6080604051908101604052806000815260200160008152602001600081526020016000815250905600a165627a7a7230582094b10c2a6e6e4ebe96606e48a7611d3da6e223636638da8e85b7391ebe26f52e00290000000000000000000000000000000000000000000000000000000059e92060


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

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000059e92060


   Swarm Source:
bzzr://94b10c2a6e6e4ebe96606e48a7611d3da6e223636638da8e85b7391ebe26f52e
Block Age transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.