Sponsored Link:   SHIFT.cash - smart-contract based car title lending platform, 30 billion market, 35+ employees. Join NOW.
Contract Overview | Crypto20Token
ETH Balance: 140.617435200093805153 Ether
ETH USD Value: $131,534.96 (@ $935.41/ETH)
No Of Transactions: 35368 txns
Token Tracker 0x26e75307fc0c021472feb8f727839531f112f317
  Latest 25 txns from a total Of 35368 transactions (+1 PendingTxn) View All

TxHash Age From To Value [TxFee]
0x0aea5a3873cd66b565f423cb9164ee73395a63f44849cb9c7cf88bf80b554702(pending)21 mins ago0xd1af91613d47e8bc010d5c5571f40c5aa5590b38  IN  0x26e75307fc0c021472feb8f727839531f112f3170 Ether(pending)
0xf9bafc1216eb7f87d4ce52b5d62d3c5e496e45f7e0830ceac771ec4b88f96576 24 secs ago0x9016fbb08ab503c6d5ef745e102380e992fef37c  IN   Crypto20Token0 Ether0.0015882
0x36c813026e6c419116f67c1674fbf423b2c5c98468ba0ed1b84d5350091c0c5010 mins ago0x3b9208cf74aa2d42ea6fb66d997843ed1f181e10  IN   Crypto20Token0 Ether0.000266476
0x3bffb7232b7abc50396f24f1f33f35a1eb9f1106581e382977a18a666a11df3424 mins ago0xf73c3c65bde10bf26c2e1763104e609a41702efe  IN   Crypto20Token0 Ether0.00114012
0xdb50d5530dfa6ce44ce3aa072156081d39a95e1f5cab7b2b3f8913c5f17a436951 mins ago0xb5caf795c92ebef75344001d246bab20b545f73e  IN   Crypto20Token0 Ether0.00069204
0x73757a3da9f5fd858c07a889d701052f39c6c33995a8ef9580a7e0dc669ad0471 hr 6 mins ago0xf73c3c65bde10bf26c2e1763104e609a41702efe  IN   Crypto20Token0 Ether0.0011382
0xc5540c7621636ffc4a5fd5c9e546cc13b895deb5de79c103930fa92d267cc5a21 hr 19 mins ago0x66b979f628d0123d3f6afa60ea6e63310a5dd327  IN   Crypto20Token0 Ether0.00046264
0x3e54f77d47498d8f5c33ba7e711629cc8fb8abf27c5d76b186659df3739318531 hr 19 mins ago0xa7e9d18b0cdffd796b3e16a0f165dfb86ed465bb  IN   Crypto20Token0 Ether0.00046136
0x37420fba0419e18f9023d472a043a2ea4436f6cae212e4ac8ec5c151faa6e3f91 hr 19 mins ago0x5ead7f0ef2e2bba9e52b57882a61334c4db800b8  IN   Crypto20Token0 Ether0.00046264
0x6e12ce464067901a959f2e7086233c7cede143286f88e87adb6ad79fed4dcdd31 hr 19 mins ago0xdad6f017fb66f4ec9258c19fa2c451f4c84eb768  IN   Crypto20Token0 Ether0.00046136
0x63054d3eddde72b0f5f925a3e440a3abbc2f40f1da3e6d3e48cff881cdd9662b1 hr 20 mins ago0x93971e2e1767520bccb787b326717e50ba4fce0e  IN   Crypto20Token0 Ether0.00046008
0x2758621ce359d22ab1ff06e1c26fe2362e98b3862fe7850609797e8364405acb1 hr 20 mins ago0xcebff3b326b9d3d6870cf93341333776f4460097  IN   Crypto20Token0 Ether0.00046008
0x938968e51398479c250292a20000358d0cd55e84ff7d6fbacc5d0101172095361 hr 20 mins ago0x5b25f391fe14535b4e01fc97c07bad656f582e7d  IN   Crypto20Token0 Ether0.00046008
0x723f604897bb7961dfbcccad55ce1fbf176566ddc138d9e0ff7749d78333bd0e1 hr 52 mins ago0x0dbbcb3bcbf33d0a4c86c2e7bf37520acb78c2e3  IN   Crypto20Token0 Ether0.000212016
0x3e8836991061c4a68cc0cddab7bbd9f097cb2ec4a481d485e756ba2e3dff72232 hrs 4 mins ago0x1c9c258f35a9dd8b95aaf8842b5d66b14a1e0a2b  IN   Crypto20Token0 Ether0.002173164
0x131585b4f33d2b7aec13196a2236180e234b36c0f14f4d26bfd04d26e3ed369a2 hrs 22 mins ago0x0ec8071672424b1bbe96e1ea4b8b5ad81fe295a9  IN   Crypto20Token0 Ether0.000184108
0xfdb2355f99bc89a67e72220d5850dc499dd4214cb657cf3124017853fea310ec2 hrs 51 mins ago0xf73c3c65bde10bf26c2e1763104e609a41702efe  IN   Crypto20Token0 Ether0.00159012
0xed94063dbf3c10b680304980889a36fbb2da40417853e1402bed7df99e9ec7c93 hrs ago0xf73c3c65bde10bf26c2e1763104e609a41702efe  IN   Crypto20Token0 Ether0.00114012
0x7ff227a049aa57169cd692943a0b688f1a3b396ca298f88c39dbff96fff7dbf13 hrs 6 mins ago0xf73c3c65bde10bf26c2e1763104e609a41702efe  IN   Crypto20Token0 Ether0.0011382
0x2a6b0d0cff6e9c439e86fdd4422c7a68470dd22f8c015bf02a05346d43b506663 hrs 29 mins ago0x9016fbb08ab503c6d5ef745e102380e992fef37c  IN   Crypto20Token0 Ether0.0015882
0x75d27f8fab8f7e20efd8c7c34a585296906b78572fda76f4af890089f6f0569a3 hrs 30 mins ago0xf73c3c65bde10bf26c2e1763104e609a41702efe  IN   Crypto20Token0 Ether0.00159012
0xac650c2102d0b60d2d4ff7515ca5a98a4d3480474c3880627ffa4e0f3a96976e3 hrs 31 mins ago0xb679b1940c3d2b7f77e7c3ad6b10e1a97d86fc9a  IN   Crypto20Token0 Ether0.00069012
0xbd3e7b251e7647bf8076951460201061ce96e7c40e691a2506dde95755d83ab64 hrs 11 mins ago0xc75f26b471ee09452ed7e5fa35be9dc4b259a4f6  IN   Crypto20Token0 Ether0.00079674
0x88635c8e70f127518429e274c24ecc0c4c918191433dad490534838f1bb43d744 hrs 12 mins ago0xf73c3c65bde10bf26c2e1763104e609a41702efe  IN   Crypto20Token0 Ether0.0015882
0xd8ea9338be65067256244f2132e1c10164a203e79899d3f44308ab7b95e618eb4 hrs 22 mins ago0xf73c3c65bde10bf26c2e1763104e609a41702efe  IN   Crypto20Token0 Ether0.0015882
[ 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
0xec2e32d1d02015513d8a9b78369a8f970ac87872ca4f9c13b8b568a4b1ae96e451074832 days 23 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170x38304d2b3ae09bc641825650ffb8b679970c393a0.281452088368811954 Ether
0x512a37e36ef1c46877d431636baa6c071e200aadac7a1ec8d507e0068c035a0e51072743 days 54 mins ago0x26e75307fc0c021472feb8f727839531f112f3170x1f3fa509c846bbe1dbbf6c6fbd6919abd5ccda3e0.143704360174918274 Ether
0xe070eff4406a0c1bcd54552ff51a72b5cfbb100fa419647786cdb99f708568e651068573 days 2 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170x3489481b8e9dd5542df38364404b25893a2bedc40.002367792248013925 Ether
0xb7cb9e34eee785583efecbdfa9d673550d2d55d9df1b36eed021d8473dd5579d50980384 days 13 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170x20e80913a188e7dd37cc074e6eba48ed6227f7440.262519636078323416 Ether
0x33299ed42cc5022b673e6f527b9f3508b5456c2c8c8ddba7937b9dbdfc871d7f50946805 days 3 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170x4a45124a42c0bd49e0af8dee4c9740024e71ddcc3.004108767158280402 Ether
0xebf31ac0ecc7e6facfc30a5f93a0eca114881b63539716a06285685decb73b9f50943115 days 4 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170x97cef7e6a7108cef70c463ccdd3e22130b5e59660.001798653685267766 Ether
0xe43968764dc8bbb50bb0cea1fe32ea638d27ba2def86ec6d3361db5ace609af350940615 days 5 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170x97cef7e6a7108cef70c463ccdd3e22130b5e59660.104762009523914285 Ether
0x55e15c402fbda51772a9b60a46d5c0718d8b8f4948d1cceb401e0da825e030ed50921415 days 13 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170x4a0e5472bdc9adfac4e105809d15ab75ea3d02710.006931008075617852 Ether
0x1552919ec6f357e9194e5c14dde42069446a1633878cdc7c84d33274745d55e250893786 days 51 mins ago0x26e75307fc0c021472feb8f727839531f112f3170x31049f0be431096ac77dc8bfc0d625b72f38f65d0.285707826988178635 Ether
0x02fa24252f6c624b8040e2d523f80b6a3b213159a047cd3adce9e532ca48121650884826 days 4 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170xf99b3cf1eaf0a8672db1f593ba3ae0a985fa0be70.180486825088961408 Ether
0x1d8c07d5c099d748a427c27fcc5b70a092effbd77af4d222932c2d848117884c50883986 days 4 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170x48f4d81da3df54d9dfa40ec0ff5ee59daa77afaa2.116914637626333219 Ether
0xf9f3ce5a18fc4164e452832b48ac2fe45af134b5ecc620839e748dbbd473f13550864106 days 12 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170xb530eaf4756dc8d04e0733cdb1e5b846764f2b1b0.392755221583762787 Ether
0x1b19c931642262a0ce88dee2d1518202d21eea1073ce616a8a5d9e3aafa751aa50792247 days 17 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170xfd8d710764a8f252e7e7bc47c2d9d3c8bafc8a0b0.063271175516389474 Ether
0xf20fcfe4486833e096f863016a0f2422f119fb443dfa20baaec1d3e17f6eaad150763648 days 5 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170x9fec901b1edd31055615a786d280dd9e0e00564b14.611007397297138331 Ether
0xc56fbad91bd84ff8a98df66cbe400aeeea6924f8ee5653d6028ffd00c4a1523b50759088 days 7 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170xde3ea3460bd7985607745ce2fc5e382a055ca32a7.259311858668047116 Ether
0x943a44b02d0ee767c1cd6c8ca24d048c197fbc2e47e64d359570ba73b49be23250670729 days 18 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170xc142431a3bb2afdc213b1d9bc2c38cd2a68c16b61.106281479516069999 Ether
0xb4ff5078a152f2d6481889de0fe73f7ee6660f00364fa2bdb51a6c8e91e6c0db506557410 days 43 mins ago0x26e75307fc0c021472feb8f727839531f112f3170xcf52b7d981ae3a156d2cdcd214a37c5c6fd308360.010921509331150112 Ether
0xf163075075fcf6b2d526d5b5303777c9d8b2a6ccf67d055de6dd2412fcd9b802506010110 days 22 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170x5d6f97547cb95382cb096419285b96948cb424400.306270532494076129 Ether
0x5e94d44a3d1173611ff5d956291199ba2e0f006d46358d50139402f52945cfc2505920711 days 2 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170x87e2b64eea1d88131438a9bc0d405e7bb1de0a5d0.78717480986162597 Ether
0x712b10fb7c5848360f18d7868f9a08458f74151a7fbfbb9cb4020b30a9af1fdc504720913 days 2 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170x87e2b64eea1d88131438a9bc0d405e7bb1de0a5d0.00422801793753522 Ether
0xdf53d82c0177686278203c380482ab1369dbde5e3b30267fa63d830252c17e57504548013 days 9 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170x070eb933f8b4f27a9d0796c6099d54294c0d05460.002110340949216164 Ether
0xec207f3b44865ad36512762b5ed86cac1fc6b3288ba2a8e254405a9d5e0e21f6504037414 days 6 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170x60f2f1f84457cb0aceb365dee7d57e1fd728be3714.126421158297457505 Ether
0x64c97830441248b02b5f8ad611a62ed51f58cc049ac77a9cd32397a0610cb760504022014 days 6 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170x69afc123862503e7d49c679f97226fa079f10f3b0.5613432276387764 Ether
0x46c923bcce0242a7478d4d9784b52b42c426024876b482c30756e5bfe280cc0c503991014 days 8 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170xb3a0b0a4eee80b09ecef8eb1977f411682e0e9e83.187676967871467594 Ether
0x77cc37098080222c2ec6bad610fde4c11b11d84261aec08f360b1cd79c15d398503800714 days 15 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170xa9403016935f101c7a62c726bd3b8e37e3e35d3b5.3355267682950649 Ether
[ Download CSV Export  ] 
Warning: The compiled contract might be susceptible to ZeroFunctionSelector (very low-severity), DelegateCallReturnValue (low-severity), ECRecoverMalformedInput (medium-severity), SkipEmptyStringLiteral (low-severity) Solidity compiler bugs.

Contract Source Code Verified
Contract Name: C20
Compiler Version: v0.4.11+commit.68ef5810
Optimization Enabled: No
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts
pragma solidity 0.4.11;

contract SafeMath {

  function safeMul(uint a, uint b) internal returns (uint) {
    uint c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }
  function safeSub(uint a, uint b) internal returns (uint) {
    assert(b <= a);
    return a - b;
  }
  function safeAdd(uint a, uint b) internal returns (uint) {
    uint c = a + b;
    assert(c>=a && c>=b);
    return c;
  }

  // mitigate short address attack
  // thanks to https://github.com/numerai/contract/blob/c182465f82e50ced8dacb3977ec374a892f5fa8c/contracts/Safe.sol#L30-L34.
  // TODO: doublecheck implication of >= compared to ==
  modifier onlyPayloadSize(uint numWords) {
     assert(msg.data.length >= numWords * 32 + 4);
     _;
  }

}


contract Token { // ERC20 standard

    function balanceOf(address _owner) constant returns (uint256 balance);
    function transfer(address _to, uint256 _value) returns (bool success);
    function transferFrom(address _from, address _to, uint256 _value) returns (bool success);
    function approve(address _spender, uint256 _value) returns (bool success);
    function allowance(address _owner, address _spender) constant returns (uint256 remaining);
    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);

}


