Contract Overview
Balance: 0 Ether
Ether Value: $0
Transactions: 414 txns
Misc:
Address Watch: Add To Watch List
Contract Creator: 0x605ee18e0e0047bf4f8a7d749cd19388328148a7at txn 0x6d271fd4dcfc526d76868b203cc88946bc3b295e85241d983c4fc18562190ea7
Token Balance:
 Latest 25 transactions from a total of 414 transactions

TxHash Age From To Value [TxFee]
0x3e0eb7abc027792c4095edb0c43ac246f89c1aa916548cf2be72e78d7cbaced0196 days 19 hrs ago0x78bcb8db92462d3c2f6604d697c6edaae96015b1  IN   0x1771e600e72cca46abeab857f301b6bf5a032ca70 Ether0.007364584
0xc47bf0fd71d5f8ae598ddf5364054f38262a961cc0289cdff40840a293a52f34204 days 19 hrs ago0x7f1c5551d3d5e30eaa82244a622e5e5c285ab5c2  IN   0x1771e600e72cca46abeab857f301b6bf5a032ca70.1 Ether0.003496603
0x5e42318a73f163ca900a29ef1f587e60083446b2645493378effa2d61135c1a9204 days 19 hrs ago0x78bcb8db92462d3c2f6604d697c6edaae96015b1  IN   0x1771e600e72cca46abeab857f301b6bf5a032ca70 Ether0.001207655
0xe428d08d42745bfcaed356eafdc3af1e96c69b8bf5a788f3559086bcaec877c9204 days 19 hrs ago0x7f1c5551d3d5e30eaa82244a622e5e5c285ab5c2  IN   0x1771e600e72cca46abeab857f301b6bf5a032ca710 Ether0.004218654
0xd1e00fd35e3f1e7154ba69d25f2ce34d274eca4be8efb84f37dddb0a31efe91c204 days 19 hrs ago0x78bcb8db92462d3c2f6604d697c6edaae96015b1  IN   0x1771e600e72cca46abeab857f301b6bf5a032ca70 Ether0.002445527
0x0c697ab76b3a2ef1d5f3e7e0c91cfae6929381c428b0f60da34e7539a383d51d204 days 19 hrs ago0x78bcb8db92462d3c2f6604d697c6edaae96015b1  IN   0x1771e600e72cca46abeab857f301b6bf5a032ca70 Ether0.001207655
0xd338c5e94fc44b242ab038bd23b43567cd590c08fb6157256319f06c822637c1204 days 19 hrs ago0x1a27a712a63991a77a0e1a4e3cda4f0b270dcbac  IN   0x1771e600e72cca46abeab857f301b6bf5a032ca70.1 Ether0.001806483
0x2a93cfb9ec87f0bbe30b53b3a1be29d3716ae319259bd4770961c61b087b121c204 days 19 hrs ago0x78bcb8db92462d3c2f6604d697c6edaae96015b1  IN   0x1771e600e72cca46abeab857f301b6bf5a032ca70 Ether0.002442903
0x6290a4fe07df7498fa96260f28c0c177c1f06d0a41b1d40f709fd9d250e7361a204 days 19 hrs ago0x78bcb8db92462d3c2f6604d697c6edaae96015b1  IN   0x1771e600e72cca46abeab857f301b6bf5a032ca70 Ether0.001207655
0xc0d3b23fe2b8dbfbd1de0fb346483608fdec1c7a9c5300f65e9637d15b9c6a46204 days 19 hrs ago0x1a27a712a63991a77a0e1a4e3cda4f0b270dcbac  IN   0x1771e600e72cca46abeab857f301b6bf5a032ca70.1 Ether0.001806483
0x10bd359a4095b31d78a0c389d4eb09d19fcb972eb67c08e8938d35cea3384a75204 days 19 hrs ago0x78bcb8db92462d3c2f6604d697c6edaae96015b1  IN   0x1771e600e72cca46abeab857f301b6bf5a032ca70 Ether0.002440279
0x0783a22f59506f22d0e511b2cf9843b7f42a49442f713bc2db2fa2975476126d204 days 19 hrs ago0x78bcb8db92462d3c2f6604d697c6edaae96015b1  IN   0x1771e600e72cca46abeab857f301b6bf5a032ca70 Ether0.001637704
0x49f273a0f2b5bcd944be97c25e2c105ef7e52e895da8b5953416a0c3bcc89f3a204 days 20 hrs ago0x78bcb8db92462d3c2f6604d697c6edaae96015b1  IN   0x1771e600e72cca46abeab857f301b6bf5a032ca70 Ether0.000936645
0x1bef9f8a5311bfb503358ac1e1a1abcc19d89d617141af82215a3e4c8f108719204 days 20 hrs ago0x78bcb8db92462d3c2f6604d697c6edaae96015b1  IN   0x1771e600e72cca46abeab857f301b6bf5a032ca70 Ether0.000958949
0x7c83e0f06b6373704dc33e7cfd06fc1c1c97cc2ff9d6c3e92bb965e65632ef9a204 days 20 hrs ago0x78bcb8db92462d3c2f6604d697c6edaae96015b1  IN   0x1771e600e72cca46abeab857f301b6bf5a032ca70 Ether0.002396081
0x760608e9fec549dac7246c0cf9ac96f5ede0530684381e62cecb28791ce7c7dd204 days 20 hrs ago0x78bcb8db92462d3c2f6604d697c6edaae96015b1  IN   0x1771e600e72cca46abeab857f301b6bf5a032ca70 Ether0.000958949
0xaef8c9df83950c951765e4e096c9c7a49ec109b148107b6d09acc9edd635fe5b204 days 20 hrs ago0x78bcb8db92462d3c2f6604d697c6edaae96015b1  IN   0x1771e600e72cca46abeab857f301b6bf5a032ca70 Ether0.000958949
0x974deabc5fd7d8144add85918d554d9c1d2bcc2f95ae0a1e288b984201c035fa204 days 20 hrs ago0x1a27a712a63991a77a0e1a4e3cda4f0b270dcbac  IN   0x1771e600e72cca46abeab857f301b6bf5a032ca70.1 Ether0.002105943
0xb960694aca62ab81451353ddd5b8a6aa225dd9e7aa317e5f4244ecf1818952f9208 days 9 hrs ago0x2b3df22f935ea4b020305a241af0408bdef1fc5d  IN   0x1771e600e72cca46abeab857f301b6bf5a032ca70.12 Ether0.0006972
0x1420a729e045ec10324219c11e7bb632de91e13aa4853db15406b5a77262bcdc209 days 3 hrs ago0x520d239b85613c4a5c088cd85191ca8d588bda1b  IN   0x1771e600e72cca46abeab857f301b6bf5a032ca70.5 Ether0.00085656
0x358dde4f4f1be4066512fda446e66a30c4ca0544578aed7edade560a835b7ee4209 days 9 hrs ago0xd2ddf94fa9fb99c87ca3439d97171b39ed2c3978  IN   0x1771e600e72cca46abeab857f301b6bf5a032ca70.04 Ether0.002538
0xc3a8a98a61c06f90b91d8844ae070dfb75951366ac9328ee602b6ffd4f6c7706210 days 3 hrs ago0x29a732be64990bce247f82c2659723011a439203  IN   0x1771e600e72cca46abeab857f301b6bf5a032ca70.05 Ether0.0020916
0x677b7e8e31a7947f4afe92dbf010aa7841b4d341035c36dcd47a7510bfd9e9dd210 days 8 hrs ago0x2f4c191f1dd3ddc1a150e770f28e276f5db725f8  IN   0x1771e600e72cca46abeab857f301b6bf5a032ca70.11 Ether0.0005976
0xc8efb5b44f7af93363225a5e6fd22b445a66d405f9f0a27a7fa3ac114ce84a32210 days 9 hrs ago0x1a8dacb8fa53add1ef5b9ead6090780f101b25b4  IN   0x1771e600e72cca46abeab857f301b6bf5a032ca70.5 Ether0.0011844
0x9f4b1abfc77b0d22fa62674a83f074e5bd0eec06ed134b80050b32e07f1ace0f210 days 9 hrs ago0xea11ebbdbfb6690237f0694bbd8ea85a56a55f74  IN   0x1771e600e72cca46abeab857f301b6bf5a032ca70.05 Ether0.0020916
[ 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
0xc47bf0fd71d5f8ae598ddf5364054f38262a961cc0289cdff40840a293a52f345645851204 days 19 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.1 Ether
0xe428d08d42745bfcaed356eafdc3af1e96c69b8bf5a788f3559086bcaec877c95645822204 days 19 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed55710 Ether
0xd338c5e94fc44b242ab038bd23b43567cd590c08fb6157256319f06c822637c15645760204 days 19 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.1 Ether
0xc0d3b23fe2b8dbfbd1de0fb346483608fdec1c7a9c5300f65e9637d15b9c6a465645718204 days 19 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.1 Ether
0x974deabc5fd7d8144add85918d554d9c1d2bcc2f95ae0a1e288b984201c035fa5645574204 days 20 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.1 Ether
0xb960694aca62ab81451353ddd5b8a6aa225dd9e7aa317e5f4244ecf1818952f95625497208 days 9 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.12 Ether
0x1420a729e045ec10324219c11e7bb632de91e13aa4853db15406b5a77262bcdc5621293209 days 3 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.5 Ether
0x358dde4f4f1be4066512fda446e66a30c4ca0544578aed7edade560a835b7ee45619859209 days 9 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.04 Ether
0xc3a8a98a61c06f90b91d8844ae070dfb75951366ac9328ee602b6ffd4f6c77065615560210 days 3 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.05 Ether
0x677b7e8e31a7947f4afe92dbf010aa7841b4d341035c36dcd47a7510bfd9e9dd5614368210 days 8 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.11 Ether
0xc8efb5b44f7af93363225a5e6fd22b445a66d405f9f0a27a7fa3ac114ce84a325614208210 days 9 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.5 Ether
0x9f4b1abfc77b0d22fa62674a83f074e5bd0eec06ed134b80050b32e07f1ace0f5614184210 days 9 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.05 Ether
0xe907b86d583d1acb783f79e70d1d821a49bca41b04f76f930eb5fdb161a87c745613674210 days 11 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5571.54 Ether
0xe584c52b093d8eea01d39066981d87a523405542816e34395ceb735a1f3319755612705210 days 15 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5571.118 Ether
0xddc7eea0567c1a6b3099c4059e9018636bebdafe788c239c2b63204561228de05611129210 days 22 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5571 Ether
0x7f1decd29191fc0113bfebeb8647f5131f7afd8f51998c304d785d752da32dd15608880211 days 8 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5571.278 Ether
0x6a8883707a11cdd3d9d47890535a4994eb40265abd42f65bbcc86811f5e5a0825608431211 days 9 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.09 Ether
0xe4a9a52ead679fa10f0871a9b9bb4231500f54ffd34b0387258044a79aca8ceb5608322211 days 10 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5571.2 Ether
0x846e76b56e99af698359211c17f64a186fc28c50d8279a0989585af3fdf0e33c5607143211 days 15 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5572.858 Ether
0x478a07c8f700aff525719beb047bbddac3f2270bf8ea3fa31da480d1cb89f8e25601380212 days 15 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.2 Ether
0xf5c939b5aa39e9b4966bd3ad365475d65cf2c4ced429227914bec6248f3efbd95593701213 days 23 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.03076 Ether
0x56a8cda79a714babaf619131e6507faa53020557dc9e673d79c6a69bd104ea5c5587784215 days 23 mins ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.015 Ether
0xc288e28b2867f134669ca98b4e361a72cdb1e6863629257567cc4159df20d1d55587744215 days 34 mins ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.02 Ether
0x92129b2948a01fd45b1fc8a79fda6a74317e4ba2225526205c0c909d4ce293705585632215 days 9 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.05 Ether
0xdd746df2ad5e4aac2ce2236e75763b0f42824ee992916573087d918c92410a455585197215 days 11 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.12 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: Mainsale
Compiler Text: v0.4.18+commit.9cf6e910
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity 0.4.18;

// File: contracts/ownership/Ownable.sol

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

}

