Contract 0x105b2b74fe6de95b68d435f3a3bc8ace03cf1658

 

TxHash Block Age From To Value [TxFee]
0x90b8c2a8fbc8a711e052e904c6caf2816652e6e7adc1faf63ce242db492dde8472495752 days 6 hrs ago0x12d77d3a336c57918bb7ea637494fb738738e4ac IN  0x105b2b74fe6de95b68d435f3a3bc8ace03cf16580 Ether0.002109125
0xc4393b5106cb1a6bd84c64e93d0e221a50972ab1a9f61766927f2c8c2704096e72495742 days 6 hrs ago0x12d77d3a336c57918bb7ea637494fb738738e4ac IN  0x105b2b74fe6de95b68d435f3a3bc8ace03cf16580 Ether0.002109125
0xff5570b1db0e87834bb5619650afa4b9adb98f2b7bdf27f41acc9874351ed4a772495722 days 6 hrs ago0x12d77d3a336c57918bb7ea637494fb738738e4ac IN  0x105b2b74fe6de95b68d435f3a3bc8ace03cf16580 Ether0.002109125
0xf05fbfc879d0845ea61eef010e4810774e943b3149654e7db4f7a5efb00b935772495672 days 6 hrs ago0x12d77d3a336c57918bb7ea637494fb738738e4ac IN  0x105b2b74fe6de95b68d435f3a3bc8ace03cf16580 Ether0.002109125
0x97263ac9e1190896c718d047ad285724ca4791aeeb9d70efb83cb532b25eb8e172495662 days 6 hrs ago0x12d77d3a336c57918bb7ea637494fb738738e4ac IN  0x105b2b74fe6de95b68d435f3a3bc8ace03cf16580 Ether0.000421505
0x449733bb3537a5166d670830d49319e3ef42d31d9e8731b1a6a3ee04df31ce5072447923 days 9 hrs ago0x39d3fcd65a3b65d810572464dec5bd87d12700e9 IN  0x105b2b74fe6de95b68d435f3a3bc8ace03cf16580 Ether0.002107525
0xe0dbe03c49b36a7212e59fbaa3e39d95c7dbf7d4da7176fff320c7279a82d4a072447783 days 9 hrs ago0x39d3fcd65a3b65d810572464dec5bd87d12700e9 IN  0x105b2b74fe6de95b68d435f3a3bc8ace03cf16580 Ether0.002109125
0xa107d023f3d3ff61f85df81b0daf5e50cc43da2fdca16e9717a751123d630af372447743 days 9 hrs ago0x39d3fcd65a3b65d810572464dec5bd87d12700e9 IN  0x105b2b74fe6de95b68d435f3a3bc8ace03cf16580 Ether0.002109125
0x4d57670d91e536a07c1e03d757a971eb925645b729208453343de0a7ff91127a72447643 days 9 hrs ago0x39d3fcd65a3b65d810572464dec5bd87d12700e9 IN  0x105b2b74fe6de95b68d435f3a3bc8ace03cf16580 Ether0.002107525
0x39e3fb19912834f187b19a8bb8b2bbf0519e4fa17177e848d933b884161d7a9972366925 days 6 hrs ago0x0f8af92f89a99dcf4e89d614ccd18093e82604e6 IN  0x105b2b74fe6de95b68d435f3a3bc8ace03cf16580 Ether0.00208095
0x6f728e447240a11233d677409e0ca002dcfd5225311870ee48152c6e1e2bc8e672315976 days 11 hrs ago0x494becd1a4dc4da65b526b2063369b59ad2f255a IN  0x105b2b74fe6de95b68d435f3a3bc8ace03cf16580 Ether0.001166151
0xb3a90d4cb9b62471365cc0c81f8c0e6c6e0518c926ea73285bceb398402e3c0b72245698 days 4 hrs ago0x0f8af92f89a99dcf4e89d614ccd18093e82604e6 IN  0x105b2b74fe6de95b68d435f3a3bc8ace03cf16580 Ether0.0016873
0x9b54ead971d023ec3bb1b7dd76595b3f2ca14df4f95cdba0e1e40ff1c81fe972721254611 days 1 hr ago0xb8c7b224651aef78c0e02ecb74a40a8923636f34 IN  0x105b2b74fe6de95b68d435f3a3bc8ace03cf16580 Ether0.002891771
0x07298faa130b9de6a239fabd0afc25bd0dcc4d965552a30f905e3078826e0e87720777512 days 4 hrs ago0x12d77d3a336c57918bb7ea637494fb738738e4ac IN  0x105b2b74fe6de95b68d435f3a3bc8ace03cf16580 Ether0.000421825
0xcacb5e7c9946f9834a0fa5f0709c45565b175048d8582c879f53164237e7422a720739112 days 6 hrs ago0x12d77d3a336c57918bb7ea637494fb738738e4ac IN  0x105b2b74fe6de95b68d435f3a3bc8ace03cf16580 Ether0.0004299351
0x34cbfb7d15658968b087fd2b024b3da601272dd3e851bc4692f66e4a51c29d88719368915 days 6 hrs ago0x9eb1c93fc956094b9dd629650b76e4e15c314beb IN  0x105b2b74fe6de95b68d435f3a3bc8ace03cf16580 Ether0.00033746
0x18526c3222a0dde6d65da98afb00fe8ff64baafdd725f87f2f1d3cd105bf0c40717960818 days 3 hrs ago0xf44f002d6826ff0b123c1d3d4183525648b49e3a IN  0x105b2b74fe6de95b68d435f3a3bc8ace03cf16580 Ether0.000252903
0xc9add953d166270568201593a42d86fca34afe0034a316c8bf537a48289655ab717418919 days 6 hrs ago0xbd80f95e9cff143991126ea242849d55b44e6be7 IN  0x105b2b74fe6de95b68d435f3a3bc8ace03cf16580 Ether0.00016873
0x36526b900c69f5f5e7ab682df2390f4f79acb8af0b6899bdb6a73dd6841a2b50715542923 days 2 hrs ago0x1d27ce177b3356ea3df1e4da887717a0f9d1ed74 IN  0x105b2b74fe6de95b68d435f3a3bc8ace03cf16580 Ether0.000253095
0x70fd3bad07026055c482f4e9e135f02b7db29a2bb8a3c25d91dfba547b8c9e5b715349123 days 11 hrs ago0xc1d3102da913ad0ddeec105c1ed69e569e7ad41a IN  0x105b2b74fe6de95b68d435f3a3bc8ace03cf16580 Ether0.000094156
0xc01dfa010d90df65a89c5f9d4ccd0d5d38a9de4be3402eba4efc05867674cc2c715348523 days 11 hrs ago0xc1d3102da913ad0ddeec105c1ed69e569e7ad41a IN  0x105b2b74fe6de95b68d435f3a3bc8ace03cf16580 Ether0.000094156
0xe7795fdae9e5b40de9d91699e210558136fff1f7d3642612a446fd04ad66fc2c715348023 days 11 hrs ago0xc1d3102da913ad0ddeec105c1ed69e569e7ad41a IN  0x105b2b74fe6de95b68d435f3a3bc8ace03cf16580 Ether0.002109125
0xbf7873113bf104d32015a8486c8557f162fb3c3dc11aebb5389c2a34f4e070be715227323 days 17 hrs ago0x39d3fcd65a3b65d810572464dec5bd87d12700e9 IN  0x105b2b74fe6de95b68d435f3a3bc8ace03cf16580 Ether0.00171062
0x6468ffca3cce0584d1d84d26943ef78c2b1f542aed050c884f64f725a840897e715211923 days 18 hrs ago0xb8c7b224651aef78c0e02ecb74a40a8923636f34 IN  0x105b2b74fe6de95b68d435f3a3bc8ace03cf16580 Ether0.003335709
0xbb1fecc1d1eb7bad2e784f641ec29f4880e00ea8df7e736a338123fabebc65c3713578327 days 2 hrs ago0x1d27ce177b3356ea3df1e4da887717a0f9d1ed74 IN  0x105b2b74fe6de95b68d435f3a3bc8ace03cf16580 Ether0.0000310882
[ Download CSV Export 

Latest 1 Internal Transaction Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0x80942a699888c537f21722ad1a6c52c28fd1d2df5cf1f00c0a83aaee2bdccfb44994844390 days 6 hrs ago0x105b2b74fe6de95b68d435f3a3bc8ace03cf1658  Contract Creation0 Ether
[ Download CSV Export 
Warning: The compiled contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) Solidity Compiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: PolyDistribution
Compiler Version: v0.4.18+commit.9cf6e910
Optimization Enabled: Yes
Runs (Optimizer):  200


Contract Source Code
pragma solidity ^0.4.18;

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
interface IERC20 {
  function balanceOf(address _owner) public view returns (uint256);
  function allowance(address _owner, address _spender) public view returns (uint256);
  function transfer(address _to, uint256 _value) public returns (bool);
  function transferFrom(address _from, address _to, uint256 _value) public returns (bool);
  function approve(address _spender, uint256 _value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

/*
Copyright (c) 2016 Smart Contract Solutions, Inc.

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/

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

/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * @dev https://github.com/ethereum/EIPs/issues/20
 */
contract PolyToken is IERC20 {
  using SafeMath for uint256;

  // Poly Token parameters
  string public name = 'Polymath';
  string public symbol = 'POLY';
  uint8 public constant decimals = 18;
  uint256 public constant decimalFactor = 10 ** uint256(decimals);
  uint256 public constant totalSupply = 1000000000 * decimalFactor;
  mapping (address => uint256) balances;
  mapping (address => mapping (address => uint256)) internal allowed;

  event Transfer(address indexed from, address indexed to, uint256 value);
  event Approval(address indexed owner, address indexed spender, uint256 value);

  /**
  * @dev Constructor for Poly creation
  * @dev Assigns the totalSupply to the PolyDistribution contract
  */
  function PolyToken(address _polyDistributionContractAddress) public {
    require(_polyDistributionContractAddress != address(0));
    balances[_polyDistributionContractAddress] = totalSupply;
    Transfer(address(0), _polyDistributionContractAddress, totalSupply);
  }

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

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

}

/*
Copyright (c) 2016 Smart Contract Solutions, Inc.

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/

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

}

/**
 * @title POLY token initial distribution
 *
 * @dev Distribute purchasers, airdrop, reserve, and founder tokens
 */
contract PolyDistribution is Ownable {
  using SafeMath for uint256;

  PolyToken public POLY;

  uint256 private constant decimalFactor = 10**uint256(18);
  enum AllocationType { PRESALE, FOUNDER, AIRDROP, ADVISOR, RESERVE, BONUS1, BONUS2, BONUS3 }
  uint256 public constant INITIAL_SUPPLY   = 1000000000 * decimalFactor;
  uint256 public AVAILABLE_TOTAL_SUPPLY    = 1000000000 * decimalFactor;
  uint256 public AVAILABLE_PRESALE_SUPPLY  =  230000000 * decimalFactor; // 100% Released at Token Distribution (TD)
  uint256 public AVAILABLE_FOUNDER_SUPPLY  =  150000000 * decimalFactor; // 33% Released at TD +1 year -> 100% at TD +3 years
  uint256 public AVAILABLE_AIRDROP_SUPPLY  =   10000000 * decimalFactor; // 100% Released at TD
  uint256 public AVAILABLE_ADVISOR_SUPPLY  =   20000000 * decimalFactor; // 100% Released at TD +7 months
  uint256 public AVAILABLE_RESERVE_SUPPLY  =  513116658 * decimalFactor; // 6.8% Released at TD +100 days -> 100% at TD +4 years
  uint256 public AVAILABLE_BONUS1_SUPPLY  =    39053330 * decimalFactor; // 100% Released at TD +1 year
  uint256 public AVAILABLE_BONUS2_SUPPLY  =     9354408 * decimalFactor; // 100% Released at TD +2 years
  uint256 public AVAILABLE_BONUS3_SUPPLY  =    28475604 * decimalFactor; // 100% Released at TD +3 years

  uint256 public grandTotalClaimed = 0;
  uint256 public startTime;

  // Allocation with vesting information
  struct Allocation {
    uint8 AllocationSupply; // Type of allocation
    uint256 endCliff;       // Tokens are locked until
    uint256 endVesting;     // This is when the tokens are fully unvested
    uint256 totalAllocated; // Total tokens allocated
    uint256 amountClaimed;  // Total tokens claimed
  }
  mapping (address => Allocation) public allocations;

  // List of admins
  mapping (address => bool) public airdropAdmins;

  // Keeps track of whether or not a 250 POLY airdrop has been made to a particular address
  mapping (address => bool) public airdrops;

  modifier onlyOwnerOrAdmin() {
    require(msg.sender == owner || airdropAdmins[msg.sender]);
    _;
  }

  event LogNewAllocation(address indexed _recipient, AllocationType indexed _fromSupply, uint256 _totalAllocated, uint256 _grandTotalAllocated);
  event LogPolyClaimed(address indexed _recipient, uint8 indexed _fromSupply, uint256 _amountClaimed, uint256 _totalAllocated, uint256 _grandTotalClaimed);

  /**
    * @dev Constructor function - Set the poly token address
    * @param _startTime The time when PolyDistribution goes live
    */
  function PolyDistribution(uint256 _startTime) public {
    require(_startTime >= now);
    require(AVAILABLE_TOTAL_SUPPLY == AVAILABLE_PRESALE_SUPPLY.add(AVAILABLE_FOUNDER_SUPPLY).add(AVAILABLE_AIRDROP_SUPPLY).add(AVAILABLE_ADVISOR_SUPPLY).add(AVAILABLE_BONUS1_SUPPLY).add(AVAILABLE_BONUS2_SUPPLY).add(AVAILABLE_BONUS3_SUPPLY).add(AVAILABLE_RESERVE_SUPPLY));
    startTime = _startTime;
    POLY = new PolyToken(this);
  }

  /**
    * @dev Allow the owner of the contract to assign a new allocation
    * @param _recipient The recipient of the allocation
    * @param _totalAllocated The total amount of POLY available to the receipient (after vesting)
    * @param _supply The POLY supply the allocation will be taken from
    */
  function setAllocation (address _recipient, uint256 _totalAllocated, AllocationType _supply) onlyOwner public {
    require(allocations[_recipient].totalAllocated == 0 && _totalAllocated > 0);
    require(_supply >= AllocationType.PRESALE && _supply <= AllocationType.BONUS3);
    require(_recipient != address(0));
    if (_supply == AllocationType.PRESALE) {
      AVAILABLE_PRESALE_SUPPLY = AVAILABLE_PRESALE_SUPPLY.sub(_totalAllocated);
      allocations[_recipient] = Allocation(uint8(AllocationType.PRESALE), 0, 0, _totalAllocated, 0);
    } else if (_supply == AllocationType.FOUNDER) {
      AVAILABLE_FOUNDER_SUPPLY = AVAILABLE_FOUNDER_SUPPLY.sub(_totalAllocated);
      allocations[_recipient] = Allocation(uint8(AllocationType.FOUNDER), startTime + 1 years, startTime + 3 years, _totalAllocated, 0);
    } else if (_supply == AllocationType.ADVISOR) {
      AVAILABLE_ADVISOR_SUPPLY = AVAILABLE_ADVISOR_SUPPLY.sub(_totalAllocated);
      allocations[_recipient] = Allocation(uint8(AllocationType.ADVISOR), startTime + 209 days, 0, _totalAllocated, 0);
    } else if (_supply == AllocationType.RESERVE) {
      AVAILABLE_RESERVE_SUPPLY = AVAILABLE_RESERVE_SUPPLY.sub(_totalAllocated);
      allocations[_recipient] = Allocation(uint8(AllocationType.RESERVE), startTime + 100 days, startTime + 4 years, _totalAllocated, 0);
    } else if (_supply == AllocationType.BONUS1) {
      AVAILABLE_BONUS1_SUPPLY = AVAILABLE_BONUS1_SUPPLY.sub(_totalAllocated);
      allocations[_recipient] = Allocation(uint8(AllocationType.BONUS1), startTime + 1 years, startTime + 1 years, _totalAllocated, 0);
    } else if (_supply == AllocationType.BONUS2) {
      AVAILABLE_BONUS2_SUPPLY = AVAILABLE_BONUS2_SUPPLY.sub(_totalAllocated);
      allocations[_recipient] = Allocation(uint8(AllocationType.BONUS2), startTime + 2 years, startTime + 2 years, _totalAllocated, 0);
    } else if (_supply == AllocationType.BONUS3) {
      AVAILABLE_BONUS3_SUPPLY = AVAILABLE_BONUS3_SUPPLY.sub(_totalAllocated);
      allocations[_recipient] = Allocation(uint8(AllocationType.BONUS3), startTime + 3 years, startTime + 3 years, _totalAllocated, 0);
    }
    AVAILABLE_TOTAL_SUPPLY = AVAILABLE_TOTAL_SUPPLY.sub(_totalAllocated);
    LogNewAllocation(_recipient, _supply, _totalAllocated, grandTotalAllocated());
  }

  /**
    * @dev Add an airdrop admin
    */
  function setAirdropAdmin(address _admin, bool _isAdmin) public onlyOwner {
    airdropAdmins[_admin] = _isAdmin;
  }

  /**
    * @dev perform a transfer of allocations
    * @param _recipient is a list of recipients
    */
  function airdropTokens(address[] _recipient) public onlyOwnerOrAdmin {
    require(now >= startTime);
    uint airdropped;
    for(uint256 i = 0; i< _recipient.length; i++)
    {
        if (!airdrops[_recipient[i]]) {
          airdrops[_recipient[i]] = true;
          require(POLY.transfer(_recipient[i], 250 * decimalFactor));
          airdropped = airdropped.add(250 * decimalFactor);
        }
    }
    AVAILABLE_AIRDROP_SUPPLY = AVAILABLE_AIRDROP_SUPPLY.sub(airdropped);
    AVAILABLE_TOTAL_SUPPLY = AVAILABLE_TOTAL_SUPPLY.sub(airdropped);
    grandTotalClaimed = grandTotalClaimed.add(airdropped);
  }

  /**
    * @dev Transfer a recipients available allocation to their address
    * @param _recipient The address to withdraw tokens for
    */
  function transferTokens (address _recipient) public {
    require(allocations[_recipient].amountClaimed < allocations[_recipient].totalAllocated);
    require(now >= allocations[_recipient].endCliff);
    require(now >= startTime);
    uint256 newAmountClaimed;
    if (allocations[_recipient].endVesting > now) {
      // Transfer available amount based on vesting schedule and allocation
      newAmountClaimed = allocations[_recipient].totalAllocated.mul(now.sub(startTime)).div(allocations[_recipient].endVesting.sub(startTime));
    } else {
      // Transfer total allocated (minus previously claimed tokens)
      newAmountClaimed = allocations[_recipient].totalAllocated;
    }
    uint256 tokensToTransfer = newAmountClaimed.sub(allocations[_recipient].amountClaimed);
    allocations[_recipient].amountClaimed = newAmountClaimed;
    require(POLY.transfer(_recipient, tokensToTransfer));
    grandTotalClaimed = grandTotalClaimed.add(tokensToTransfer);
    LogPolyClaimed(_recipient, allocations[_recipient].AllocationSupply, tokensToTransfer, newAmountClaimed, grandTotalClaimed);
  }

  // Returns the amount of POLY allocated
  function grandTotalAllocated() public view returns (uint256) {
    return INITIAL_SUPPLY - AVAILABLE_TOTAL_SUPPLY;
  }

  // Allow transfer of accidentally sent ERC20 tokens
  function refundTokens(address _recipient, address _token) public onlyOwner {
    require(_token != address(POLY));
    IERC20 token = IERC20(_token);
    uint256 balance = token.balanceOf(this);
    require(token.transfer(_recipient, balance));
  }
}

Contract ABI
[{"constant":false,"inputs":[{"name":"_recipient","type":"address"}],"name":"transferTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"airdropAdmins","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"AVAILABLE_PRESALE_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_recipient","type":"address"},{"name":"_totalAllocated","type":"uint256"},{"name":"_supply","type":"uint8"}],"name":"setAllocation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"AVAILABLE_AIRDROP_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"AVAILABLE_BONUS3_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"grandTotalAllocated","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"AVAILABLE_BONUS1_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"AVAILABLE_FOUNDER_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_recipient","type":"address[]"}],"name":"airdropTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"allocations","outputs":[{"name":"AllocationSupply","type":"uint8"},{"name":"endCliff","type":"uint256"},{"name":"endVesting","type":"uint256"},{"name":"totalAllocated","type":"uint256"},{"name":"amountClaimed","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_recipient","type":"address"},{"name":"_token","type":"address"}],"name":"refundTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_admin","type":"address"},{"name":"_isAdmin","type":"bool"}],"name":"setAirdropAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"airdrops","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"grandTotalClaimed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"AVAILABLE_TOTAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"AVAILABLE_BONUS2_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"POLY","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"AVAILABLE_ADVISOR_SUPPLY","outputs":[{"name":"","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":true,"inputs":[],"name":"AVAILABLE_RESERVE_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_startTime","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_recipient","type":"address"},{"indexed":true,"name":"_fromSupply","type":"uint8"},{"indexed":false,"name":"_totalAllocated","type":"uint256"},{"indexed":false,"name":"_grandTotalAllocated","type":"uint256"}],"name":"LogNewAllocation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_recipient","type":"address"},{"indexed":true,"name":"_fromSupply","type":"uint8"},{"indexed":false,"name":"_amountClaimed","type":"uint256"},{"indexed":false,"name":"_totalAllocated","type":"uint256"},{"indexed":false,"name":"_grandTotalClaimed","type":"uint256"}],"name":"LogPolyClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