contract StandardToken is Token, SafeMath {

    uint256 public totalSupply;

    // TODO: update tests to expect throw
    function transfer(address _to, uint256 _value) onlyPayloadSize(2) returns (bool success) {
        require(_to != address(0));
        require(balances[msg.sender] >= _value && _value > 0);
        balances[msg.sender] = safeSub(balances[msg.sender], _value);
        balances[_to] = safeAdd(balances[_to], _value);
        Transfer(msg.sender, _to, _value);

        return true;
    }

    // TODO: update tests to expect throw
    function transferFrom(address _from, address _to, uint256 _value) onlyPayloadSize(3) returns (bool success) {
        require(_to != address(0));
        require(balances[_from] >= _value && allowed[_from][msg.sender] >= _value && _value > 0);
        balances[_from] = safeSub(balances[_from], _value);
        balances[_to] = safeAdd(balances[_to], _value);
        allowed[_from][msg.sender] = safeSub(allowed[_from][msg.sender], _value);
        Transfer(_from, _to, _value);

        return true;
    }

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

    // To change the approve amount you first have to reduce the addresses'
    //  allowance to zero by calling 'approve(_spender, 0)' if it is not
    //  already 0 to mitigate the race condition described here:
    //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
    function approve(address _spender, uint256 _value) onlyPayloadSize(2) returns (bool success) {
        require((_value == 0) || (allowed[msg.sender][_spender] == 0));
        allowed[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);

        return true;
    }

    function changeApproval(address _spender, uint256 _oldValue, uint256 _newValue) onlyPayloadSize(3) returns (bool success) {
        require(allowed[msg.sender][_spender] == _oldValue);
        allowed[msg.sender][_spender] = _newValue;
        Approval(msg.sender, _spender, _newValue);

        return true;
    }

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

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

}