// File: contracts/math/SafeMath.sol

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

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

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

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

// File: contracts/token/ERC20Basic.sol

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

// File: contracts/token/BasicToken.sol

/**
 * @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));
    require(_value <= balances[msg.sender]);

    // 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 view returns (uint256 balance) {
    return balances[_owner];
  }

}

// File: contracts/token/ERC20.sol

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

// File: contracts/token/StandardToken.sol

/**
 * @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)) internal 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));
    require(_value <= balances[_from]);
    require(_value <= allowed[_from][msg.sender]);

    balances[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    allowed[_from][msg.sender] = allowed[_from][msg.sender].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 view returns (uint256) {
    return allowed[_owner][_spender];
  }

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

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

}

// File: contracts/MintableToken.sol

contract MintableToken is StandardToken, Ownable {

  event Mint(address indexed to, uint256 amount);

  event MintFinished();

  bool public mintingFinished = false;

  address public saleAgent;

  modifier notLocked() {
    require(msg.sender == owner || msg.sender == saleAgent || mintingFinished);
    _;
  }

  function setSaleAgent(address newSaleAgnet) public {
    require(msg.sender == saleAgent || msg.sender == owner);
    saleAgent = newSaleAgnet;
  }

  function mint(address _to, uint256 _amount) public returns (bool) {
    require(msg.sender == saleAgent && !mintingFinished);
    totalSupply = totalSupply.add(_amount);
    balances[_to] = balances[_to].add(_amount);
    Mint(_to, _amount);
    return true;
  }

  /**
   * @dev Function to stop minting new tokens.
   * @return True if the operation was successful.
   */
  function finishMinting() public returns (bool) {
    require((msg.sender == saleAgent || msg.sender == owner) && !mintingFinished);
    mintingFinished = true;
    MintFinished();
    return true;
  }

  function transfer(address _to, uint256 _value) public notLocked returns (bool) {
    return super.transfer(_to, _value);
  }

  function transferFrom(address from, address to, uint256 value) public notLocked returns (bool) {
    return super.transferFrom(from, to, value);
  }

}

