Sponsored Link:  ConnectJob App, the Uber of Service, launches its awesome ICO.
Contract Overview | DecentBetToken_v1
ETH Balance: 0 Ether
ETH USD Value: $0
No Of Transactions: 21845 txns
Token Tracker 0x540449e4d172cd9491c76320440cd74933d5691a
  Latest 25 txns from a total Of 21845 transactions View All

TxHash Age From To Value [TxFee]
0xe4ca7079eba07ac8a6a19a7c3c18372fd2175a0c6c59136cf4ff2171f71c31221 hr 30 mins ago0x1b2030882ce2bb75ae8b63905d3dd5edc35a4dea  IN  DecentBetToken_v10 Ether0.000344164
0xa80e80009c4b0171d30bbe57d7a6931130131701cfd5a0d41ef38db964de15421 hr 32 mins ago0xf0924dc339b6e26492d6325e5b61cc2b9a84a0cb  IN  DecentBetToken_v10 Ether0.000530166
0xbe65bc096d70121942492c0e9e43ffaa40684f6a7e4600aa84fde3cae4d0cb301 hr 33 mins ago0xf0924dc339b6e26492d6325e5b61cc2b9a84a0cb  IN  DecentBetToken_v10 Ether0.000797685
0x63600132aa2bebcc8476f4e51ff41a486b522e82686040806d48f3ff7a1f535f4 hrs 30 mins ago0xcb22fa39c5c071f4b93980a61ac5936c8d026e8c  IN  DecentBetToken_v10 Ether0.003004715
0xb56ba43d229de7cda9e1375ce28529f5e5b838d731e11ee497d4011c65704d724 hrs 33 mins ago0x88ebed85e948d9cbaa522b3c5cf8a604fb43357b  IN  DecentBetToken_v10 Ether0.000793653
0x6d7d1986f376ea2c7102c3c908aeaeac0ee03f754ed1d8432f209dbd06bd05256 hrs ago0xee06fdc63d0e6838404f3d092f1eb58119d3e76f  IN  DecentBetToken_v10 Ether0.00105586
0x077f62b65d4b6bf3bc04767305775ac0388f0c08c6497f1f0f64792cb3f9e4e97 hrs 54 mins ago0x9da47cdc4a08c485ab19d107362b962d1407dd9d  IN  DecentBetToken_v10 Ether0.00343396
0xdfc44524ada8783035927ec538f3c90ad9aca25924d1c4d2be27ebbe3c90775310 hrs ago0xc7355a5876a4e8d7bfe1af6c1a405056dea7e1e8  IN  DecentBetToken_v10 Ether0.00075714
0xc26ac984aeda20f29ea8bb340a599227d90f18f0013289a448762b33117c792310 hrs 34 mins ago0x48ad8466d8eef96de60a95aae6d28c2a9cf20253  IN  DecentBetToken_v10 Ether0.00075586
0xe3ddd3d47b9e54ebc7b0790debf4846d5e80b8a819e2d402fa763a5cab0e4f1910 hrs 37 mins ago0x3fe2fe391297e18ec918fb056cb7df0dc30f5857  IN  DecentBetToken_v10 Ether0.001802829
0x1a67a2d3ba082aab3a4e09525b550a758cfec9f4f9a164ca0220adfab14f5ee511 hrs 8 mins ago0x8e341ecaea4a78423a17e37a2d67b1f3d5dc8f0e  IN  DecentBetToken_v10 Ether0.000793653
0xfc1cce18efc2382c247baf5a4f82c5b37cee2d37e47c27c30b7efbf2e838a14a11 hrs 30 mins ago0xaf7daed9f598326f695b62cb198bc0b735f4f0c0  IN  DecentBetToken_v10 Ether0.003519809
0xf2932f72f346fda715f2862986ba811267da144d7cadfa620e471b491da82dac11 hrs 33 mins ago0x5814a643a8e91e59a5295f223f76e4c1837b2622  IN  DecentBetToken_v10 Ether0.000793653
0x82c3db2a3a5ea80bd30e082708d94b05392466a56798d929fcf78d3581833dec16 hrs 40 mins ago0xa4bc4fec512ce9388ef94081e0abcd39c74dbfbb  IN  DecentBetToken_v10 Ether0.00429565
0xb198f46b2c9fa610c95ee174435c5df05c3ddb2e20bb39417a83bfaa0e809dd616 hrs 43 mins ago0x288842d25cec8895584554c2ba831bdb02647765  IN  DecentBetToken_v10 Ether0.000794997
0x49c71f5168aed57741978771600468382648251d9cfeef1b879348360a4da4fa23 hrs 3 mins ago0xe6951d272792f41131b66cb4c1fceb3f27dd53c0  IN  DecentBetToken_v10 Ether0.001552137
0xc48b594c2b565b80243e70b9556ef5b4f9da449d1f59e7a5bda6acf9c3796bf923 hrs 15 mins ago0x946ce804cc6fcfdb347ad0268ca05bc52794a186  IN  DecentBetToken_v10 Ether0.003004715
0x9ca24ac746eda516390162015a520d777368b15265ee156ee56b0073d7c91abb23 hrs 25 mins ago0x537f647b41cd12e2a16375798d0ea8c98e0eaaed  IN  DecentBetToken_v10 Ether0.003006955
0x218fc5dd596a1213eac1c28eec3be148e04e6399834631da58bb623ca0bd625923 hrs 26 mins ago0x2a166edc25e6e65e0fdf93208a76b48c6ff7c9df  IN  DecentBetToken_v10 Ether0.001552137
0xa3a4e28a6318ffaeb01d15ccd093cd42f6a7be8371a0ce0fbbdd2150a648a52a23 hrs 37 mins ago0xd768044db5b40998a59bfbf163135334a92120d2  IN  DecentBetToken_v10 Ether0.002164513
0x365022f3714fa997e28e8a925c6dfd20023b0db0f859e0807e09773621c60cf823 hrs 40 mins ago0xb2f340f8f79321174453f537555927c4565bd662  IN  DecentBetToken_v10 Ether0.003004715
0x222aeb9a0648fbd4e0cb0f82a9a0c01624461beea39bdc00d1bf658bf62d2b2323 hrs 43 mins ago0x7dc4fd1a1a75213afa8cfff0efd0bcc32dde7ff2  IN  DecentBetToken_v10 Ether0.000793653
0x05ac819ebdae5c541e20d65cd662a610e90ab2541b320a86b5912d8a5bdd43ff23 hrs 45 mins ago0x7dc4fd1a1a75213afa8cfff0efd0bcc32dde7ff2  IN  DecentBetToken_v10 Ether0.000792309
0x6d698c72be300f21602f8caff7e953e92aa1fcded5aafe6c8672d68af38f230c1 day 25 mins ago0x55ab032cafda7fb30021a113bfe9530aff04c665  IN  DecentBetToken_v10 Ether0.002481955
0xf0d43551d276b3380d4180203d9c54af4cc5f2e2a3d3c10486db8923e64542041 day 26 mins ago0x89dd10b6b0fe4206eb104ace8cf71ca383341961  IN  DecentBetToken_v10 Ether0.003004715
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
  Latest 3 Internal Transactions

ParentTxHash Block Age From To Value
0x2bf3494e84e18f7223c681de2eefca507aaf211bacc077327595541b909dea41440074194 days 23 hrs ago0x540449e4d172cd9491c76320440cd74933d5691a0xc87b1bf162c1719e3ffdf34995d1853192d6633b37,477.195050645441247452 Ether
0x27a33650cb2d1b5a63361867c42240a3b1329437177d9875cde6c08a3f1598264304044122 days 23 hrs ago0xcc5465f67e9c28a4f3cf3791e75c1934cd28cedc0x540449e4d172cd9491c76320440cd74933d5691a35.53 Ether
0xa5bc850559ba2641009807ebccce3650a0c783b09f88cfd5f208d0ac243cf1794302822123 days 9 hrs ago0x540449e4d172cd9491c76320440cd74933d5691a  Contract Creation0 Ether
[ Download CSV Export  ] 
Warning: The compiled contract might be susceptible to ZeroFunctionSelector (very low-severity) Solidity compiler bugs.