Contract Creation Code
60606040526b033b2e3c9fd0803ce80000006002556abe4064fbcc1d7ea60000006003556a7c13bc4b2c133c560000006004556a084595161401484a0000006005556a108b2a2c280290940000006006556b01a870adc460ff9cc08800006007556a204ddd42edb5c0650800006008556a07bcdf794aae4b49a000006009556a178df19602e8009ed00000600a556000600b5534156200009e57600080fd5b60405160208062001ee08339810160405280805160008054600160a060020a03191633600160a060020a031617905591505042811015620000de57600080fd5b620001446007546200012f600a546200012f6009546200012f6008546200012f6006546200012f6005546200012f600454600354620001b064010000000002620011d9179091906401000000009004565b90640100000000620011d9620001b082021704565b600254146200015257600080fd5b600c8190553062000162620001c7565b600160a060020a039091168152602001604051809103906000f08015156200018957600080fd5b60018054600160a060020a031916600160a060020a039290921691909117905550620001d8565b600082820183811015620001c057fe5b9392505050565b604051610ae480620013fc83390190565b61121480620001e86000396000f3006060604052600436106101245763ffffffff60e060020a6000350416630c89a0df811461012957806310e823841461014a57806312e43d921461017d5780631435e397146101a2578063162cbefe146101ca578063204b21d1146101dd5780632b41a901146101f05780632ceae552146102035780632ff2e9dc1461021657806334ac6f5e146102295780634ee51a271461023c57806352a9039c1461028b57806357f1935f146102df57806378e979251461030457806379aa024e146103175780638c86f0a71461033b5780638da5cb5b1461035a5780639377530f14610389578063a92259fc1461039c578063dc39537a146103af578063e4bbb4b0146103c2578063ed0e4665146103d5578063f2fde38b146103e8578063fefc708914610407575b600080fd5b341561013457600080fd5b610148600160a060020a036004351661041a565b005b341561015557600080fd5b610169600160a060020a036004351661069e565b604051901515815260200160405180910390f35b341561018857600080fd5b6101906106b3565b60405190815260200160405180910390f35b34156101ad57600080fd5b610148600160a060020a036004351660243560ff604435166106b9565b34156101d557600080fd5b610190610cb2565b34156101e857600080fd5b610190610cb8565b34156101fb57600080fd5b610190610cbe565b341561020e57600080fd5b610190610cd2565b341561022157600080fd5b610190610cd8565b341561023457600080fd5b610190610ce8565b341561024757600080fd5b6101486004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843750949650610cee95505050505050565b341561029657600080fd5b6102aa600160a060020a0360043516610ed7565b60405160ff909516855260208501939093526040808501929092526060840152608083019190915260a0909101905180910390f35b34156102ea57600080fd5b610148600160a060020a0360043581169060243516610f0a565b341561030f57600080fd5b610190611042565b341561032257600080fd5b610148600160a060020a03600435166024351515611048565b341561034657600080fd5b610169600160a060020a036004351661108e565b341561036557600080fd5b61036d6110a3565b604051600160a060020a03909116815260200160405180910390f35b341561039457600080fd5b6101906110b2565b34156103a757600080fd5b6101906110b8565b34156103ba57600080fd5b6101906110be565b34156103cd57600080fd5b61036d6110c4565b34156103e057600080fd5b6101906110d3565b34156103f357600080fd5b610148600160a060020a03600435166110d9565b341561041257600080fd5b610190611174565b600160a060020a0381166000908152600d6020526040812060038101546004909101548291901061044a57600080fd5b600160a060020a0383166000908152600d602052604090206001015442101561047257600080fd5b600c5442101561048157600080fd5b600160a060020a0383166000908152600d60205260409020600201544290111561052b57600c54600160a060020a0384166000908152600d6020526040902060020154610524916104d8919063ffffffff61117a16565b6105186104f0600c544261117a90919063ffffffff16565b600160a060020a0387166000908152600d60205260409020600301549063ffffffff61118c16565b9063ffffffff6111c216565b915061054a565b600160a060020a0383166000908152600d602052604090206003015491505b600160a060020a0383166000908152600d602052604090206004015461057790839063ffffffff61117a16565b600160a060020a038085166000908152600d6020526040808220600401869055600154939450929091169163a9059cbb918691859190516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156105f557600080fd5b6102c65a03f1151561060657600080fd5b50505060405180519050151561061b57600080fd5b600b5461062e908263ffffffff6111d916565b600b819055600160a060020a0384166000818152600d6020526040908190205460ff16927fc1b0dc2f9da98fa1aa634f1f6a39f6a2452952767c99e132640cb03af693c94591859187915180848152602001838152602001828152602001935050505060405180910390a3505050565b600e6020526000908152604090205460ff1681565b60035481565b60005433600160a060020a039081169116146106d457600080fd5b600160a060020a0383166000908152600d60205260409020600301541580156106fd5750600082115b151561070857600080fd5b600081600781111561071657fe5b101580156107305750600781600781111561072d57fe5b11155b151561073b57600080fd5b600160a060020a038316151561075057600080fd5b600081600781111561075e57fe5b14156107f957600354610777908363ffffffff61117a16565b60035560a06040519081016040908152600080835260208084018290528284018290526060840186905260808401829052600160a060020a0387168252600d9052208151815460ff191660ff91909116178155602082015181600101556040820151816002015560608201518160030155608082015160049091015550610c40565b600181600781111561080757fe5b14156108b557600454610820908363ffffffff61117a16565b60045560a0604051908101604090815260018252600c546301e1338081016020808501919091526305a39a809091018284015260608301859052600060808401819052600160a060020a0387168152600d909152208151815460ff191660ff91909116178155602082015181600101556040820151816002015560608201518160030155608082015160049091015550610c40565b60038160078111156108c357fe5b141561096a576006546108dc908363ffffffff61117a16565b60065560a0604051908101604090815260038252600c5463011389800160208084019190915260008284018190526060840186905260808401819052600160a060020a0387168152600d909152208151815460ff191660ff91909116178155602082015181600101556040820151816002015560608201518160030155608082015160049091015550610c40565b600481600781111561097857fe5b1415610a2557600754610991908363ffffffff61117a16565b60075560a0604051908101604090815260048252600c546283d6008101602080850191909152630784ce009091018284015260608301859052600060808401819052600160a060020a0387168152600d909152208151815460ff191660ff91909116178155602082015181600101556040820151816002015560608201518160030155608082015160049091015550610c40565b6005816007811115610a3357fe5b1415610ada57600854610a4c908363ffffffff61117a16565b60085560a0604051908101604090815260058252600c546301e133800160208084018290528284019190915260608301859052600060808401819052600160a060020a0387168152600d909152208151815460ff191660ff91909116178155602082015181600101556040820151816002015560608201518160030155608082015160049091015550610c40565b6006816007811115610ae857fe5b1415610b8f57600954610b01908363ffffffff61117a16565b60095560a0604051908101604090815260068252600c546303c267000160208084018290528284019190915260608301859052600060808401819052600160a060020a0387168152600d909152208151815460ff191660ff91909116178155602082015181600101556040820151816002015560608201518160030155608082015160049091015550610c40565b6007816007811115610b9d57fe5b1415610c4057600a54610bb6908363ffffffff61117a16565b600a5560a0604051908101604090815260078252600c546305a39a800160208084018290528284019190915260608301859052600060808401819052600160a060020a0387168152600d909152208151815460ff191660ff919091161781556020820151816001015560408201518160020155606082015181600301556080820151600490910155505b600254610c53908363ffffffff61117a16565b600255806007811115610c6257fe5b83600160a060020a03167f1ee7c4bce4c301d0c55622a01f860f1b71b72f582250922fa662d173c32164ff84610c96610cbe565b60405191825260208201526040908101905180910390a3505050565b60055481565b600a5481565b6002546b033b2e3c9fd0803ce80000000390565b60085481565b6b033b2e3c9fd0803ce800000081565b60045481565b60008054819033600160a060020a0390811691161480610d265750600160a060020a0333166000908152600e602052604090205460ff165b1515610d3157600080fd5b600c54421015610d4057600080fd5b5060005b8251811015610e9057600f6000848381518110610d5d57fe5b90602001906020020151600160a060020a0316815260208101919091526040016000205460ff161515610e88576001600f6000858481518110610d9c57fe5b90602001906020020151600160a060020a0390811682526020820192909252604001600020805460ff1916921515929092179091556001541663a9059cbb848381518110610de657fe5b90602001906020020151680d8d726b7177a8000060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610e4657600080fd5b6102c65a03f11515610e5757600080fd5b505050604051805190501515610e6c57600080fd5b610e8582680d8d726b7177a8000063ffffffff6111d916565b91505b600101610d44565b600554610ea3908363ffffffff61117a16565b600555600254610eb9908363ffffffff61117a16565b600255600b54610ecf908363ffffffff6111d916565b600b55505050565b600d602052600090815260409020805460018201546002830154600384015460049094015460ff90931693919290919085565b60008054819033600160a060020a03908116911614610f2857600080fd5b600154600160a060020a0384811691161415610f4357600080fd5b82915081600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610f9d57600080fd5b6102c65a03f11515610fae57600080fd5b5050506040518051915050600160a060020a03821663a9059cbb858360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561101657600080fd5b6102c65a03f1151561102757600080fd5b50505060405180519050151561103c57600080fd5b50505050565b600c5481565b60005433600160a060020a0390811691161461106357600080fd5b600160a060020a03919091166000908152600e60205260409020805460ff1916911515919091179055565b600f6020526000908152604090205460ff1681565b600054600160a060020a031681565b600b5481565b60025481565b60095481565b600154600160a060020a031681565b60065481565b60005433600160a060020a039081169116146110f457600080fd5b600160a060020a038116151561110957600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60075481565b60008282111561118657fe5b50900390565b60008083151561119f57600091506111bb565b508282028284828115156111af57fe5b04146111b757fe5b8091505b5092915050565b60008082848115156111d057fe5b04949350505050565b6000828201838110156111b757fe00a165627a7a72305820e8bf77844267549222dc800cd8efa89d2113ddec31358902d1eb2a33f94f12080029606060405260408051908101604052600881527f506f6c796d6174680000000000000000000000000000000000000000000000006020820152600090805161004b92916020019061012b565b5060408051908101604052600481527f504f4c59000000000000000000000000000000000000000000000000000000006020820152600190805161009392916020019061012b565b50341561009f57600080fd5b604051602080610ae483398101604052808051915050600160a060020a03811615156100ca57600080fd5b600160a060020a0381166000818152600260205260408082206b033b2e3c9fd0803ce8000000908190557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef915190815260200160405180910390a3506101c6565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061016c57805160ff1916838001178555610199565b82800160010185558215610199579182015b8281111561019957825182559160200191906001019061017e565b506101a59291506101a9565b5090565b6101c391905b808211156101a557600081556001016101af565b90565b61090f806101d56000396000f3006060604052600436106100b95763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100be578063095ea7b31461014857806318160ddd1461017e57806323b872dd146101a3578063313ce567146101cb57806366188463146101f45780636d6a6a4d1461021657806370a082311461022957806395d89b4114610248578063a9059cbb1461025b578063d73dd6231461027d578063dd62ed3e1461029f575b600080fd5b34156100c957600080fd5b6100d16102c4565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561010d5780820151838201526020016100f5565b50505050905090810190601f16801561013a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015357600080fd5b61016a600160a060020a0360043516602435610362565b604051901515815260200160405180910390f35b341561018957600080fd5b6101916103ce565b60405190815260200160405180910390f35b34156101ae57600080fd5b61016a600160a060020a03600435811690602435166044356103de565b34156101d657600080fd5b6101de610560565b60405160ff909116815260200160405180910390f35b34156101ff57600080fd5b61016a600160a060020a0360043516602435610565565b341561022157600080fd5b61019161065f565b341561023457600080fd5b610191600160a060020a036004351661066b565b341561025357600080fd5b6100d1610686565b341561026657600080fd5b61016a600160a060020a03600435166024356106f1565b341561028857600080fd5b61016a600160a060020a03600435166024356107ec565b34156102aa57600080fd5b610191600160a060020a0360043581169060243516610890565b60008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561035a5780601f1061032f5761010080835404028352916020019161035a565b820191906000526020600020905b81548152906001019060200180831161033d57829003601f168201915b505050505081565b600160a060020a03338116600081815260036020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b6b033b2e3c9fd0803ce800000081565b6000600160a060020a03831615156103f557600080fd5b600160a060020a03841660009081526002602052604090205482111561041a57600080fd5b600160a060020a038085166000908152600360209081526040808320339094168352929052205482111561044d57600080fd5b600160a060020a038416600090815260026020526040902054610476908363ffffffff6108bb16565b600160a060020a0380861660009081526002602052604080822093909355908516815220546104ab908363ffffffff6108cd16565b600160a060020a038085166000908152600260209081526040808320949094558783168252600381528382203390931682529190915220546104f3908363ffffffff6108bb16565b600160a060020a03808616600081815260036020908152604080832033861684529091529081902093909355908516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060019392505050565b601281565b600160a060020a033381166000908152600360209081526040808320938616835292905290812054808311156105c257600160a060020a0333811660009081526003602090815260408083209388168352929052908120556105f9565b6105d2818463ffffffff6108bb16565b600160a060020a033381166000908152600360209081526040808320938916835292905220555b600160a060020a0333811660008181526003602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a35060019392505050565b670de0b6b3a764000081565b600160a060020a031660009081526002602052604090205490565b60018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561035a5780601f1061032f5761010080835404028352916020019161035a565b6000600160a060020a038316151561070857600080fd5b600160a060020a03331660009081526002602052604090205482111561072d57600080fd5b600160a060020a033316600090815260026020526040902054610756908363ffffffff6108bb16565b600160a060020a03338116600090815260026020526040808220939093559085168152205461078b908363ffffffff6108cd16565b600160a060020a0380851660008181526002602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a350600192915050565b600160a060020a033381166000908152600360209081526040808320938616835292905290812054610824908363ffffffff6108cd16565b600160a060020a0333811660008181526003602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a350600192915050565b600160a060020a03918216600090815260036020908152604080832093909416825291909152205490565b6000828211156108c757fe5b50900390565b6000828201838110156108dc57fe5b93925050505600a165627a7a7230582066d6bfd4160d6f7960286626b40454fca2af2fdb811c33b18c3989cf0e43ca670029000000000000000000000000000000000000000000000000000000005a714736


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

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000005a714736


   Swarm Source:
bzzr://66d6bfd4160d6f7960286626b40454fca2af2fdb811c33b18c3989cf0e43ca67
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.