// File: contracts/AICToken.sol

contract AICToken is MintableToken {

  string public constant name = "AKAI";

  string public constant symbol = "AIC";

  uint32 public constant decimals = 18;

}

// File: contracts/PercentRateProvider.sol

contract PercentRateProvider is Ownable {

  uint public percentRate = 100;

  function setPercentRate(uint newPercentRate) public onlyOwner {
    percentRate = newPercentRate;
  }

}

// File: contracts/CommonSale.sol

contract CommonSale is PercentRateProvider {

  using SafeMath for uint;

  address public wallet;

  address public directMintAgent;

  uint public price;

  uint public start;

  uint public minInvestedLimit;

  AICToken public token;

  uint public hardcap;

  uint public invested;

  modifier isUnderHardcap() {
    require(invested < hardcap);
    _;
  }

  function setHardcap(uint newHardcap) public onlyOwner {
    hardcap = newHardcap;
  }

  modifier onlyDirectMintAgentOrOwner() {
    require(directMintAgent == msg.sender || owner == msg.sender);
    _;
  }

  modifier minInvestLimited(uint value) {
    require(value >= minInvestedLimit);
    _;
  }

  function setStart(uint newStart) public onlyOwner {
    start = newStart;
  }

  function setMinInvestedLimit(uint newMinInvestedLimit) public onlyOwner {
    minInvestedLimit = newMinInvestedLimit;
  }

  function setDirectMintAgent(address newDirectMintAgent) public onlyOwner {
    directMintAgent = newDirectMintAgent;
  }

  function setWallet(address newWallet) public onlyOwner {
    wallet = newWallet;
  }

  function setPrice(uint newPrice) public onlyOwner {
    price = newPrice;
  }

  function setToken(address newToken) public onlyOwner {
    token = AICToken(newToken);
  }

  function calculateTokens(uint _invested) internal returns(uint);

  function mintTokensExternal(address to, uint tokens) public onlyDirectMintAgentOrOwner {
    mintTokens(to, tokens);
  }

  function mintTokens(address to, uint tokens) internal {
    token.mint(this, tokens);
    token.transfer(to, tokens);
  }

  function endSaleDate() public view returns(uint);

  function mintTokensByETHExternal(address to, uint _invested) public onlyDirectMintAgentOrOwner returns(uint) {
    return mintTokensByETH(to, _invested);
  }

  function mintTokensByETH(address to, uint _invested) internal isUnderHardcap returns(uint) {
    invested = invested.add(_invested);
    uint tokens = calculateTokens(_invested);
    mintTokens(to, tokens);
    return tokens;
  }

  function fallback() internal minInvestLimited(msg.value) returns(uint) {
    require(now >= start && now < endSaleDate());
    wallet.transfer(msg.value);
    return mintTokensByETH(msg.sender, msg.value);
  }

  function () public payable {
    fallback();
  }

}