Contract Source Code Verified
Contract Name: DecentBetToken
Compiler Version: v0.4.16+commit.d7661dd9
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts
pragma solidity ^0.4.8;

// accepted from zeppelin-solidity https://github.com/OpenZeppelin/zeppelin-solidity
/*
 * ERC20 interface
 * see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 {
    uint public totalSupply;
    function balanceOf(address who) constant returns (uint);
    function allowance(address owner, address spender) constant returns (uint);

    function transfer(address to, uint value) returns (bool ok);
    function transferFrom(address from, address to, uint value) returns (bool ok);
    function approve(address spender, uint value) returns (bool ok);
    event Transfer(address indexed from, address indexed to, uint value);
    event Approval(address indexed owner, address indexed spender, uint value);
}

// accepted from zeppelin-solidity https://github.com/OpenZeppelin/zeppelin-solidity

/**
 * Math operations with safety checks
 */
contract SafeMath {
    function safeMul(uint a, uint b) internal returns (uint) {
        uint c = a * b;
        assert(a == 0 || c / a == b);
        return c;
    }

    function safeDiv(uint a, uint b) internal returns (uint) {
        assert(b > 0);
        uint c = a / b;
        assert(a == b * 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;
    }

    function max64(uint64 a, uint64 b) internal constant returns (uint64) {
        return a >= b ? a : b;
    }

    function min64(uint64 a, uint64 b) internal constant returns (uint64) {
        return a < b ? a : b;
    }

    function max256(uint256 a, uint256 b) internal constant returns (uint256) {
        return a >= b ? a : b;
    }

    function min256(uint256 a, uint256 b) internal constant returns (uint256) {
        return a < b ? a : b;
    }

    function assert(bool assertion) internal {
        if (!assertion) {
            throw;
        }
    }

}

/// @title Multisignature wallet - Allows multiple parties to agree on transactions before execution.
/// @author Stefan George - <[email protected]>
contract MultiSigWallet {

    // flag to determine if address is for a real contract or not
    bool public isMultiSigWallet = false;

    uint constant public MAX_OWNER_COUNT = 50;

    event Confirmation(address indexed sender, uint indexed transactionId);
    event Revocation(address indexed sender, uint indexed transactionId);
    event Submission(uint indexed transactionId);
    event Execution(uint indexed transactionId);
    event ExecutionFailure(uint indexed transactionId);
    event Deposit(address indexed sender, uint value);
    event OwnerAddition(address indexed owner);
    event OwnerRemoval(address indexed owner);
    event RequirementChange(uint required);

    mapping (uint => Transaction) public transactions;
    mapping (uint => mapping (address => bool)) public confirmations;
    mapping (address => bool) public isOwner;
    address[] public owners;
    uint public required;
    uint public transactionCount;

    struct Transaction {
    address destination;
    uint value;
    bytes data;
    bool executed;
    }

    modifier onlyWallet() {
        if (msg.sender != address(this)) throw;
        _;
    }

    modifier ownerDoesNotExist(address owner) {
        if (isOwner[owner]) throw;
        _;
    }

    modifier ownerExists(address owner) {
        if (!isOwner[owner]) throw;
        _;
    }

    modifier transactionExists(uint transactionId) {
        if (transactions[transactionId].destination == 0) throw;
        _;
    }

    modifier confirmed(uint transactionId, address owner) {
        if (!confirmations[transactionId][owner]) throw;
        _;
    }

    modifier notConfirmed(uint transactionId, address owner) {
        if (confirmations[transactionId][owner]) throw;
        _;
    }

    modifier notExecuted(uint transactionId) {
        if (transactions[transactionId].executed) throw;
        _;
    }

    modifier notNull(address _address) {
        if (_address == 0) throw;
        _;
    }

    modifier validRequirement(uint ownerCount, uint _required) {
        if (ownerCount > MAX_OWNER_COUNT) throw;
        if (_required > ownerCount) throw;
        if (_required == 0) throw;
        if (ownerCount == 0) throw;
        _;
    }

    /// @dev Fallback function allows to deposit ether.
    function()
    payable
    {
        if (msg.value > 0)
        Deposit(msg.sender, msg.value);
    }

    /*
     * Public functions
     */
    /// @dev Contract constructor sets initial owners and required number of confirmations.
    /// @param _owners List of initial owners.
    /// @param _required Number of required confirmations.
    function MultiSigWallet(address[] _owners, uint _required)
    public
    validRequirement(_owners.length, _required)
    {
        for (uint i=0; i<_owners.length; i++) {
            if (isOwner[_owners[i]] || _owners[i] == 0) throw;
            isOwner[_owners[i]] = true;
        }
        isMultiSigWallet = true;
        owners = _owners;
        required = _required;
    }

    /// @dev Allows to add a new owner. Transaction has to be sent by wallet.
    /// @param owner Address of new owner.
    function addOwner(address owner)
    public
    onlyWallet
    ownerDoesNotExist(owner)
    notNull(owner)
    validRequirement(owners.length + 1, required)
    {
        isOwner[owner] = true;
        owners.push(owner);
        OwnerAddition(owner);
    }

    /// @dev Allows to remove an owner. Transaction has to be sent by wallet.
    /// @param owner Address of owner.
    function removeOwner(address owner)
    public
    onlyWallet
    ownerExists(owner)
    {
        isOwner[owner] = false;
        for (uint i=0; i<owners.length - 1; i++)
        if (owners[i] == owner) {
            owners[i] = owners[owners.length - 1];
            break;
        }
        owners.length -= 1;
        if (required > owners.length)
        changeRequirement(owners.length);
        OwnerRemoval(owner);
    }

    /// @dev Allows to replace an owner with a new owner. Transaction has to be sent by wallet.
    /// @param owner Address of owner to be replaced.
    /// @param newOwner Address of new owner.
    /// @param index the indx of the owner to be replaced
    function replaceOwnerIndexed(address owner, address newOwner, uint index)
    public
    onlyWallet
    ownerExists(owner)
    ownerDoesNotExist(newOwner)
    {
        if (owners[index] != owner) throw;
        owners[index] = newOwner;
        isOwner[owner] = false;
        isOwner[newOwner] = true;
        OwnerRemoval(owner);
        OwnerAddition(newOwner);
    }


    /// @dev Allows to change the number of required confirmations. Transaction has to be sent by wallet.
    /// @param _required Number of required confirmations.
    function changeRequirement(uint _required)
    public
    onlyWallet
    validRequirement(owners.length, _required)
    {
        required = _required;
        RequirementChange(_required);
    }

    /// @dev Allows an owner to submit and confirm a transaction.
    /// @param destination Transaction target address.
    /// @param value Transaction ether value.
    /// @param data Transaction data payload.
    /// @return Returns transaction ID.
    function submitTransaction(address destination, uint value, bytes data)
    public
    returns (uint transactionId)
    {
        transactionId = addTransaction(destination, value, data);
        confirmTransaction(transactionId);
    }

    /// @dev Allows an owner to confirm a transaction.
    /// @param transactionId Transaction ID.
    function confirmTransaction(uint transactionId)
    public
    ownerExists(msg.sender)
    transactionExists(transactionId)
    notConfirmed(transactionId, msg.sender)
    {
        confirmations[transactionId][msg.sender] = true;
        Confirmation(msg.sender, transactionId);
        executeTransaction(transactionId);
    }

    /// @dev Allows an owner to revoke a confirmation for a transaction.
    /// @param transactionId Transaction ID.
    function revokeConfirmation(uint transactionId)
    public
    ownerExists(msg.sender)
    confirmed(transactionId, msg.sender)
    notExecuted(transactionId)
    {
        confirmations[transactionId][msg.sender] = false;
        Revocation(msg.sender, transactionId);
    }

    /// @dev Returns the confirmation status of a transaction.
    /// @param transactionId Transaction ID.
    /// @return Confirmation status.
    function isConfirmed(uint transactionId)
    public
    constant
    returns (bool)
    {
        uint count = 0;
        for (uint i=0; i<owners.length; i++) {
            if (confirmations[transactionId][owners[i]])
            count += 1;
            if (count == required)
            return true;
        }
    }

    /*
     * Internal functions
     */

    /// @dev Allows anyone to execute a confirmed transaction.
    /// @param transactionId Transaction ID.
    function executeTransaction(uint transactionId)
    internal
    notExecuted(transactionId)
    {
        if (isConfirmed(transactionId)) {
            Transaction tx = transactions[transactionId];
            tx.executed = true;
            if (tx.destination.call.value(tx.value)(tx.data))
            Execution(transactionId);
            else {
                ExecutionFailure(transactionId);
                tx.executed = false;
            }
        }
    }

    /// @dev Adds a new transaction to the transaction mapping, if transaction does not exist yet.
    /// @param destination Transaction target address.
    /// @param value Transaction ether value.
    /// @param data Transaction data payload.
    /// @return Returns transaction ID.
    function addTransaction(address destination, uint value, bytes data)
    internal
    notNull(destination)
    returns (uint transactionId)
    {
        transactionId = transactionCount;
        transactions[transactionId] = Transaction({
        destination: destination,
        value: value,
        data: data,
        executed: false
        });
        transactionCount += 1;
        Submission(transactionId);
    }

    /*
     * Web3 call functions
     */
    /// @dev Returns number of confirmations of a transaction.
    /// @param transactionId Transaction ID.
    /// @return Number of confirmations.
    function getConfirmationCount(uint transactionId)
    public
    constant
    returns (uint count)
    {
        for (uint i=0; i<owners.length; i++)
        if (confirmations[transactionId][owners[i]])
        count += 1;
    }

    /// @dev Returns total number of transactions after filers are applied.
    /// @param pending Include pending transactions.
    /// @param executed Include executed transactions.
    /// @return Total number of transactions after filters are applied.
    function getTransactionCount(bool pending, bool executed)
    public
    constant
    returns (uint count)
    {
        for (uint i=0; i<transactionCount; i++)
        if ((pending && !transactions[i].executed) ||
        (executed && transactions[i].executed))
        count += 1;
    }

    /// @dev Returns list of owners.
    /// @return List of owner addresses.
    function getOwners()
    public
    constant
    returns (address[])
    {
        return owners;
    }

    /// @dev Returns array with owner addresses, which confirmed transaction.
    /// @param transactionId Transaction ID.
    /// @return Returns array of owner addresses.
    function getConfirmations(uint transactionId)
    public
    constant
    returns (address[] _confirmations)
    {
        address[] memory confirmationsTemp = new address[](owners.length);
        uint count = 0;
        uint i;
        for (i=0; i<owners.length; i++)
        if (confirmations[transactionId][owners[i]]) {
            confirmationsTemp[count] = owners[i];
            count += 1;
        }
        _confirmations = new address[](count);
        for (i=0; i<count; i++)
        _confirmations[i] = confirmationsTemp[i];
    }

    /// @dev Returns list of transaction IDs in defined range.
    /// @param from Index start position of transaction array.
    /// @param to Index end position of transaction array.
    /// @param pending Include pending transactions.
    /// @param executed Include executed transactions.
    /// @return Returns array of transaction IDs.
    function getTransactionIds(uint from, uint to, bool pending, bool executed)
    public
    constant
    returns (uint[] _transactionIds)
    {
        uint[] memory transactionIdsTemp = new uint[](transactionCount);
        uint count = 0;
        uint i;
        for (i=0; i<transactionCount; i++)
        if ((pending && !transactions[i].executed) ||
        (executed && transactions[i].executed))
        {
            transactionIdsTemp[count] = i;
            count += 1;
        }
        _transactionIds = new uint[](to - from);
        for (i=from; i<to; i++)
        _transactionIds[i - from] = transactionIdsTemp[i];
    }

}

contract UpgradeAgent is SafeMath {
    address public owner;

    bool public isUpgradeAgent;

    function upgradeFrom(address _from, uint256 _value) public;

    function finalizeUpgrade() public;

    function setOriginalSupply() public;
}

/// @title Time-locked vault of tokens allocated to DecentBet after 365 days
contract DecentBetVault is SafeMath {

    // flag to determine if address is for a real contract or not
    bool public isDecentBetVault = false;

    DecentBetToken decentBetToken;

    address decentBetMultisig;

    uint256 unlockedAtTime;

    // smaller lock for testing
    uint256 public constant timeOffset = 1 years;

    /// @notice Constructor function sets the DecentBet Multisig address and
    /// total number of locked tokens to transfer
    function DecentBetVault(address _decentBetMultisig) /** internal */ {
        if (_decentBetMultisig == 0x0) throw;
        decentBetToken = DecentBetToken(msg.sender);
        decentBetMultisig = _decentBetMultisig;
        isDecentBetVault = true;

        // 1 year later
        unlockedAtTime = safeAdd(getTime(), timeOffset);
    }

    /// @notice Transfer locked tokens to Decent.bet's multisig wallet
    function unlock() external {
        // Wait your turn!
        if (getTime() < unlockedAtTime) throw;
        // Will fail if allocation (and therefore toTransfer) is 0.
        if (!decentBetToken.transfer(decentBetMultisig, decentBetToken.balanceOf(this))) throw;
    }

    function getTime() internal returns (uint256) {
        return now;
    }

    // disallow ETH payments to TimeVault
    function() payable {
        throw;
    }

}


/// @title DecentBet crowdsale contract
contract DecentBetToken is SafeMath, ERC20 {

    // flag to determine if address is for a real contract or not
    bool public isDecentBetToken = false;

    // State machine
    enum State{Waiting, PreSale, CommunitySale, PublicSale, Success}

    // Token information
    string public constant name = "Decent.Bet Token";

    string public constant symbol = "DBET";

    uint256 public constant decimals = 18;  // decimal places

    uint256 public constant housePercentOfTotal = 10;

    uint256 public constant vaultPercentOfTotal = 18;

    uint256 public constant bountyPercentOfTotal = 2;

    uint256 public constant crowdfundPercentOfTotal = 70;

    uint256 public constant hundredPercent = 100;

    mapping (address => uint256) balances;

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

    // Authorized addresses
    address public team;

    // Upgrade information
    bool public finalizedUpgrade = false;

    address public upgradeMaster;

    UpgradeAgent public upgradeAgent;

    uint256 public totalUpgraded;

    // Crowdsale information
    bool public finalizedCrowdfunding = false;

    // Whitelisted addresses for pre-sale
    address[] public preSaleWhitelist;
    mapping (address => bool) public preSaleAllowed;

    // Whitelisted addresses from community
    address[] public communitySaleWhitelist;
    mapping (address => bool) public communitySaleAllowed;
    uint[2] public communitySaleCap = [100000 ether, 200000 ether];
    mapping (address => uint[2]) communitySalePurchases;

    uint256 public preSaleStartTime; // Pre-sale start block timestamp
    uint256 public fundingStartTime; // crowdsale start block timestamp
    uint256 public fundingEndTime; // crowdsale end block timestamp
    // DBET:ETH exchange rate - Needs to be updated at time of ICO.
    // Price of ETH/0.125. For example: If ETH/USD = 300, it would be 2400 DBETs per ETH.
    uint256 public baseTokensPerEther;
    uint256 public tokenCreationMax = safeMul(250000 ether, 1000); // A maximum of 250M DBETs can be minted during ICO.

    // Amount of tokens alloted to pre-sale investors.
    uint256 public preSaleAllotment;
    // Address of pre-sale investors.
    address public preSaleAddress;

    // for testing on testnet
    //uint256 public constant tokenCreationMax = safeMul(10 ether, baseTokensPerEther);
    //uint256 public constant tokenCreationMin = safeMul(3 ether, baseTokensPerEther);

    address public decentBetMultisig;

    DecentBetVault public timeVault; // DecentBet's time-locked vault

    event Upgrade(address indexed _from, address indexed _to, uint256 _value);

    event UpgradeFinalized(address sender, address upgradeAgent);

    event UpgradeAgentSet(address agent);

    // Allow only the team address to continue
    modifier onlyTeam() {
        if(msg.sender != team) throw;
        _;
    }

    function DecentBetToken(address _decentBetMultisig,
    address _upgradeMaster, address _team,
    uint256 _baseTokensPerEther, uint256 _fundingStartTime,
    uint256 _fundingEndTime) {

        if (_decentBetMultisig == 0) throw;
        if (_team == 0) throw;
        if (_upgradeMaster == 0) throw;
        if (_baseTokensPerEther == 0) throw;

        // For testing/dev
        //         if(_fundingStartTime == 0) throw;
        // Crowdsale can only officially start during/after the current block timestamp.
        if (_fundingStartTime < getTime()) throw;

        if (_fundingEndTime <= _fundingStartTime) throw;

        isDecentBetToken = true;

        upgradeMaster = _upgradeMaster;
        team = _team;

        baseTokensPerEther = _baseTokensPerEther;

        preSaleStartTime = _fundingStartTime - 1 days;
        fundingStartTime = _fundingStartTime;
        fundingEndTime = _fundingEndTime;

        // Pre-sale issuance from pre-sale contract
        // 0x7be601aab2f40cc23653965749b84e5cb8cfda43
        preSaleAddress = 0x87f7beeda96216ec2a325e417a45ed262495686b;
        preSaleAllotment = 45000000 ether;

        balances[preSaleAddress] = preSaleAllotment;
        totalSupply = safeAdd(totalSupply, preSaleAllotment);

        timeVault = new DecentBetVault(_decentBetMultisig);
        if (!timeVault.isDecentBetVault()) throw;

        decentBetMultisig = _decentBetMultisig;
        if (!MultiSigWallet(decentBetMultisig).isMultiSigWallet()) throw;
    }

    function balanceOf(address who) constant returns (uint) {
        return balances[who];
    }

    /// @notice Transfer `value` DBET tokens from sender's account
    /// `msg.sender` to provided account address `to`.
    /// @notice This function is disabled during the funding.
    /// @dev Required state: Success
    /// @param to The address of the recipient
    /// @param value The number of DBETs to transfer
    /// @return Whether the transfer was successful or not
    function transfer(address to, uint256 value) returns (bool ok) {
        if (getState() != State.Success) throw;
        // Abort if crowdfunding was not a success.
        uint256 senderBalance = balances[msg.sender];
        if (senderBalance >= value && value > 0) {
            senderBalance = safeSub(senderBalance, value);
            balances[msg.sender] = senderBalance;
            balances[to] = safeAdd(balances[to], value);
            Transfer(msg.sender, to, value);
            return true;
        }
        return false;
    }

    /// @notice Transfer `value` DBET tokens from sender 'from'
    /// to provided account address `to`.
    /// @notice This function is disabled during the funding.
    /// @dev Required state: Success
    /// @param from The address of the sender
    /// @param to The address of the recipient
    /// @param value The number of DBETs to transfer
    /// @return Whether the transfer was successful or not
    function transferFrom(address from, address to, uint256 value) returns (bool ok) {
        if (getState() != State.Success) throw;
        // Abort if not in Success state.
        // protect against wrapping uints
        if (balances[from] >= value &&
        allowed[from][msg.sender] >= value &&
        safeAdd(balances[to], value) > balances[to])
        {
            balances[to] = safeAdd(balances[to], value);
            balances[from] = safeSub(balances[from], value);
            allowed[from][msg.sender] = safeSub(allowed[from][msg.sender], value);
            Transfer(from, to, value);
            return true;
        }
        else {return false;}
    }

    /// @notice `msg.sender` approves `spender` to spend `value` tokens
    /// @param spender The address of the account able to transfer the tokens
    /// @param value The amount of wei to be approved for transfer
    /// @return Whether the approval was successful or not
    function approve(address spender, uint256 value) returns (bool ok) {
        if (getState() != State.Success) throw;
        // Abort if not in Success state.
        allowed[msg.sender][spender] = value;
        Approval(msg.sender, spender, value);
        return true;
    }

    /// @param owner The address of the account owning tokens
    /// @param spender The address of the account able to transfer the tokens
    /// @return Amount of remaining tokens allowed to spent
    function allowance(address owner, address spender) constant returns (uint) {
        return allowed[owner][spender];
    }

    // Token upgrade functionality

    /// @notice Upgrade tokens to the new token contract.
    /// @dev Required state: Success
    /// @param value The number of tokens to upgrade
    function upgrade(uint256 value) external {
        if (getState() != State.Success) throw;
        // Abort if not in Success state.
        if (upgradeAgent.owner() == 0x0) throw;
        // need a real upgradeAgent address
        if (finalizedUpgrade) throw;
        // cannot upgrade if finalized

        // Validate input value.
        if (value == 0) throw;
        if (value > balances[msg.sender]) throw;

        // update the balances here first before calling out (reentrancy)
        balances[msg.sender] = safeSub(balances[msg.sender], value);
        totalSupply = safeSub(totalSupply, value);
        totalUpgraded = safeAdd(totalUpgraded, value);
        upgradeAgent.upgradeFrom(msg.sender, value);
        Upgrade(msg.sender, upgradeAgent, value);
    }

    /// @notice Set address of upgrade target contract and enable upgrade
    /// process.
    /// @dev Required state: Success
    /// @param agent The address of the UpgradeAgent contract
    function setUpgradeAgent(address agent) external {
        if (getState() != State.Success) throw;
        // Abort if not in Success state.
        if (agent == 0x0) throw;
        // don't set agent to nothing
        if (msg.sender != upgradeMaster) throw;
        // Only a master can designate the next agent
        upgradeAgent = UpgradeAgent(agent);
        if (!upgradeAgent.isUpgradeAgent()) throw;
        // this needs to be called in success condition to guarantee the invariant is true
        upgradeAgent.setOriginalSupply();
        UpgradeAgentSet(upgradeAgent);
    }

    /// @notice Set address of upgrade target contract and enable upgrade
    /// process.
    /// @dev Required state: Success
    /// @param master The address that will manage upgrades, not the upgradeAgent contract address
    function setUpgradeMaster(address master) external {
        if (getState() != State.Success) throw;
        // Abort if not in Success state.
        if (master == 0x0) throw;
        if (msg.sender != upgradeMaster) throw;
        // Only a master can designate the next master
        upgradeMaster = master;
    }

    /// @notice finalize the upgrade
    /// @dev Required state: Success
    function finalizeUpgrade() external {
        if (getState() != State.Success) throw;
        // Abort if not in Success state.
        if (upgradeAgent.owner() == 0x0) throw;
        // we need a valid upgrade agent
        if (msg.sender != upgradeMaster) throw;
        // only upgradeMaster can finalize
        if (finalizedUpgrade) throw;
        // can't finalize twice

        finalizedUpgrade = true;
        // prevent future upgrades

        upgradeAgent.finalizeUpgrade();
        // call finalize upgrade on new contract
        UpgradeFinalized(msg.sender, upgradeAgent);
    }

    // Allow users to purchase by sending Ether to the contract
    function() payable {
        invest();
    }

    // Updates tokens per ETH rates before the pre-sale
    function updateBaseTokensPerEther(uint _baseTokensPerEther) onlyTeam {
        if(getState() != State.Waiting) throw;

        baseTokensPerEther = _baseTokensPerEther;
    }

    // Returns the current rate after adding bonuses for the time period
    function getTokensAtCurrentRate(uint weiValue) constant returns (uint) {
        /* Pre-sale */
        if(getTime() >= preSaleStartTime && getTime() < fundingStartTime) {
            return safeDiv(safeMul(weiValue, safeMul(baseTokensPerEther, 120)), 100); // 20% bonus
        }

        /* Community sale */
        else if(getTime() >= fundingStartTime && getTime() < fundingStartTime + 1 days) {
            return safeDiv(safeMul(weiValue, safeMul(baseTokensPerEther, 120)), 100); // 20% bonus
        } else if(getTime() >= (fundingStartTime + 1 days) && getTime() < fundingStartTime + 2 days) {
            return safeDiv(safeMul(weiValue, safeMul(baseTokensPerEther, 120)), 100); // 20% bonus
        }

        /* Public sale */
        else if(getTime() >= (fundingStartTime + 2 days) && getTime() < fundingStartTime + 1 weeks) {
            return safeDiv(safeMul(weiValue, safeMul(baseTokensPerEther, 110)), 100); // 10% bonus
        } else if(getTime() >= fundingStartTime + 1 weeks && getTime() < fundingStartTime + 2 weeks) {
            return safeDiv(safeMul(weiValue, safeMul(baseTokensPerEther, 105)), 100); // 5% bonus
        } else if(getTime() >= fundingStartTime + 2 weeks && getTime() < fundingEndTime) {
            return safeMul(weiValue, baseTokensPerEther); // 0% bonus
        }
    }

    // Allows the owner to add an address to the pre-sale whitelist.
    function addToPreSaleWhitelist(address _address) onlyTeam {

        // Add to pre-sale whitelist only if state is Waiting right now.
        if(getState() != State.Waiting) throw;

        // Address already added to whitelist.
        if (preSaleAllowed[_address]) throw;

        preSaleWhitelist.push(_address);
        preSaleAllowed[_address] = true;
    }

    // Allows the owner to add an address to the community whitelist.
    function addToCommunitySaleWhitelist(address[] addresses) onlyTeam {

        // Add to community sale whitelist only if state is Waiting or Presale right now.
        if(getState() != State.Waiting &&
        getState() != State.PreSale) throw;

        for(uint i = 0; i < addresses.length; i++) {
            if(!communitySaleAllowed[addresses[i]]) {
                communitySaleWhitelist.push(addresses[i]);
                communitySaleAllowed[addresses[i]] = true;
            }
        }
    }

    /// @notice Create tokens when funding is active.
    /// @dev Required state: Funding
    /// @dev State transition: -> Funding Success (only if cap reached)
    function invest() payable {

        // Abort if not in PreSale, CommunitySale or PublicSale state.
        if (getState() != State.PreSale &&
        getState() != State.CommunitySale &&
        getState() != State.PublicSale) throw;

        // User hasn't been whitelisted for pre-sale.
        if(getState() == State.PreSale && !preSaleAllowed[msg.sender]) throw;

        // User hasn't been whitelisted for community sale.
        if(getState() == State.CommunitySale && !communitySaleAllowed[msg.sender]) throw;

        // Do not allow creating 0 tokens.
        if (msg.value == 0) throw;

        // multiply by exchange rate to get newly created token amount
        uint256 createdTokens = getTokensAtCurrentRate(msg.value);

        allocateTokens(msg.sender, createdTokens);
    }

    // Allocates tokens to an investors' address
    function allocateTokens(address _address, uint amount) internal {

        // we are creating tokens, so increase the totalSupply.
        totalSupply = safeAdd(totalSupply, amount);

        // don't go over the limit!
        if (totalSupply > tokenCreationMax) throw;

        // Don't allow community whitelisted addresses to purchase more than their cap.
        if(getState() == State.CommunitySale) {
            // Community sale day 1.
            // Whitelisted addresses can purchase a maximum of 100k DBETs (10k USD).
            if(getTime() >= fundingStartTime &&
            getTime() < fundingStartTime + 1 days) {
                if(safeAdd(communitySalePurchases[msg.sender][0], amount) > communitySaleCap[0])
                throw;
                else
                communitySalePurchases[msg.sender][0] =
                safeAdd(communitySalePurchases[msg.sender][0], amount);
            }

            // Community sale day 2.
            // Whitelisted addresses can purchase a maximum of 200k DBETs (20k USD).
            else if(getTime() >= (fundingStartTime + 1 days) &&
            getTime() < fundingStartTime + 2 days) {
                if(safeAdd(communitySalePurchases[msg.sender][1], amount) > communitySaleCap[1])
                throw;
                else
                communitySalePurchases[msg.sender][1] =
                safeAdd(communitySalePurchases[msg.sender][1], amount);
            }
        }

        // Assign new tokens to the sender.
        balances[_address] = safeAdd(balances[_address], amount);

        // Log token creation event
        Transfer(0, _address, amount);
    }

    /// @notice Finalize crowdfunding
    /// @dev If cap was reached or crowdfunding has ended then:
    /// create DBET for the DecentBet Multisig and team,
    /// transfer ETH to the DecentBet Multisig address.
    /// @dev Required state: Success
    function finalizeCrowdfunding() external {
        // Abort if not in Funding Success state.
        if (getState() != State.Success) throw;
        // don't finalize unless we won
        if (finalizedCrowdfunding) throw;
        // can't finalize twice (so sneaky!)

        // prevent more creation of tokens
        finalizedCrowdfunding = true;

        // Founder's supply : 18% of total goes to vault, time locked for 6 months
        uint256 vaultTokens = safeDiv(safeMul(totalSupply, vaultPercentOfTotal), crowdfundPercentOfTotal);
        balances[timeVault] = safeAdd(balances[timeVault], vaultTokens);
        Transfer(0, timeVault, vaultTokens);

        // House: 10% of total goes to Decent.bet for initial house setup
        uint256 houseTokens = safeDiv(safeMul(totalSupply, housePercentOfTotal), crowdfundPercentOfTotal);
        balances[timeVault] = safeAdd(balances[decentBetMultisig], houseTokens);
        Transfer(0, decentBetMultisig, houseTokens);

        // Bounties: 2% of total goes to Decent bet for bounties
        uint256 bountyTokens = safeDiv(safeMul(totalSupply, bountyPercentOfTotal), crowdfundPercentOfTotal);
        balances[decentBetMultisig] = safeAdd(balances[decentBetMultisig], bountyTokens);
        Transfer(0, decentBetMultisig, bountyTokens);

        // Transfer ETH to the DBET Multisig address.
        if (!decentBetMultisig.send(this.balance)) throw;
    }

    // Interface marker
    function isDecentBetCrowdsale() returns (bool) {
        return true;
    }

    function getTime() constant returns (uint256) {
        return now;
    }

    /// @notice This manages the crowdfunding state machine
    /// We make it a function and do not assign the result to a variable
    /// So there is no chance of the variable being stale
    function getState() public constant returns (State){
        /* Successful if crowdsale was finalized */
        if(finalizedCrowdfunding) return State.Success;

        /* Pre-sale not started */
        else if (getTime() < preSaleStartTime) return State.Waiting;

        /* Pre-sale */
        else if (getTime() >= preSaleStartTime &&
        getTime() < fundingStartTime &&
        totalSupply < tokenCreationMax) return State.PreSale;

        /* Community sale */
        else if (getTime() >= fundingStartTime &&
        getTime() < fundingStartTime + 2 days &&
        totalSupply < tokenCreationMax) return State.CommunitySale;

        /* Public sale */
        else if (getTime() >= (fundingStartTime + 2 days) &&
        getTime() < fundingEndTime &&
        totalSupply < tokenCreationMax) return State.PublicSale;

        /* Success */
        else if (getTime() >= fundingEndTime ||
        totalSupply == tokenCreationMax) return State.Success;
    }

}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"preSaleStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vaultPercentOfTotal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"ok","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"weiValue","type":"uint256"}],"name":"getTokensAtCurrentRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getState","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"crowdfundPercentOfTotal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fundingStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalizeCrowdfunding","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenCreationMax","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"ok","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"upgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"finalizedUpgrade","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"preSaleAllotment","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"communitySaleWhitelist","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"communitySaleCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"upgradeAgent","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"upgradeMaster","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"communitySaleAllowed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isDecentBetToken","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"finalizedCrowdfunding","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"who","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"baseTokensPerEther","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fundingEndTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"team","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hundredPercent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"housePercentOfTotal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decentBetMultisig","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalizeUpgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"ok","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"isDecentBetCrowdsale","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"addToPreSaleWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalUpgraded","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"preSaleWhitelist","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"agent","type":"address"}],"name":"setUpgradeAgent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_baseTokensPerEther","type":"uint256"}],"name":"updateBaseTokensPerEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addresses","type":"address[]"}],"name":"addToCommunitySaleWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"invest","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"preSaleAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"preSaleAllowed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"timeVault","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bountyPercentOfTotal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"master","type":"address"}],"name":"setUpgradeMaster","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_decentBetMultisig","type":"address"},{"name":"_upgradeMaster","type":"address"},{"name":"_team","type":"address"},{"name":"_baseTokensPerEther","type":"uint256"},{"name":"_fundingStartTime","type":"uint256"},{"name":"_fundingEndTime","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Upgrade","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"},{"indexed":false,"name":"upgradeAgent","type":"address"}],"name":"UpgradeFinalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"agent","type":"address"}],"name":"UpgradeAgentSet","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
606060409081526001805460ff199081169091556004805460a060020a60ff0219169055600880549091169055805190810160405269152d02c7e14af68000008152692a5a058fc295ed00000060208201526200006190600d90600262000412565b50620000886934f086f3b33b684000006103e8640100000000620020216200038282021704565b60145534156200009757600080fd5b60405160c0806200299a8339810160405280805191906020018051919060200180519190602001805191906020018051919060200180519150505b600160a060020a0386161515620000e857600080fd5b600160a060020a0384161515620000fe57600080fd5b600160a060020a03851615156200011457600080fd5b8215156200012157600080fd5b62000139640100000000620015a8620003c382021704565b8210156200014657600080fd5b8181116200015357600080fd5b6001805460ff19168117905560058054600160a060020a03808816600160a060020a0319928316179092556004805487841690831617905560138590556201517f19840160105560118490556012839055601680549091167387f7beeda96216ec2a325e417a45ed262495686b17908190556a25391ee35a05c54d00000060158190559116600090815260026020526040812082905554620002039164010000000062002092620003c882021704565b600055856200021162000461565b600160a060020a039091168152602001604051809103906000f08015156200023857600080fd5b60188054600160a060020a031916600160a060020a0392831617908190551663cd3faa6a6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515620002ad57600080fd5b6102c65a03f11515620002bf57600080fd5b505050604051805190501515620002d557600080fd5b60178054600160a060020a031916600160a060020a03888116919091179182905516634c3a6ae06000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156200034d57600080fd5b6102c65a03f115156200035f57600080fd5b5050506040518051905015156200037557600080fd5b5b50505050505062000496565b6000828202620003b8841580620003a45750838583811515620003a157fe5b04145b640100000000620020d36200040182021704565b8091505b5092915050565b425b90565b6000828201620003b8848210801590620003a45750838210155b640100000000620020d36200040182021704565b8091505b5092915050565b8015156200040e57600080fd5b5b50565b82600281019282156200044e579160200282015b828111156200044e57825182906001605060020a031690559160200191906001019062000426565b5b506200045d92915062000472565b5090565b60405161037a806200262083390190565b620003c591905b808211156200045d576000815560010162000479565b5090565b90565b61217a80620004a66000396000f3006060604052361561022a5763ffffffff60e060020a60003504166306d65af3811461023657806306fdde031461025b57806308e496ea146102e6578063095ea7b31461030b5780630fb9dcd51461034157806318160ddd146103695780631865c57d1461038e5780631afaa8bf146103c55780631df93558146103ea5780631ed692c01461040f5780631f97c00e1461042457806323b872dd14610449578063313ce567146102e657806345977d03146104aa57806347858c79146104c2578063485f7a7e146104e95780634eb12d7f1461050e57806354da51ad14610540578063557ed1ba146105685780635de4ccb01461058d578063600440cb146105bc57806363193251146105eb57806367a4e7c41461061e57806368f673301461064557806370a082311461066c578063728d5e941461069d57806374eedd46146106c257806385f2aef2146106e75780638a9cb361146107165780638b2de7961461073b57806395d89b41146107605780639a45a263146107eb5780639a508c8e1461081a578063a9059cbb1461082f578063a95ff7d514610865578063aedc0c5c1461088c578063c752ff62146108ad578063d226d723146108d2578063d7e7088a14610904578063da88a83114610925578063dd62ed3e1461093d578063e244fe8914610974578063e8b5e51f1461022a578063eb08aa3b146109cf578063f08d1c34146109fe578063f4660ff514610a31578063f99f977c14610a60578063ffeb7d7514610a85575b5b610233610aa6565b5b005b341561024157600080fd5b610249610bbb565b60405190815260200160405180910390f35b341561026657600080fd5b61026e610bc1565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102ab5780820151818401525b602001610292565b50505050905090810190601f1680156102d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102f157600080fd5b610249610bf8565b60405190815260200160405180910390f35b341561031657600080fd5b61032d600160a060020a0360043516602435610bfd565b604051901515815260200160405180910390f35b341561034c57600080fd5b610249600435610c89565b60405190815260200160405180910390f35b341561037457600080fd5b610249610e74565b60405190815260200160405180910390f35b341561039957600080fd5b6103a1610e7a565b604051808260048111156103b157fe5b60ff16815260200191505060405180910390f35b34156103d057600080fd5b610249610f97565b60405190815260200160405180910390f35b34156103f557600080fd5b610249610f9c565b60405190815260200160405180910390f35b341561041a57600080fd5b610233610fa2565b005b341561042f57600080fd5b6102496111b8565b60405190815260200160405180910390f35b341561045457600080fd5b61032d600160a060020a03600435811690602435166044356111be565b604051901515815260200160405180910390f35b34156102f157600080fd5b610249610bf8565b60405190815260200160405180910390f35b34156104b557600080fd5b61023360043561135a565b005b34156104cd57600080fd5b61032d611548565b604051901515815260200160405180910390f35b34156104f457600080fd5b610249611558565b60405190815260200160405180910390f35b341561051957600080fd5b61052460043561155e565b604051600160a060020a03909116815260200160405180910390f35b341561054b57600080fd5b610249600435611590565b60405190815260200160405180910390f35b341561057357600080fd5b6102496115a8565b60405190815260200160405180910390f35b341561059857600080fd5b6105246115ad565b604051600160a060020a03909116815260200160405180910390f35b34156105c757600080fd5b6105246115bc565b604051600160a060020a03909116815260200160405180910390f35b34156105f657600080fd5b61032d600160a060020a03600435166115cb565b604051901515815260200160405180910390f35b341561062957600080fd5b61032d6115e0565b604051901515815260200160405180910390f35b341561065057600080fd5b61032d6115e9565b604051901515815260200160405180910390f35b341561067757600080fd5b610249600160a060020a03600435166115f2565b60405190815260200160405180910390f35b34156106a857600080fd5b610249611611565b60405190815260200160405180910390f35b34156106cd57600080fd5b610249611617565b60405190815260200160405180910390f35b34156106f257600080fd5b61052461161d565b604051600160a060020a03909116815260200160405180910390f35b341561072157600080fd5b61024961162c565b60405190815260200160405180910390f35b341561074657600080fd5b610249611631565b60405190815260200160405180910390f35b341561076b57600080fd5b61026e611636565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102ab5780820151818401525b602001610292565b50505050905090810190601f1680156102d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107f657600080fd5b61052461166d565b604051600160a060020a03909116815260200160405180910390f35b341561082557600080fd5b61023361167c565b005b341561083a57600080fd5b61032d600160a060020a0360043516602435611812565b604051901515815260200160405180910390f35b341561087057600080fd5b61032d6118fa565b604051901515815260200160405180910390f35b341561089757600080fd5b610233600160a060020a0360043516611900565b005b34156108b857600080fd5b6102496119c1565b60405190815260200160405180910390f35b34156108dd57600080fd5b6105246004356119c7565b604051600160a060020a03909116815260200160405180910390f35b341561090f57600080fd5b610233600160a060020a03600435166119f9565b005b341561093057600080fd5b610233600435611b7a565b005b341561094857600080fd5b610249600160a060020a0360043581169060243516611bbf565b60405190815260200160405180910390f35b341561097f57600080fd5b6102336004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843750949650611bec95505050505050565b005b610233610aa6565b005b34156109da57600080fd5b610524611d47565b604051600160a060020a03909116815260200160405180910390f35b3415610a0957600080fd5b61032d600160a060020a0360043516611d56565b604051901515815260200160405180910390f35b3415610a3c57600080fd5b610524611d6b565b604051600160a060020a03909116815260200160405180910390f35b3415610a6b57600080fd5b610249611d7a565b60405190815260200160405180910390f35b3415610a9057600080fd5b610233600160a060020a0360043516611d7f565b005b600060015b610ab3610e7a565b6004811115610abe57fe5b14158015610ae0575060025b610ad2610e7a565b6004811115610add57fe5b14155b8015610b00575060035b610af2610e7a565b6004811115610afd57fe5b14155b15610b0a57600080fd5b60015b610b15610e7a565b6004811115610b2057fe5b148015610b465750600160a060020a0333166000908152600a602052604090205460ff16155b15610b5057600080fd5b60025b610b5b610e7a565b6004811115610b6657fe5b148015610b8c5750600160a060020a0333166000908152600c602052604090205460ff16155b15610b9657600080fd5b341515610ba257600080fd5b610bab34610c89565b9050610bb73382611dfb565b5b50565b60105481565b60408051908101604052601081527f446563656e742e42657420546f6b656e00000000000000000000000000000000602082015281565b601281565b600060045b610c0a610e7a565b6004811115610c1557fe5b14610c1f57600080fd5b600160a060020a03338116600081815260036020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b6000601054610c966115a8565b10158015610cac5750601154610caa6115a8565b105b15610cd857610cd1610cca83610cc56013546078612021565b612021565b6064612050565b9050610e69565b601154610ce36115a8565b10158015610cfe57506011546201518001610cfc6115a8565b105b15610d2a57610cd1610cca83610cc56013546078612021565b612021565b6064612050565b9050610e69565b6011546201518001610d3a6115a8565b10158015610d5557506011546202a30001610d536115a8565b105b15610d8157610cd1610cca83610cc56013546078612021565b612021565b6064612050565b9050610e69565b6011546202a30001610d916115a8565b10158015610dac575060115462093a8001610daa6115a8565b105b15610dd857610cd1610cca83610cc5601354606e612021565b612021565b6064612050565b9050610e69565b60115462093a8001610de86115a8565b10158015610e0357506011546212750001610e016115a8565b105b15610e2f57610cd1610cca83610cc56013546069612021565b612021565b6064612050565b9050610e69565b6011546212750001610e3f6115a8565b10158015610e555750601254610e536115a8565b105b15610e6957610cd182601354612021565b90505b5b5b5b5b5b5b919050565b60005481565b60085460009060ff1615610e9057506004610f8e565b601054610e9b6115a8565b1015610ea957506000610f8e565b601054610eb46115a8565b10158015610eca5750601154610ec86115a8565b105b8015610ed95750601454600054105b15610ee657506001610f8e565b601154610ef16115a8565b10158015610f0c57506011546202a30001610f0a6115a8565b105b8015610f1b5750601454600054105b15610f2857506002610f8e565b6011546202a30001610f386115a8565b10158015610f4e5750601254610f4c6115a8565b105b8015610f5d5750601454600054105b15610f6a57506003610f8e565b601254610f756115a8565b101580610f855750601454600054145b15610f8e575060045b5b5b5b5b5b5b90565b604681565b60115481565b6000808060045b610fb1610e7a565b6004811115610fbc57fe5b14610fc657600080fd5b60085460ff1615610fd657600080fd5b6008805460ff19166001179055600054610ffc90610ff5906012612021565b6046612050565b601854600160a060020a03166000908152600260205260409020549093506110249084612092565b60188054600160a060020a03908116600090815260026020526040808220949094559154169160008051602061212f8339815191529086905190815260200160405180910390a3611082610ff5600054600a612021565b6046612050565b601754600160a060020a03166000908152600260205260409020549092506110aa9083612092565b601854600160a060020a03908116600090815260026020526040808220939093556017549091169160008051602061212f8339815191529085905190815260200160405180910390a361110a610ff56000546002612021565b6046612050565b601754600160a060020a03166000908152600260205260409020549091506111329082612092565b60178054600160a060020a03908116600090815260026020526040808220949094559154169160008051602061212f8339815191529084905190815260200160405180910390a3601754600160a060020a039081169030163180156108fc0290604051600060405180830381858888f1935050505015156111b257600080fd5b5b505050565b60145481565b600060045b6111cb610e7a565b60048111156111d657fe5b146111e057600080fd5b600160a060020a0384166000908152600260205260409020548290108015906112305750600160a060020a0380851660009081526003602090815260408083203390941683529290522054829010155b801561125c5750600160a060020a03831660009081526002602052604090205461125a8184612092565b115b1561134957600160a060020a0383166000908152600260205260409020546112849083612092565b600160a060020a0380851660009081526002602052604080822093909355908616815220546112b390836120ba565b600160a060020a03808616600090815260026020908152604080832094909455600381528382203390931682529190915220546112f090836120ba565b600160a060020a038086166000818152600360209081526040808320338616845290915290819020939093559085169160008051602061212f8339815191529085905190815260200160405180910390a350600161134d565b5060005b5b9392505050565b601281565b60045b611365610e7a565b600481111561137057fe5b1461137a57600080fd5b600654600160a060020a0316638da5cb5b6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156113c257600080fd5b6102c65a03f115156113d357600080fd5b5050506040518051600160a060020a0316151590506113f157600080fd5b60045460a060020a900460ff161561140857600080fd5b80151561141457600080fd5b600160a060020a03331660009081526002602052604090205481111561143957600080fd5b600160a060020a03331660009081526002602052604090205461145c90826120ba565b600160a060020a0333166000908152600260205260408120919091555461148390826120ba565b6000556007546114939082612092565b600755600654600160a060020a031663753e88e5338360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156114ec57600080fd5b6102c65a03f115156114fd57600080fd5b5050600654600160a060020a03908116915033167f7e5c344a8141a805725cb476f76c6953b842222b967edd1f78ddb6e8b3f397ac8360405190815260200160405180910390a35b50565b60045460a060020a900460ff1681565b60155481565b600b80548290811061156c57fe5b906000526020600020900160005b915054906101000a9004600160a060020a031681565b600d816002811061159d57fe5b0160005b5054905081565b425b90565b600654600160a060020a031681565b600554600160a060020a031681565b600c6020526000908152604090205460ff1681565b60015460ff1681565b60085460ff1681565b600160a060020a0381166000908152600260205260409020545b919050565b60135481565b60125481565b600454600160a060020a031681565b606481565b600a81565b60408051908101604052600481527f4442455400000000000000000000000000000000000000000000000000000000602082015281565b601754600160a060020a031681565b60045b611687610e7a565b600481111561169257fe5b1461169c57600080fd5b600654600160a060020a0316638da5cb5b6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156116e457600080fd5b6102c65a03f115156116f557600080fd5b5050506040518051600160a060020a03161515905061171357600080fd5b60055433600160a060020a0390811691161461172e57600080fd5b60045460a060020a900460ff161561174557600080fd5b6004805474ff0000000000000000000000000000000000000000191660a060020a179055600654600160a060020a0316639a508c8e6040518163ffffffff1660e060020a028152600401600060405180830381600087803b15156117a857600080fd5b6102c65a03f115156117b957600080fd5b50506006547fdefffffb60c1e133c8c4d138aca8eb2459d671a44b864db2b2febc8e2b5c17f891503390600160a060020a0316604051600160a060020a039283168152911660208201526040908101905180910390a15b565b60008060045b611820610e7a565b600481111561182b57fe5b1461183557600080fd5b50600160a060020a03331660009081526002602052604090205482811080159061185f5750600083115b156118ee5761186e81846120ba565b600160a060020a033381166000908152600260205260408082208490559187168152205490915061189f9084612092565b600160a060020a03808616600081815260026020526040908190209390935591339091169060008051602061212f8339815191529086905190815260200160405180910390a3600191506118f3565b600091505b5092915050565b60015b90565b60045433600160a060020a0390811691161461191b57600080fd5b60005b611926610e7a565b600481111561193157fe5b1461193b57600080fd5b600160a060020a0381166000908152600a602052604090205460ff161561196157600080fd5b600980546001810161197383826120e3565b916000526020600020900160005b8154600160a060020a038086166101009390930a838102910219909116179091556000908152600a60205260409020805460ff19166001179055505b5b50565b60075481565b600980548290811061156c57fe5b906000526020600020900160005b915054906101000a9004600160a060020a031681565b60045b611a04610e7a565b6004811115611a0f57fe5b14611a1957600080fd5b600160a060020a0381161515611a2e57600080fd5b60055433600160a060020a03908116911614611a4957600080fd5b6006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169190911791829055166361d3d7a66000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611ab457600080fd5b6102c65a03f11515611ac557600080fd5b505050604051805190501515611ada57600080fd5b600654600160a060020a0316639ef916ab6040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515611b1957600080fd5b6102c65a03f11515611b2a57600080fd5b50506006547f7845d5aa74cc410e35571258d954f23b82276e160fe8c188fa80566580f279cc9150600160a060020a0316604051600160a060020a03909116815260200160405180910390a15b50565b60045433600160a060020a03908116911614611b9557600080fd5b60005b611ba0610e7a565b6004811115611bab57fe5b14611bb557600080fd5b60138190555b5b50565b600160a060020a038083166000908152600360209081526040808320938516835292905220545b92915050565b60045460009033600160a060020a03908116911614611c0a57600080fd5b60005b611c15610e7a565b6004811115611c2057fe5b14158015611c42575060015b611c34610e7a565b6004811115611c3f57fe5b14155b15611c4c57600080fd5b5060005b8151811015611d4157600c6000838381518110611c6957fe5b90602001906020020151600160a060020a0316815260208101919091526040016000205460ff161515611d3857600b805460018101611ca883826120e3565b916000526020600020900160005b848481518110611cc257fe5b90602001906020020151909190916101000a815481600160a060020a030219169083600160a060020a03160217905550506001600c6000848481518110611d0557fe5b90602001906020020151600160a060020a031681526020810191909152604001600020805460ff19169115159190911790555b5b600101611c50565b5b5b5050565b601654600160a060020a031681565b600a6020526000908152604090205460ff1681565b601854600160a060020a031681565b600281565b60045b611d8a610e7a565b6004811115611d9557fe5b14611d9f57600080fd5b600160a060020a0381161515611db457600080fd5b60055433600160a060020a03908116911614611dcf57600080fd5b6005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b50565b611e0760005482612092565b6000819055601454901115611e1b57600080fd5b60025b611e26610e7a565b6004811115611e3157fe5b1415611fb657601154611e426115a8565b10158015611e5d57506011546201518001611e5b6115a8565b105b15611ef057600d60005b0160005b5054600160a060020a0333166000908152600f60205260408120611e96915b0160005b505483612092565b1115611ea157600080fd5b600160a060020a0333166000908152600f60205260408120611eca915b0160005b505482612092565b600160a060020a0333166000908152600f60205260408120905b0160005b50555b611fb6565b6011546201518001611f006115a8565b10158015611f1b57506011546202a30001611f196115a8565b105b15611fb657600d60015b0160005b5054600160a060020a0333166000908152600f60205260409020611f5a906001611e8a565b0160005b505483612092565b1115611f6557600080fd5b600160a060020a0333166000908152600f60205260409020611f94906001611ebe565b0160005b505482612092565b600160a060020a0333166000908152600f6020526040902060015b0160005b50555b5b5b5b600160a060020a038216600090815260026020526040902054611fdc9082612092565b600160a060020a03831660008181526002602052604080822093909355909160008051602061212f8339815191529084905190815260200160405180910390a35b5050565b6000828202612045841580612040575083858381151561203d57fe5b04145b6120d3565b8091505b5092915050565b60008061205f600084116120d3565b828481151561206a57fe5b049050612045838581151561207b57fe5b068285020185146120d3565b8091505b5092915050565b60008282016120458482108015906120405750838210155b6120d3565b8091505b5092915050565b60006120c8838311156120d3565b508082035b92915050565b801515610bb757600080fd5b5b50565b8154818355818115116111b2576000838152602090206111b291810190830161210d565b5b505050565b610f8e91905b808211156121275760008155600101612113565b5090565b905600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820d9a2a62c16e2a50b0ed5ccb86cb2fbfeff37b0760de4c89994dd659a835690e1002960606040526000805460ff19169055341561001957600080fd5b60405160208061037a833981016040528080519150505b600160a060020a038116151561004557600080fd5b6000805460018054600160a060020a031916600160a060020a0385811691909117825561010060a860020a031990921661010033909316929092029190911760ff19161790556100ba6100a36401000000006100c481026101f41704565b6301e133806401000000006101f96100c982021704565b6002555b5061010e565b425b90565b60008282016100f38482108015906100e15750838210155b6401000000006102216100fe82021704565b8091505b5092915050565b80151561010a57600080fd5b5b50565b61025d8061011d6000396000f3006060604052361561003b5763ffffffff60e060020a600035041663a438b0e58114610043578063a69df4b514610068578063cd3faa6a1461007d575b5b600080fd5b005b341561004e57600080fd5b6100566100a4565b60405190815260200160405180910390f35b341561007357600080fd5b6100416100ac565b005b341561008857600080fd5b6100906101eb565b604051901515815260200160405180910390f35b6301e1338081565b6002546100b76101f4565b10156100c257600080fd5b6000805460015473ffffffffffffffffffffffffffffffffffffffff61010090920482169263a9059cbb92919091169083906370a082319030906040516020015260405160e060020a63ffffffff841602815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381600087803b151561014e57600080fd5b6102c65a03f1151561015f57600080fd5b5050506040518051905060006040516020015260405160e060020a63ffffffff851602815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401602060405180830381600087803b15156101c257600080fd5b6102c65a03f115156101d357600080fd5b5050506040518051905015156101e857600080fd5b5b565b60005460ff1681565b425b90565b60008282016102168482108015906102115750838210155b610221565b8091505b5092915050565b80151561022d57600080fd5b5b505600a165627a7a723058208697dadd41b5838ed936227d9d121e93966f6622d6fc34db3d94461b77986ea00029000000000000000000000000c87b1bf162c1719e3ffdf34995d1853192d6633b000000000000000000000000818e6a1cdccc7db87e991d979aa8d3eec199b868000000000000000000000000818e6a1cdccc7db87e991d979aa8d3eec199b86800000000000000000000000000000000000000000000000000000000000008e80000000000000000000000000000000000000000000000000000000059c614800000000000000000000000000000000000000000000000000000000059eafe80

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

-----Decoded View---------------
Found 6 constructor arguments :
Arg [0] : 000000000000000000000000c87b1bf162c1719e3ffdf34995d1853192d6633b
Arg [1] : 000000000000000000000000818e6a1cdccc7db87e991d979aa8d3eec199b868
Arg [2] : 000000000000000000000000818e6a1cdccc7db87e991d979aa8d3eec199b868
Arg [3] : 00000000000000000000000000000000000000000000000000000000000008e8
Arg [4] : 0000000000000000000000000000000000000000000000000000000059c61480
Arg [5] : 0000000000000000000000000000000000000000000000000000000059eafe80


   Swarm Source:
bzzr://8697dadd41b5838ed936227d9d121e93966f6622d6fc34db3d94461b77986ea0

 

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.