contract C20 is StandardToken {

    // FIELDS

    string public name = "Crypto20";
    string public symbol = "C20";
    uint256 public decimals = 18;
    string public version = "9.0";

    uint256 public tokenCap = 86206896 * 10**18;

    // crowdsale parameters
    uint256 public fundingStartBlock;
    uint256 public fundingEndBlock;

    // vesting fields
    address public vestingContract;
    bool private vestingSet = false;

    // root control
    address public fundWallet;
    // control of liquidity and limited control of updatePrice
    address public controlWallet;
    // time to wait between controlWallet price updates
    uint256 public waitTime = 5 hours;

    // fundWallet controlled state variables
    // halted: halt buying due to emergency, tradeable: signal that assets have been acquired
    bool public halted = false;
    bool public tradeable = false;

    // -- totalSupply defined in StandardToken
    // -- mapping to token balances done in StandardToken

    uint256 public previousUpdateTime = 0;
    Price public currentPrice;
    uint256 public minAmount = 0.04 ether;

    // map participant address to a withdrawal request
    mapping (address => Withdrawal) public withdrawals;
    // maps previousUpdateTime to the next price
    mapping (uint256 => Price) public prices;
    // maps addresses
    mapping (address => bool) public whitelist;

    // TYPES

    struct Price { // tokensPerEth
        uint256 numerator;
        uint256 denominator;
    }

    struct Withdrawal {
        uint256 tokens;
        uint256 time; // time for each withdrawal is set to the previousUpdateTime
    }

    // EVENTS

    event Buy(address indexed participant, address indexed beneficiary, uint256 ethValue, uint256 amountTokens);
    event AllocatePresale(address indexed participant, uint256 amountTokens);
    event Whitelist(address indexed participant);
    event PriceUpdate(uint256 numerator, uint256 denominator);
    event AddLiquidity(uint256 ethAmount);
    event RemoveLiquidity(uint256 ethAmount);
    event WithdrawRequest(address indexed participant, uint256 amountTokens);
    event Withdraw(address indexed participant, uint256 amountTokens, uint256 etherAmount);

    // MODIFIERS

    modifier isTradeable { // exempt vestingContract and fundWallet to allow dev allocations
        require(tradeable || msg.sender == fundWallet || msg.sender == vestingContract);
        _;
    }

    modifier onlyWhitelist {
        require(whitelist[msg.sender]);
        _;
    }

    modifier onlyFundWallet {
        require(msg.sender == fundWallet);
        _;
    }

    modifier onlyManagingWallets {
        require(msg.sender == controlWallet || msg.sender == fundWallet);
        _;
    }

    modifier only_if_controlWallet {
        if (msg.sender == controlWallet) _;
    }
    modifier require_waited {
        require(safeSub(now, waitTime) >= previousUpdateTime);
        _;
    }
    modifier only_if_increase (uint256 newNumerator) {
        if (newNumerator > currentPrice.numerator) _;
    }

    // CONSTRUCTOR

    function C20(address controlWalletInput, uint256 priceNumeratorInput, uint256 startBlockInput, uint256 endBlockInput) {
        require(controlWalletInput != address(0));
        require(priceNumeratorInput > 0);
        require(endBlockInput > startBlockInput);
        fundWallet = msg.sender;
        controlWallet = controlWalletInput;
        whitelist[fundWallet] = true;
        whitelist[controlWallet] = true;
        currentPrice = Price(priceNumeratorInput, 1000); // 1 token = 1 usd at ICO start
        fundingStartBlock = startBlockInput;
        fundingEndBlock = endBlockInput;
        previousUpdateTime = now;
    }

    // METHODS

    function setVestingContract(address vestingContractInput) external onlyFundWallet {
        require(vestingContractInput != address(0));
        vestingContract = vestingContractInput;
        whitelist[vestingContract] = true;
        vestingSet = true;
    }

    // allows controlWallet to update the price within a time contstraint, allows fundWallet complete control
    function updatePrice(uint256 newNumerator) external onlyManagingWallets {
        require(newNumerator > 0);
        require_limited_change(newNumerator);
        // either controlWallet command is compliant or transaction came from fundWallet
        currentPrice.numerator = newNumerator;
        // maps time to new Price (if not during ICO)
        prices[previousUpdateTime] = currentPrice;
        previousUpdateTime = now;
        PriceUpdate(newNumerator, currentPrice.denominator);
    }

    function require_limited_change (uint256 newNumerator)
        private
        only_if_controlWallet
        require_waited
        only_if_increase(newNumerator)
    {
        uint256 percentage_diff = 0;
        percentage_diff = safeMul(newNumerator, 100) / currentPrice.numerator;
        percentage_diff = safeSub(percentage_diff, 100);
        // controlWallet can only increase price by max 20% and only every waitTime
        require(percentage_diff <= 20);
    }

    function updatePriceDenominator(uint256 newDenominator) external onlyFundWallet {
        require(block.number > fundingEndBlock);
        require(newDenominator > 0);
        currentPrice.denominator = newDenominator;
        // maps time to new Price
        prices[previousUpdateTime] = currentPrice;
        previousUpdateTime = now;
        PriceUpdate(currentPrice.numerator, newDenominator);
    }

    function allocateTokens(address participant, uint256 amountTokens) private {
        require(vestingSet);
        // 13% of total allocated for PR, Marketing, Team, Advisors
        uint256 developmentAllocation = safeMul(amountTokens, 14942528735632185) / 100000000000000000;
        // check that token cap is not exceeded
        uint256 newTokens = safeAdd(amountTokens, developmentAllocation);
        require(safeAdd(totalSupply, newTokens) <= tokenCap);
        // increase token supply, assign tokens to participant
        totalSupply = safeAdd(totalSupply, newTokens);
        balances[participant] = safeAdd(balances[participant], amountTokens);
        balances[vestingContract] = safeAdd(balances[vestingContract], developmentAllocation);
    }

    function allocatePresaleTokens(address participant, uint amountTokens) external onlyFundWallet {
        require(block.number < fundingEndBlock);
        require(participant != address(0));
        whitelist[participant] = true; // automatically whitelist accepted presale
        allocateTokens(participant, amountTokens);
        Whitelist(participant);
        AllocatePresale(participant, amountTokens);
    }

    function verifyParticipant(address participant) external onlyManagingWallets {
        whitelist[participant] = true;
        Whitelist(participant);
    }

    function buy() external payable {
        buyTo(msg.sender);
    }

    function buyTo(address participant) public payable onlyWhitelist {
        require(!halted);
        require(participant != address(0));
        require(msg.value >= minAmount);
        require(block.number >= fundingStartBlock && block.number < fundingEndBlock);
        uint256 icoDenominator = icoDenominatorPrice();
        uint256 tokensToBuy = safeMul(msg.value, currentPrice.numerator) / icoDenominator;
        allocateTokens(participant, tokensToBuy);
        // send ether to fundWallet
        fundWallet.transfer(msg.value);
        Buy(msg.sender, participant, msg.value, tokensToBuy);
    }

    // time based on blocknumbers, assuming a blocktime of 30s
    function icoDenominatorPrice() public constant returns (uint256) {
        uint256 icoDuration = safeSub(block.number, fundingStartBlock);
        uint256 denominator;
        if (icoDuration < 2880) { // #blocks = 24*60*60/30 = 2880
            return currentPrice.denominator;
        } else if (icoDuration < 80640 ) { // #blocks = 4*7*24*60*60/30 = 80640
            denominator = safeMul(currentPrice.denominator, 105) / 100;
            return denominator;
        } else {
            denominator = safeMul(currentPrice.denominator, 110) / 100;
            return denominator;
        }
    }

    function requestWithdrawal(uint256 amountTokensToWithdraw) external isTradeable onlyWhitelist {
        require(block.number > fundingEndBlock);
        require(amountTokensToWithdraw > 0);
        address participant = msg.sender;
        require(balanceOf(participant) >= amountTokensToWithdraw);
        require(withdrawals[participant].tokens == 0); // participant cannot have outstanding withdrawals
        balances[participant] = safeSub(balances[participant], amountTokensToWithdraw);
        withdrawals[participant] = Withdrawal({tokens: amountTokensToWithdraw, time: previousUpdateTime});
        WithdrawRequest(participant, amountTokensToWithdraw);
    }

    function withdraw() external {
        address participant = msg.sender;
        uint256 tokens = withdrawals[participant].tokens;
        require(tokens > 0); // participant must have requested a withdrawal
        uint256 requestTime = withdrawals[participant].time;
        // obtain the next price that was set after the request
        Price price = prices[requestTime];
        require(price.numerator > 0); // price must have been set
        uint256 withdrawValue = safeMul(tokens, price.denominator) / price.numerator;
        // if contract ethbal > then send + transfer tokens to fundWallet, otherwise give tokens back
        withdrawals[participant].tokens = 0;
        if (this.balance >= withdrawValue)
            enact_withdrawal_greater_equal(participant, withdrawValue, tokens);
        else
            enact_withdrawal_less(participant, withdrawValue, tokens);
    }

    function enact_withdrawal_greater_equal(address participant, uint256 withdrawValue, uint256 tokens)
        private
    {
        assert(this.balance >= withdrawValue);
        balances[fundWallet] = safeAdd(balances[fundWallet], tokens);
        participant.transfer(withdrawValue);
        Withdraw(participant, tokens, withdrawValue);
    }
    function enact_withdrawal_less(address participant, uint256 withdrawValue, uint256 tokens)
        private
    {
        assert(this.balance < withdrawValue);
        balances[participant] = safeAdd(balances[participant], tokens);
        Withdraw(participant, tokens, 0); // indicate a failed withdrawal
    }


    function checkWithdrawValue(uint256 amountTokensToWithdraw) constant returns (uint256 etherValue) {
        require(amountTokensToWithdraw > 0);
        require(balanceOf(msg.sender) >= amountTokensToWithdraw);
        uint256 withdrawValue = safeMul(amountTokensToWithdraw, currentPrice.denominator) / currentPrice.numerator;
        require(this.balance >= withdrawValue);
        return withdrawValue;
    }

    // allow fundWallet or controlWallet to add ether to contract
    function addLiquidity() external onlyManagingWallets payable {
        require(msg.value > 0);
        AddLiquidity(msg.value);
    }

    // allow fundWallet to remove ether from contract
    function removeLiquidity(uint256 amount) external onlyManagingWallets {
        require(amount <= this.balance);
        fundWallet.transfer(amount);
        RemoveLiquidity(amount);
    }

    function changeFundWallet(address newFundWallet) external onlyFundWallet {
        require(newFundWallet != address(0));
        fundWallet = newFundWallet;
    }

    function changeControlWallet(address newControlWallet) external onlyFundWallet {
        require(newControlWallet != address(0));
        controlWallet = newControlWallet;
    }

    function changeWaitTime(uint256 newWaitTime) external onlyFundWallet {
        waitTime = newWaitTime;
    }

    function updateFundingStartBlock(uint256 newFundingStartBlock) external onlyFundWallet {
        require(block.number < fundingStartBlock);
        require(block.number < newFundingStartBlock);
        fundingStartBlock = newFundingStartBlock;
    }

    function updateFundingEndBlock(uint256 newFundingEndBlock) external onlyFundWallet {
        require(block.number < fundingEndBlock);
        require(block.number < newFundingEndBlock);
        fundingEndBlock = newFundingEndBlock;
    }

    function halt() external onlyFundWallet {
        halted = true;
    }
    function unhalt() external onlyFundWallet {
        halted = false;
    }

    function enableTrading() external onlyFundWallet {
        require(block.number > fundingEndBlock);
        tradeable = true;
    }

    // fallback function
    function() payable {
        require(tx.origin == msg.sender);
        buyTo(msg.sender);
    }

    function claimTokens(address _token) external onlyFundWallet {
        require(_token != address(0));
        Token token = Token(_token);
        uint256 balance = token.balanceOf(this);
        token.transfer(fundWallet, balance);
     }

    // prevent transfers until trading allowed
    function transfer(address _to, uint256 _value) isTradeable returns (bool success) {
        return super.transfer(_to, _value);
    }
    function transferFrom(address _from, address _to, uint256 _value) isTradeable returns (bool success) {
        return super.transferFrom(_from, _to, _value);
    }

}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newWaitTime","type":"uint256"}],"name":"changeWaitTime","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newFundingStartBlock","type":"uint256"}],"name":"updateFundingStartBlock","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"previousUpdateTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newControlWallet","type":"address"}],"name":"changeControlWallet","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"vestingContract","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"halt","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"participant","type":"address"}],"name":"verifyParticipant","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"fundWallet","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newFundWallet","type":"address"}],"name":"changeFundWallet","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"vestingContractInput","type":"address"}],"name":"setVestingContract","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"withdrawals","outputs":[{"name":"tokens","type":"uint256"},{"name":"time","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"controlWallet","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"enableTrading","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newNumerator","type":"uint256"}],"name":"updatePrice","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"amountTokensToWithdraw","type":"uint256"}],"name":"checkWithdrawValue","outputs":[{"name":"etherValue","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"participant","type":"address"},{"name":"amountTokens","type":"uint256"}],"name":"allocatePresaleTokens","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"fundingEndBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_oldValue","type":"uint256"},{"name":"_newValue","type":"uint256"}],"name":"changeApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"minAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"removeLiquidity","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"currentPrice","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"amountTokensToWithdraw","type":"uint256"}],"name":"requestWithdrawal","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"buy","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"halted","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"prices","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"unhalt","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"waitTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"fundingStartBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newDenominator","type":"uint256"}],"name":"updatePriceDenominator","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"participant","type":"address"}],"name":"buyTo","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"tokenCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"claimTokens","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newFundingEndBlock","type":"uint256"}],"name":"updateFundingEndBlock","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"addLiquidity","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"tradeable","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"icoDenominatorPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[{"name":"controlWalletInput","type":"address"},{"name":"priceNumeratorInput","type":"uint256"},{"name":"startBlockInput","type":"uint256"},{"name":"endBlockInput","type":"uint256"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"ethValue","type":"uint256"},{"indexed":false,"name":"amountTokens","type":"uint256"}],"name":"Buy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"},{"indexed":false,"name":"amountTokens","type":"uint256"}],"name":"AllocatePresale","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"}],"name":"Whitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"numerator","type":"uint256"},{"indexed":false,"name":"denominator","type":"uint256"}],"name":"PriceUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"ethAmount","type":"uint256"}],"name":"AddLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"ethAmount","type":"uint256"}],"name":"RemoveLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"},{"indexed":false,"name":"amountTokens","type":"uint256"}],"name":"WithdrawRequest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"},{"indexed":false,"name":"amountTokens","type":"uint256"},{"indexed":false,"name":"etherAmount","type":"uint256"}],"name":"Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"}]

  Contract Creation Code Switch To Opcodes View