// File: contracts/InputAddressFeature.sol

contract InputAddressFeature {

  function bytesToAddress(bytes source) internal pure returns(address) {
    uint result;
    uint mul = 1;
    for(uint i = 20; i > 0; i--) {
      result += uint8(source[i-1])*mul;
      mul = mul*256;
    }
    return address(result);
  }

  function getInputAddress() internal pure returns(address) {
    if(msg.data.length == 20) {
      return bytesToAddress(bytes(msg.data));
    }
    return address(0);
  }

}

// File: contracts/ReferersRewardFeature.sol

contract ReferersRewardFeature is InputAddressFeature, CommonSale {

  uint public refererPercent;

  uint public referalsMinInvestLimit;

  function setReferalsMinInvestLimit(uint newRefereralsMinInvestLimit) public onlyOwner {
    referalsMinInvestLimit = newRefereralsMinInvestLimit;
  }

  function setRefererPercent(uint newRefererPercent) public onlyOwner {
    refererPercent = newRefererPercent;
  }

  function fallback() internal returns(uint) {
    uint tokens = super.fallback();
    if(msg.value >= referalsMinInvestLimit) {
      address referer = getInputAddress();
      if(referer != address(0)) {
        require(referer != address(token) && referer != msg.sender && referer != address(this));
        mintTokens(referer, tokens.mul(refererPercent).div(percentRate));
      }
    }
    return tokens;
  }

}

// File: contracts/RetrieveTokensFeature.sol

contract RetrieveTokensFeature is Ownable {

  function retrieveTokens(address to, address anotherToken) public onlyOwner {
    ERC20 alienToken = ERC20(anotherToken);
    alienToken.transfer(to, alienToken.balanceOf(this));
  }

}

// File: contracts/ValueBonusFeature.sol

contract ValueBonusFeature is PercentRateProvider {

  using SafeMath for uint;

  struct ValueBonus {
    uint from;
    uint bonus;
  }

  ValueBonus[] public valueBonuses;

  function addValueBonus(uint from, uint bonus) public onlyOwner {
    valueBonuses.push(ValueBonus(from, bonus));
  }

  function getValueBonusTokens(uint tokens, uint _invested) public view returns(uint) {
    uint valueBonus = getValueBonus(_invested);
    if(valueBonus == 0) {
      return 0;
    }
    return tokens.mul(valueBonus).div(percentRate);
  }

  function getValueBonus(uint value) public view returns(uint) {
    uint bonus = 0;
    for(uint i = 0; i < valueBonuses.length; i++) {
      if(value >= valueBonuses[i].from) {
        bonus = valueBonuses[i].bonus;
      } else {
        return bonus;
      }
    }
    return bonus;
  }

}

// File: contracts/AICCommonSale.sol

contract AICCommonSale is ValueBonusFeature, RetrieveTokensFeature, ReferersRewardFeature {


}

// File: contracts/StagedCrowdsale.sol

contract StagedCrowdsale is Ownable {

  using SafeMath for uint;

  struct Milestone {
    uint period;
    uint bonus;
  }

  uint public totalPeriod;

  Milestone[] public milestones;

  function milestonesCount() public view returns(uint) {
    return milestones.length;
  }

  function addMilestone(uint period, uint bonus) public onlyOwner {
    require(period > 0);
    milestones.push(Milestone(period, bonus));
    totalPeriod = totalPeriod.add(period);
  }

  function removeMilestone(uint8 number) public onlyOwner {
    require(number < milestones.length);
    Milestone storage milestone = milestones[number];
    totalPeriod = totalPeriod.sub(milestone.period);

    delete milestones[number];

    for (uint i = number; i < milestones.length - 1; i++) {
      milestones[i] = milestones[i+1];
    }

    milestones.length--;
  }

  function changeMilestone(uint8 number, uint period, uint bonus) public onlyOwner {
    require(number < milestones.length);
    Milestone storage milestone = milestones[number];

    totalPeriod = totalPeriod.sub(milestone.period);

    milestone.period = period;
    milestone.bonus = bonus;

    totalPeriod = totalPeriod.add(period);
  }

  function insertMilestone(uint8 numberAfter, uint period, uint bonus) public onlyOwner {
    require(numberAfter < milestones.length);

    totalPeriod = totalPeriod.add(period);

    milestones.length++;

    for (uint i = milestones.length - 2; i > numberAfter; i--) {
      milestones[i + 1] = milestones[i];
    }

    milestones[numberAfter + 1] = Milestone(period, bonus);
  }

  function clearMilestones() public onlyOwner {
    require(milestones.length > 0);
    for (uint i = 0; i < milestones.length; i++) {
      delete milestones[i];
    }
    milestones.length -= milestones.length;
    totalPeriod = 0;
  }

  function lastSaleDate(uint start) public view returns(uint) {
    return start + totalPeriod * 1 days;
  }

  function currentMilestone(uint start) public view returns(uint) {
    uint previousDate = start;
    for(uint i=0; i < milestones.length; i++) {
      if(now >= previousDate && now < previousDate + milestones[i].period * 1 days) {
        return i;
      }
      previousDate = previousDate.add(milestones[i].period * 1 days);
    }
    revert();
  }

}

// File: contracts/Mainsale.sol

contract Mainsale is StagedCrowdsale, AICCommonSale {

  address public foundersTokensWallet;

  address public marketingTokensWallet;

  address public bountyTokensWallet;

  uint public foundersTokensPercent;

  uint public marketingTokensPercent;

  uint public bountyTokensPercent;

  function setFoundersTokensPercent(uint newFoundersTokensPercent) public onlyOwner {
    foundersTokensPercent = newFoundersTokensPercent;
  }

  function setMarketingTokensPercent(uint newMarketingTokensPercent) public onlyOwner {
    marketingTokensPercent = newMarketingTokensPercent;
  }

  function setBountyTokensPercent(uint newBountyTokensPercent) public onlyOwner {
    bountyTokensPercent = newBountyTokensPercent;
  }

  function setFoundersTokensWallet(address newFoundersTokensWallet) public onlyOwner {
    foundersTokensWallet = newFoundersTokensWallet;
  }

  function setMarketingTokensWallet(address newMarketingTokensWallet) public onlyOwner {
    marketingTokensWallet = newMarketingTokensWallet;
  }

  function setBountyTokensWallet(address newBountyTokensWallet) public onlyOwner {
    bountyTokensWallet = newBountyTokensWallet;
  }

  function calculateTokens(uint _invested) internal returns(uint) {
    uint milestoneIndex = currentMilestone(start);
    Milestone storage milestone = milestones[milestoneIndex];
    uint tokens = _invested.mul(price).div(1 ether);
    uint valueBonusTokens = getValueBonusTokens(tokens, _invested);
    if(milestone.bonus > 0) {
      tokens = tokens.add(tokens.mul(milestone.bonus).div(percentRate));
    }
    return tokens.add(valueBonusTokens);
  }

  function finish() public onlyOwner {
    uint summaryTokensPercent = bountyTokensPercent.add(foundersTokensPercent).add(marketingTokensPercent);
    uint mintedTokens = token.totalSupply();
    uint allTokens = mintedTokens.mul(percentRate).div(percentRate.sub(summaryTokensPercent));
    uint foundersTokens = allTokens.mul(foundersTokensPercent).div(percentRate);
    uint marketingTokens = allTokens.mul(marketingTokensPercent).div(percentRate);
    uint bountyTokens = allTokens.mul(bountyTokensPercent).div(percentRate);
    mintTokens(foundersTokensWallet, foundersTokens);
    mintTokens(marketingTokensWallet, marketingTokens);
    mintTokens(bountyTokensWallet, bountyTokens);
    token.finishMinting();
  }

  function endSaleDate() public view returns(uint) {
    return lastSaleDate(start);
  }

}

// File: contracts/Presale.sol

contract Presale is AICCommonSale {

  Mainsale public mainsale;

  uint public period;

  function calculateTokens(uint _invested) internal returns(uint) {
    uint tokens = _invested.mul(price).div(1 ether);
    return tokens.add(getValueBonusTokens(tokens, _invested));
  }

  function setPeriod(uint newPeriod) public onlyOwner {
    period = newPeriod;
  }

  function setMainsale(address newMainsale) public onlyOwner {
    mainsale = Mainsale(newMainsale);
  }

  function finish() public onlyOwner {
    token.setSaleAgent(mainsale);
  }

  function endSaleDate() public view returns(uint) {
    return start.add(period * 1 days);
  }

}

// File: contracts/Configurator.sol

contract Configurator is Ownable {

  AICToken public token;

  Presale public presale;

  Mainsale public mainsale;

  function deploy() public onlyOwner {
    //owner = 0x78bcb8dB92462D3c2f6604d697C6edAAe96015b1;

    token = new AICToken();

    presale = new Presale();

    presale.setWallet(0x78bcb8dB92462D3c2f6604d697C6edAAe96015b1);
    presale.setStart(1518386400);
    presale.setPeriod(14);
    presale.setPrice(1600000000000000000000);
    presale.setHardcap(1000000000000000000000);
    token.setSaleAgent(presale);
    commonConfigure(presale, token);

    mainsale = new Mainsale();

    mainsale.addMilestone(2, 40);
    mainsale.addMilestone(7, 30);
    mainsale.addMilestone(7, 20);
    mainsale.addMilestone(7, 10);
    mainsale.addMilestone(7, 5);
    mainsale.addMilestone(7, 0);
    mainsale.setPrice(1000000000000000000000);
    mainsale.setWallet(0x78bcb8dB92462D3c2f6604d697C6edAAe96015b1);
    mainsale.setFoundersTokensWallet(0x8C15936004201bC6440a1F0BBD1eC92CA6C611de);
    mainsale.setMarketingTokensWallet(0x778375eB9fA010e95c40EA74ED7591356B4F4F4C);
    mainsale.setBountyTokensWallet(0xB5DDDBC8e53bA411451eE22FE4E1852e5a5d447f);
    mainsale.setStart(1520632800);
    mainsale.setHardcap(25000000000000000000000);
    mainsale.setFoundersTokensPercent(15);
    mainsale.setMarketingTokensPercent(7);
    mainsale.setBountyTokensPercent(3);
    commonConfigure(mainsale, token);

    presale.setMainsale(mainsale);

    token.transferOwnership(owner);
    presale.transferOwnership(owner);
    mainsale.transferOwnership(owner);
  }

  function commonConfigure(address saleAddress, address _token) internal {
     AICCommonSale sale = AICCommonSale(saleAddress);
     sale.addValueBonus(10000000000000000000, 1);
     sale.addValueBonus(51000000000000000000, 2);
     sale.addValueBonus(101000000000000000000, 3);
     sale.addValueBonus(151000000000000000000, 5);
     sale.addValueBonus(201000000000000000000, 8);
     sale.addValueBonus(301000000000000000000, 10);
     sale.addValueBonus(1001000000000000000000, 15);
     sale.addValueBonus(1501000000000000000000, 20);
     sale.setReferalsMinInvestLimit(5000000000000000000);
     sale.setRefererPercent(2);
     sale.setMinInvestedLimit(5000000000000000);
     sale.setToken(_token);
  }

}

    Contract ABI  