6060604052604060405190810160405280600881526020017f43727970746f32300000000000000000000000000000000000000000000000008152506003908051906020019062000052929190620003d4565b50604060405190810160405280600381526020017f433230000000000000000000000000000000000000000000000000000000000081525060049080519060200190620000a1929190620003d4565b506012600555604060405190810160405280600381526020017f392e30000000000000000000000000000000000000000000000000000000000081525060069080519060200190620000f5929190620003d4565b506a474f05324221d718c000006007556000600a60146101000a81548160ff021916908315150217905550614650600d556000600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506000600f55668e1bc9bf04000060125534156200017557fe5b60405160808062003e71833981016040528080519060200190919080519060200190919080519060200190919080519060200190919050505b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515620001ec5760006000fd5b600083111515620001fd5760006000fd5b81811115156200020d5760006000fd5b33600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160156000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160156000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506040604051908101604052808481526020016103e881525060106000820151816000015560208201518160010155905050816008819055508060098190555042600f819055505b5050505062000483565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200041757805160ff191683800117855562000448565b8280016001018555821562000448579182015b82811115620004475782518255916020019190600101906200042a565b5b5090506200045791906200045b565b5090565b6200048091905b808211156200047c57600081600090555060010162000462565b5090565b90565b6139de80620004936000396000f30060606040523615610244576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461029157806306fe22121461032a578063095ea7b31461034a57806318160ddd146103a157806323b872dd146103c7578063276605bc1461043d578063313ce5671461045d578063347820eb146104835780633ccfd60b146104a957806354fd4d50146104bb5780635a8cf571146105545780635e6f60451461058a5780635ed7ca5b146105dc578063643a7695146105ee578063664a1ad6146106245780636fb4adff1461067657806370a08231146106ac57806374991569146106f65780637a9262a21461072c578063823e569e1461077d5780638a8c523c146107cf5780638d6cc56d146107e15780638f11e5f9146108015780638fee76871461083557806391b43d13146108745780639281cd651461089a57806395d89b41146108fa5780639b19251a146109935780639b2cb5d8146109e15780639c8f9f2314610a075780639d1b464a14610a275780639ee679e814610a54578063a6f2ae3a14610a74578063a9059cbb14610a7e578063b9b8af0b14610ad5578063bc31c1c114610aff578063cb3e64fd14610b3a578063ccca123b14610b4c578063d648a64714610b72578063dbb2455414610b98578063dcf72c1014610bb8578063dd54291b14610be6578063dd62ed3e14610c0c578063df8de3e714610c75578063e28b0d9a14610cab578063e8078d9414610ccb578063f5ac9db614610cd5578063fa0d80fc14610cff575b61028f5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161415156102835760006000fd5b61028c33610d25565b5b565b005b341561029957fe5b6102a1610f13565b60405180806020018281038252838181518152602001915080519060200190808383600083146102f0575b8051825260208311156102f0576020820191506020810190506020830392506102cc565b505050905090810190601f16801561031c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561033257fe5b6103486004808035906020019091905050610fb1565b005b341561035257fe5b610387600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061101a565b604051808215151515815260200191505060405180910390f35b34156103a957fe5b6103b16111be565b6040518082815260200191505060405180910390f35b34156103cf57fe5b610423600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506111c4565b604051808215151515815260200191505060405180910390f35b341561044557fe5b61045b60048080359060200190919050506112a8565b005b341561046557fe5b61046d611331565b6040518082815260200191505060405180910390f35b341561048b57fe5b610493611337565b6040518082815260200191505060405180910390f35b34156104b157fe5b6104b961133d565b005b34156104c357fe5b6104cb6114b8565b604051808060200182810382528381815181526020019150805190602001908083836000831461051a575b80518252602083111561051a576020820191506020810190506020830392506104f6565b505050905090810190601f1680156105465780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561055c57fe5b610588600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611556565b005b341561059257fe5b61059a611636565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105e457fe5b6105ec61165c565b005b34156105f657fe5b610622600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506116d8565b005b341561062c57fe5b610634611830565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561067e57fe5b6106aa600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611856565b005b34156106b457fe5b6106e0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611936565b6040518082815260200191505060405180910390f35b34156106fe57fe5b61072a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611980565b005b341561073457fe5b610760600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611af5565b604051808381526020018281526020019250505060405180910390f35b341561078557fe5b61078d611b19565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156107d757fe5b6107df611b3f565b005b34156107e957fe5b6107ff6004808035906020019091905050611bcc565b005b341561080957fe5b61081f6004808035906020019091905050611d22565b6040518082815260200191505060405180910390f35b341561083d57fe5b610872600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611da0565b005b341561087c57fe5b610884611f47565b6040518082815260200191505060405180910390f35b34156108a257fe5b6108e0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091908035906020019091905050611f4d565b604051808215151515815260200191505060405180910390f35b341561090257fe5b61090a6120e6565b6040518080602001828103825283818151815260200191508051906020019080838360008314610959575b80518252602083111561095957602082019150602081019050602083039250610935565b505050905090810190601f1680156109855780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561099b57fe5b6109c7600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612184565b604051808215151515815260200191505060405180910390f35b34156109e957fe5b6109f16121a4565b6040518082815260200191505060405180910390f35b3415610a0f57fe5b610a2560048080359060200190919050506121aa565b005b3415610a2f57fe5b610a37612324565b604051808381526020018281526020019250505060405180910390f35b3415610a5c57fe5b610a726004808035906020019091905050612336565b005b610a7c61263a565b005b3415610a8657fe5b610abb600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612646565b604051808215151515815260200191505060405180910390f35b3415610add57fe5b610ae5612728565b604051808215151515815260200191505060405180910390f35b3415610b0757fe5b610b1d600480803590602001909190505061273b565b604051808381526020018281526020019250505060405180910390f35b3415610b4257fe5b610b4a61275f565b005b3415610b5457fe5b610b5c6127db565b6040518082815260200191505060405180910390f35b3415610b7a57fe5b610b826127e1565b6040518082815260200191505060405180910390f35b3415610ba057fe5b610bb660048080359060200190919050506127e7565b005b610be4600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d25565b005b3415610bee57fe5b610bf66128ed565b6040518082815260200191505060405180910390f35b3415610c1457fe5b610c5f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506128f3565b6040518082815260200191505060405180910390f35b3415610c7d57fe5b610ca9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061297b565b005b3415610cb357fe5b610cc96004808035906020019091905050612bc0565b005b610cd3612c49565b005b3415610cdd57fe5b610ce5612d49565b604051808215151515815260200191505060405180910390f35b3415610d0757fe5b610d0f612d5c565b6040518082815260200191505060405180910390f35b60006000601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610d825760006000fd5b600e60009054906101000a900460ff16151515610d9f5760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610ddc5760006000fd5b6012543410151515610dee5760006000fd5b6008544310158015610e01575060095443105b1515610e0d5760006000fd5b610e15612d5c565b915081610e2734601060000154612de5565b811515610e3057fe5b049050610e3d8382612e1a565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051809050600060405180830381858888f193505050501515610e9f57fe5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f89f5adc174562e07c9c9b1cae7109bbecb21cf9d1b2847e550042b8653c54a0e3484604051808381526020018281526020019250505060405180910390a35b5b505050565b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fa95780601f10610f7e57610100808354040283529160200191610fa9565b820191906000526020600020905b815481529060010190602001808311610f8c57829003601f168201915b505050505081565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561100e5760006000fd5b80600d819055505b5b50565b600060026004602082020160003690501015151561103457fe5b60008314806110bf57506000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15156110cb5760006000fd5b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a3600191505b5b5092915050565b60005481565b6000600e60019054906101000a900460ff168061122e5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806112865750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156112925760006000fd5b61129d848484612ffe565b90505b5b9392505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113055760006000fd5b600854431015156113165760006000fd5b80431015156113255760006000fd5b806008819055505b5b50565b60055481565b600f5481565b60006000600060006000339450601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154935060008411151561139f5760006000fd5b601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015492506014600084815260200190815260200160002091506000826000015411151561140d5760006000fd5b8160000154611420858460010154612de5565b81151561142957fe5b0490506000601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550803073ffffffffffffffffffffffffffffffffffffffff16311015156114a45761149f8582866133c9565b6114b0565b6114af858286613558565b5b5b5050505050565b60068054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561154e5780601f106115235761010080835404028352916020019161154e565b820191906000526020600020905b81548152906001019060200180831161153157829003601f168201915b505050505081565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115b35760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156115f05760006000fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b50565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116b95760006000fd5b6001600e60006101000a81548160ff0219169083151502179055505b5b565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806117815750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561178d5760006000fd5b6001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e60405180905060405180910390a25b5b50565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118b35760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156118f05760006000fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119dd5760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611a1a5760006000fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160156000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60146101000a81548160ff0219169083151502179055505b5b50565b60136020528060005260406000206000915090508060000154908060010154905082565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b9c5760006000fd5b60095443111515611bad5760006000fd5b6001600e60016101000a81548160ff0219169083151502179055505b5b565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611c755750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611c815760006000fd5b600081111515611c915760006000fd5b611c9a81613663565b80601060000181905550601060146000600f548152602001908152602001600020600082015481600001556001820154816001015590505042600f819055507f92664190cca12aca9cd5309d87194bdda75bb51362d71c06e1a6f75c7c76571181601060010154604051808381526020018281526020019250505060405180910390a15b5b50565b60006000600083111515611d365760006000fd5b82611d4033611936565b10151515611d4e5760006000fd5b601060000154611d6384601060010154612de5565b811515611d6c57fe5b049050803073ffffffffffffffffffffffffffffffffffffffff163110151515611d965760006000fd5b8091505b50919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611dfd5760006000fd5b60095443101515611e0e5760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611e4b5760006000fd5b6001601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611ead8282612e1a565b8173ffffffffffffffffffffffffffffffffffffffff167feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e60405180905060405180910390a28173ffffffffffffffffffffffffffffffffffffffff167f69488271d7ab6c5d1d852b2fedbeafcee0ad158162b8c58145130bacd56bff76826040518082815260200191505060405180910390a25b5b5050565b60095481565b6000600360046020820201600036905010151515611f6757fe5b83600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141515611ff25760006000fd5b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a3600191505b5b509392505050565b60048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561217c5780601f106121515761010080835404028352916020019161217c565b820191906000526020600020905b81548152906001019060200180831161215f57829003601f168201915b505050505081565b60156020528060005260406000206000915054906101000a900460ff1681565b60125481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806122535750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561225f5760006000fd5b3073ffffffffffffffffffffffffffffffffffffffff163181111515156122865760006000fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051809050600060405180830381858888f1935050505015156122e857fe5b7f9a5a8a32afd899e7f95003c6e21c9fab2d50e11992439d14472229180c60c7aa816040518082815260200191505060405180910390a15b5b50565b60108060000154908060010154905082565b6000600e60019054906101000a900460ff16806123a05750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806123f85750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156124045760006000fd5b601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561245d5760006000fd5b6009544311151561246e5760006000fd5b60008211151561247e5760006000fd5b3390508161248b82611936565b101515156124995760006000fd5b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415156124eb5760006000fd5b612534600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613730565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550604060405190810160405280838152602001600f54815250601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600101559050508073ffffffffffffffffffffffffffffffffffffffff167f17040713250ec5f668a1c39e7939900e78558350dbaff0ebef34268dfa8ea4ac836040518082815260200191505060405180910390a25b5b5b5050565b61264333610d25565b5b565b6000600e60019054906101000a900460ff16806126b05750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806127085750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156127145760006000fd5b61271e838361374a565b90505b5b92915050565b600e60009054906101000a900460ff1681565b60146020528060005260406000206000915090508060000154908060010154905082565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156127bc5760006000fd5b6000600e60006101000a81548160ff0219169083151502179055505b5b565b600d5481565b60085481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156128445760006000fd5b600954431115156128555760006000fd5b6000811115156128655760006000fd5b80601060010181905550601060146000600f548152602001908152602001600020600082015481600001556001820154816001015590505042600f819055507f92664190cca12aca9cd5309d87194bdda75bb51362d71c06e1a6f75c7c76571160106000015482604051808381526020018281526020019250505060405180910390a15b5b50565b60075481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b92915050565b60006000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156129dc5760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612a195760006000fd5b8291508173ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515612abc57fe5b6102c65a03f11515612aca57fe5b5050506040518051905090508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515612ba057fe5b6102c65a03f11515612bae57fe5b50505060405180519050505b5b505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c1d5760006000fd5b60095443101515612c2e5760006000fd5b8043101515612c3d5760006000fd5b806009819055505b5b50565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612cf25750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612cfe5760006000fd5b600034111515612d0e5760006000fd5b7ff53d9d58a7ff16a2e1360446f1c4b5e81a427d3efd25615be081f4003662400a346040518082815260200191505060405180910390a15b5b565b600e60019054906101000a900460ff1681565b600060006000612d6e43600854613730565b9150610b40821015612d87576010600101549250612de0565b62013b00821015612db8576064612da46010600101546069612de5565b811515612dad57fe5b049050809250612de0565b6064612dca601060010154606e612de5565b811515612dd357fe5b049050809250612de0565b5b5b505090565b6000600082840290506000841480612e075750828482811515612e0457fe5b04145b1515612e0f57fe5b8091505b5092915050565b60006000600a60149054906101000a900460ff161515612e3a5760006000fd5b67016345785d8a0000612e54846635162695555b39612de5565b811515612e5d57fe5b049150612e6a8383613986565b9050600754612e7b60005483613986565b11151515612e895760006000fd5b612e9560005482613986565b600081905550612ee4600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613986565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f9260016000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613986565b60016000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50505050565b600060036004602082020160003690501015151561301857fe5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156130555760006000fd5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015613120575082600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b801561312c5750600083115b15156131385760006000fd5b613181600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613730565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061320d600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613986565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132d6600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613730565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505b5b509392505050565b813073ffffffffffffffffffffffffffffffffffffffff1631101515156133ec57fe5b61345760016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613986565b60016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051809050600060405180830381858888f1935050505015156134fc57fe5b8273ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5688284604051808381526020018281526020019250505060405180910390a25b505050565b813073ffffffffffffffffffffffffffffffffffffffff163110151561357a57fe5b6135c3600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613986565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568826000604051808381526020018281526020019250505060405180910390a25b505050565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561372b57600f546136ca42600d54613730565b101515156136d85760006000fd5b8160106000015481111561372757600091506010600001546136fb846064612de5565b81151561370457fe5b049150613712826064613730565b9150601482111515156137255760006000fd5b5b5b5b505b5b5b5050565b600082821115151561373e57fe5b81830390505b92915050565b600060026004602082020160003690501015151561376457fe5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156137a15760006000fd5b82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156137f05750600083115b15156137fc5760006000fd5b613845600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613730565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138d1600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613986565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505b5b5092915050565b60006000828401905083811015801561399f5750828110155b15156139a757fe5b8091505b50929150505600a165627a7a72305820a1845868b1371865b636a79c2503060ea66461cd206d79eb74da145b034d97af002900000000000000000000000015756c7f329e3e00ab15d71f09655bd8df14b7fa0000000000000000000000000000000000000000000000000000000000053020000000000000000000000000000000000000000000000000000000000042af90000000000000000000000000000000000000000000000000000000000044ab60

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

-----Decoded View---------------
Found 4 constructor arguments :
Arg [0] : 00000000000000000000000015756c7f329e3e00ab15d71f09655bd8df14b7fa
Arg [1] : 0000000000000000000000000000000000000000000000000000000000053020
Arg [2] : 000000000000000000000000000000000000000000000000000000000042af90
Arg [3] : 000000000000000000000000000000000000000000000000000000000044ab60


   Swarm Source:
bzzr://a1845868b1371865b636a79c2503060ea66461cd206d79eb74da145b034d97af

 

View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.