[{"constant":false,"inputs":[{"name":"newRefererPercent","type":"uint256"}],"name":"setRefererPercent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newToken","type":"address"}],"name":"setToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newRefereralsMinInvestLimit","type":"uint256"}],"name":"setReferalsMinInvestLimit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newFoundersTokensWallet","type":"address"}],"name":"setFoundersTokensWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newPercentRate","type":"uint256"}],"name":"setPercentRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"foundersTokensWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"clearMilestones","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokens","type":"uint256"},{"name":"_invested","type":"uint256"}],"name":"getValueBonusTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"period","type":"uint256"},{"name":"bonus","type":"uint256"}],"name":"addMilestone","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newBountyTokensPercent","type":"uint256"}],"name":"setBountyTokensPercent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"referalsMinInvestLimit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"anotherToken","type":"address"}],"name":"retrieveTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"start","type":"uint256"}],"name":"currentMilestone","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"directMintAgent","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"refererPercent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newDirectMintAgent","type":"address"}],"name":"setDirectMintAgent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"percentRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"foundersTokensPercent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newMarketingTokensWallet","type":"address"}],"name":"setMarketingTokensWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newPrice","type":"uint256"}],"name":"setPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newMarketingTokensPercent","type":"uint256"}],"name":"setMarketingTokensPercent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"bountyTokensWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bountyTokensPercent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"mintTokensExternal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"numberAfter","type":"uint8"},{"name":"period","type":"uint256"},{"name":"bonus","type":"uint256"}],"name":"insertMilestone","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"price","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newMinInvestedLimit","type":"uint256"}],"name":"setMinInvestedLimit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"number","type":"uint8"}],"name":"removeMilestone","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"marketingTokensWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"milestonesCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newFoundersTokensPercent","type":"uint256"}],"name":"setFoundersTokensPercent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"valueBonuses","outputs":[{"name":"from","type":"uint256"},{"name":"bonus","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hardcap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"uint256"},{"name":"bonus","type":"uint256"}],"name":"addValueBonus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"number","type":"uint8"},{"name":"period","type":"uint256"},{"name":"bonus","type":"uint256"}],"name":"changeMilestone","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"start","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"_invested","type":"uint256"}],"name":"mintTokensByETHExternal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"invested","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"value","type":"uint256"}],"name":"getValueBonus","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalPeriod","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"marketingTokensPercent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finish","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minInvestedLimit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endSaleDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newWallet","type":"address"}],"name":"setWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newHardcap","type":"uint256"}],"name":"setHardcap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"milestones","outputs":[{"name":"period","type":"uint256"},{"name":"bonus","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newStart","type":"uint256"}],"name":"setStart","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newBountyTokensWallet","type":"address"}],"name":"setBountyTokensWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"start","type":"uint256"}],"name":"lastSaleDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

  Contract Creation Code Switch To Opcodes View
6060604052606460035560008054600160a060020a033316600160a060020a03199091161790556119a5806100356000396000f30060606040526004361061026e5763ffffffff60e060020a60003504166302e2c3b78114610279578063144fa6d7146102915780631b4646bf146102b05780632f48c4aa146102c6578063480b890d146102e55780634a23418a146102fb5780634c94ac6a1461032a578063521eb2731461033d57806354717ea9146103505780635601477b1461037b57806359169d06146103945780635cddd93d146103aa5780636341ca0b146103bd5780636793c8e1146103e25780636abc3fe4146103f85780636ff1f2b81461040b578063769ffb7d1461041e5780638090114f1461043d57806386d0b46d146104505780638da5cb5b146104635780638e93c8831461047657806391b7f5ed14610495578063951ea5f1146104ab57806399cd211d146104c15780639a3fdfd0146104d45780639bf6eb60146104e75780639dc905bb14610509578063a035b1fe14610528578063a34d92701461053b578063aa525c5514610551578063aa5b7df81461056a578063ab36e4a61461057d578063ada199dd14610590578063af78facf146105a6578063b071cbe6146105d4578063b8a4db81146105e7578063bd17647f14610600578063be9a65551461061f578063ca1e5bb714610632578063cafb220214610654578063cd7e318414610667578063ce14a46e1461067d578063d15e101414610690578063d56b2889146106a3578063d64196f8146106b6578063d7d88043146106c9578063deaa59df146106dc578063e28fa27d146106fb578063e89e4ed614610711578063f2fde38b14610727578063f6a03ebf14610746578063fa8b72ff1461075c578063fc0c546a1461077b578063fd83da091461078e575b6102766107a4565b50005b341561028457600080fd5b61028f600435610865565b005b341561029c57600080fd5b61028f600160a060020a0360043516610885565b34156102bb57600080fd5b61028f6004356108c2565b34156102d157600080fd5b61028f600160a060020a03600435166108e2565b34156102f057600080fd5b61028f60043561091f565b341561030657600080fd5b61030e61093f565b604051600160a060020a03909116815260200160405180910390f35b341561033557600080fd5b61028f61094e565b341561034857600080fd5b61030e6109cd565b341561035b57600080fd5b6103696004356024356109dc565b60405190815260200160405180910390f35b341561038657600080fd5b61028f600435602435610a1b565b341561039f57600080fd5b61028f600435610aa6565b34156103b557600080fd5b610369610ac6565b34156103c857600080fd5b61028f600160a060020a0360043581169060243516610acc565b34156103ed57600080fd5b610369600435610bcf565b341561040357600080fd5b61030e610c6b565b341561041657600080fd5b610369610c7a565b341561042957600080fd5b61028f600160a060020a0360043516610c80565b341561044857600080fd5b610369610cbd565b341561045b57600080fd5b610369610cc3565b341561046e57600080fd5b61030e610cc9565b341561048157600080fd5b61028f600160a060020a0360043516610cd8565b34156104a057600080fd5b61028f600435610d15565b34156104b657600080fd5b61028f600435610d35565b34156104cc57600080fd5b61030e610d55565b34156104df57600080fd5b610369610d64565b34156104f257600080fd5b61028f600160a060020a0360043516602435610d6a565b341561051457600080fd5b61028f60ff60043516602435604435610dae565b341561053357600080fd5b610369610ebd565b341561054657600080fd5b61028f600435610ec3565b341561055c57600080fd5b61028f60ff60043516610ee3565b341561057557600080fd5b61030e610ff6565b341561058857600080fd5b610369611005565b341561059b57600080fd5b61028f60043561100c565b34156105b157600080fd5b6105bc60043561102c565b60405191825260208201526040908101905180910390f35b34156105df57600080fd5b610369611058565b34156105f257600080fd5b61028f60043560243561105e565b341561060b57600080fd5b61028f60ff600435166024356044356110c7565b341561062a57600080fd5b610369611156565b341561063d57600080fd5b610369600160a060020a036004351660243561115c565b341561065f57600080fd5b6103696111a6565b341561067257600080fd5b6103696004356111ac565b341561068857600080fd5b610369611217565b341561069b57600080fd5b61036961121d565b34156106ae57600080fd5b61028f611223565b34156106c157600080fd5b61036961140c565b34156106d457600080fd5b610369611412565b34156106e757600080fd5b61028f600160a060020a0360043516611424565b341561070657600080fd5b61028f600435611461565b341561071c57600080fd5b6105bc600435611481565b341561073257600080fd5b61028f600160a060020a036004351661148f565b341561075157600080fd5b61028f60043561151d565b341561076757600080fd5b61028f600160a060020a036004351661153d565b341561078657600080fd5b61030e61157a565b341561079957600080fd5b610369600435611589565b60008060006107b1611595565b600e54909250341061085f576107c5611611565b9050600160a060020a0381161561085f57600a54600160a060020a03828116911614801590610806575033600160a060020a031681600160a060020a031614155b8015610824575030600160a060020a031681600160a060020a031614155b151561082f57600080fd5b61085f8161085a60035461084e600d548761166290919063ffffffff16565b9063ffffffff61168d16565b6116a4565b50919050565b60005433600160a060020a0390811691161461088057600080fd5b600d55565b60005433600160a060020a039081169116146108a057600080fd5b600a8054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a039081169116146108dd57600080fd5b600e55565b60005433600160a060020a039081169116146108fd57600080fd5b600f8054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a0390811691161461093a57600080fd5b600355565b600f54600160a060020a031681565b6000805433600160a060020a0390811691161461096a57600080fd5b6002546000901161097a57600080fd5b5060005b6002548110156109b757600280548290811061099657fe5b6000918252602082206002909102018181556001908101919091550161097e565b60006109c4600282611928565b50506000600155565b600554600160a060020a031681565b6000806109e8836111ac565b90508015156109fa5760009150610a14565b600354610a119061084e868463ffffffff61166216565b91505b5092915050565b60005433600160a060020a03908116911614610a3657600080fd5b60008211610a4357600080fd5b6002805460018101610a558382611928565b91600052602060002090600202016000604080519081016040528581526020810185905291905081518155602082015160019182015554610a9f925090508363ffffffff61179c16565b6001555050565b60005433600160a060020a03908116911614610ac157600080fd5b601455565b600e5481565b6000805433600160a060020a03908116911614610ae857600080fd5b5080600160a060020a03811663a9059cbb84826370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610b4857600080fd5b6102c65a03f11515610b5957600080fd5b5050506040518051905060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610baf57600080fd5b6102c65a03f11515610bc057600080fd5b50505060405180515050505050565b600081815b600254811015610c5f57814210158015610c1357506002805482908110610bf757fe5b9060005260206000209060020201600001546201518002820142105b15610c2057809250610c64565b610c55600282815481101515610c3257fe5b60009182526020909120600290910201548390620151800263ffffffff61179c16565b9150600101610bd4565b600080fd5b5050919050565b600654600160a060020a031681565b600d5481565b60005433600160a060020a03908116911614610c9b57600080fd5b60068054600160a060020a031916600160a060020a0392909216919091179055565b60035481565b60125481565b600054600160a060020a031681565b60005433600160a060020a03908116911614610cf357600080fd5b60108054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a03908116911614610d3057600080fd5b600755565b60005433600160a060020a03908116911614610d5057600080fd5b601355565b601154600160a060020a031681565b60145481565b60065433600160a060020a0390811691161480610d95575060005433600160a060020a039081169116145b1515610da057600080fd5b610daa82826116a4565b5050565b6000805433600160a060020a03908116911614610dca57600080fd5b60025460ff851610610ddb57600080fd5b600154610dee908463ffffffff61179c16565b60019081556002805491610e0491908301611928565b5050600254600119015b8360ff16811115610e6e576002805482908110610e2757fe5b9060005260206000209060020201600282600101815481101515610e4757fe5b60009182526020909120825460029092020190815560019182015491015560001901610e0e565b60408051908101604052838152602081018390526002805460ff6001880116908110610e9657fe5b90600052602060002090600202016000820151815560208201516001909101555050505050565b60075481565b60005433600160a060020a03908116911614610ede57600080fd5b600955565b60008054819033600160a060020a03908116911614610f0157600080fd5b60025460ff841610610f1257600080fd5b6002805460ff8516908110610f2357fe5b90600052602060002090600202019150610f4c82600001546001546117ab90919063ffffffff16565b6001556002805460ff8516908110610f6057fe5b600091825260208220600290910201818155600101555060ff82165b60025460001901811015610fdd576002805460018301908110610f9b57fe5b9060005260206000209060020201600282815481101515610fb857fe5b6000918252602090912082546002909202019081556001918201549082015501610f7c565b6002805490610ff0906000198301611928565b50505050565b601054600160a060020a031681565b6002545b90565b60005433600160a060020a0390811691161461102757600080fd5b601255565b600480548290811061103a57fe5b60009182526020909120600290910201805460019091015490915082565b600b5481565b60005433600160a060020a0390811691161461107957600080fd5b600480546001810161108b8382611928565b91600052602060002090600202016000604080519081016040528581526020810185905291905081518155602082015181600101555050505050565b6000805433600160a060020a039081169116146110e357600080fd5b60025460ff8516106110f457600080fd5b6002805460ff861690811061110557fe5b9060005260206000209060020201905061112e81600001546001546117ab90919063ffffffff16565b60019081558382558181018390555461114d908463ffffffff61179c16565b60015550505050565b60085481565b60065460009033600160a060020a039081169116148061118a575060005433600160a060020a039081169116145b151561119557600080fd5b61119f83836117bd565b9392505050565b600c5481565b600080805b600454811015610a145760048054829081106111c957fe5b600091825260209091206002909102015484106112075760048054829081106111ee57fe5b906000526020600020906002020160010154915061120f565b819250610c64565b6001016111b1565b60015481565b60135481565b600080548190819081908190819033600160a060020a0390811691161461124957600080fd5b61127260135461126660125460145461179c90919063ffffffff16565b9063ffffffff61179c16565b600a54909650600160a060020a03166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156112bd57600080fd5b6102c65a03f115156112ce57600080fd5b505050604051805160035490965061130591506112f1908863ffffffff6117ab16565b60035461084e90889063ffffffff61166216565b935061132260035461084e6012548761166290919063ffffffff16565b925061133f60035461084e6013548761166290919063ffffffff16565b915061135c60035461084e6014548761166290919063ffffffff16565b600f5490915061137590600160a060020a0316846116a4565b60105461138b90600160a060020a0316836116a4565b6011546113a190600160a060020a0316826116a4565b600a54600160a060020a0316637d64bcb46000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156113e957600080fd5b6102c65a03f115156113fa57600080fd5b50505060405180515050505050505050565b60095481565b600061141f600854611589565b905090565b60005433600160a060020a0390811691161461143f57600080fd5b60058054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a0390811691161461147c57600080fd5b600b55565b600280548290811061103a57fe5b60005433600160a060020a039081169116146114aa57600080fd5b600160a060020a03811615156114bf57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a0390811691161461153857600080fd5b600855565b60005433600160a060020a0390811691161461155857600080fd5b60118054600160a060020a031916600160a060020a0392909216919091179055565b600a54600160a060020a031681565b60015462015180020190565b60003460095481101515156115a957600080fd5b60085442101580156115c157506115be611412565b42105b15156115cc57600080fd5b600554600160a060020a03163480156108fc0290604051600060405180830381858888f19350505050151561160057600080fd5b61160a33346117bd565b91505b5090565b6000601436141561165c576116556000368080601f0160208091040260200160405190810160405281815292919060208401838380828437506117fd945050505050565b9050611009565b50600090565b6000808315156116755760009150610a14565b5082820282848281151561168557fe5b041461119f57fe5b600080828481151561169b57fe5b04949350505050565b600a54600160a060020a03166340c10f19308360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561170357600080fd5b6102c65a03f1151561171457600080fd5b50505060405180515050600a54600160a060020a031663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561177d57600080fd5b6102c65a03f1151561178e57600080fd5b505050604051805150505050565b60008282018381101561119f57fe5b6000828211156117b757fe5b50900390565b600080600b54600c541015156117d257600080fd5b600c546117e5908463ffffffff61179c16565b600c556117f18361186e565b905061119f84826116a4565b600080600160145b6000811115611865578185600183038151811061181e57fe5b01602001517f01000000000000000000000000000000000000000000000000000000000000009081900481020460ff16029290920191610100919091029060001901611805565b50909392505050565b6000806000806000611881600854610bcf565b935060028481548110151561189257fe5b906000526020600020906002020192506118c3670de0b6b3a764000061084e6007548961166290919063ffffffff16565b91506118cf82876109dc565b905060008360010154111561190e5761190b6118fe60035461084e86600101548661166290919063ffffffff16565b839063ffffffff61179c16565b91505b61191e828263ffffffff61179c16565b9695505050505050565b815481835581811511611954576002028160020283600052602060002091820191016119549190611959565b505050565b61100991905b8082111561160d576000808255600182015560020161195f5600a165627a7a723058208b0c86125ea897ca23e5366c10bb9986f7a193450fa18c1f1eb2f5dd086160500029

   Swarm Source:
bzzr://8b0c86125ea897ca23e5366c10bb9986f7a193450fa18c1f1eb2f5dd08616050

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.