Contract 0x58534C480ef96b6478940F9bBF6748DA8F2eC935

 
Ad
Crypto.com
Txn Hash Method
Block
From
To
Value
0xba1c2cd2f5f75ca3bf645dc92d7cc5f6819ca00da8fc01a27585edee601636cbApply And Lock S...50207392018-02-03 2:40:551331 days 21 hrs agoBlockbits: Deployer IN  0x58534c480ef96b6478940f9bbf6748da8f2ec9350 Ether0.0003006310
0x18cad15d8e9dc68a01eba9890276132746d516fe411b67fd3ee9700e415ef208Add Settings50205922018-02-03 2:08:261331 days 22 hrs agoBlockbits: Deployer IN  0x58534c480ef96b6478940f9bbf6748da8f2ec9350 Ether0.0014981610
0xd6be5326cd48a6d2b6671d321b49e6f7a88eddc2793a5123b95723c546322234Add Funding Stag...50205772018-02-03 2:03:441331 days 22 hrs agoBlockbits: Deployer IN  0x58534c480ef96b6478940f9bbf6748da8f2ec9350 Ether0.0023111710
0x4fbd0d785f2139de63ab5ced37ae35195788fa50b7a68e585fc6e209096551a7Add Funding Stag...50205612018-02-03 2:00:131331 days 22 hrs agoBlockbits: Deployer IN  0x58534c480ef96b6478940f9bbf6748da8f2ec9350 Ether0.0029114510
0xa7b8e6bb45fde19a8ba53c9c65eedb18a03ebf6ea6731128d05e9eade5a6a3afSet Initial Appl...50154212018-02-02 5:05:101332 days 19 hrs agoBlockbits: Deployer IN  0x58534c480ef96b6478940f9bbf6748da8f2ec9350 Ether0.0004460910
0xb593d7083fb2c53273ccf3e4ee080ef2da0fd2093e23e48b1b569f8b6e5f457c0x6060604050152332018-02-02 4:22:201332 days 20 hrs agoBlockbits: Deployer IN  Create: Funding0 Ether0.0273662810
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x410cb9f4c685e86fbbc52740a09e23433e42c7f1c7ff8b9b52edc7f895b7cd8352566522018-03-15 0:19:501292 days 15 mins ago 0x58534c480ef96b6478940f9bbf6748da8f2ec935 0xb4007597da3402a1e2b69c8e1c6dd753d01a80350.1 Ether
0x410cb9f4c685e86fbbc52740a09e23433e42c7f1c7ff8b9b52edc7f895b7cd8352566522018-03-15 0:19:501292 days 15 mins ago BlockbitsDirectFunding 0x58534c480ef96b6478940f9bbf6748da8f2ec9350.1 Ether
0x5eb5cb5d7e7c281e8d5224f29af33b3ced79535c3cb648871717123034406ebf52277632018-03-10 2:17:351296 days 22 hrs ago 0x58534c480ef96b6478940f9bbf6748da8f2ec935 0xb4007597da3402a1e2b69c8e1c6dd753d01a80350.27 Ether
0x5eb5cb5d7e7c281e8d5224f29af33b3ced79535c3cb648871717123034406ebf52277632018-03-10 2:17:351296 days 22 hrs ago BlockbitsDirectFunding 0x58534c480ef96b6478940f9bbf6748da8f2ec9350.27 Ether
0x975b145f48a8ae431b55bbd139bdba9ae39f1714d3f4b0f7498176baa1f0fe1651503112018-02-24 22:30:111310 days 2 hrs ago 0x58534c480ef96b6478940f9bbf6748da8f2ec935 0xb4007597da3402a1e2b69c8e1c6dd753d01a80350.01 Ether
0x975b145f48a8ae431b55bbd139bdba9ae39f1714d3f4b0f7498176baa1f0fe1651503112018-02-24 22:30:111310 days 2 hrs ago BlockbitsDirectFunding 0x58534c480ef96b6478940f9bbf6748da8f2ec9350.01 Ether
0xe63c3806d0bc00b515ba23759146639b2cf1e7ef938c9a1f79ceb59d30dd3e1a50550292018-02-08 20:49:461326 days 3 hrs ago 0x58534c480ef96b6478940f9bbf6748da8f2ec935 0xb4007597da3402a1e2b69c8e1c6dd753d01a80352 Ether
0xe63c3806d0bc00b515ba23759146639b2cf1e7ef938c9a1f79ceb59d30dd3e1a50550292018-02-08 20:49:461326 days 3 hrs ago BlockbitsDirectFunding 0x58534c480ef96b6478940f9bbf6748da8f2ec9352 Ether
0xed94657a4549775f33059c4e4a558d2dae4c2ce8a5f3d2e03b569345032edca950425192018-02-06 18:16:111328 days 6 hrs ago 0x58534c480ef96b6478940f9bbf6748da8f2ec935 0xb4007597da3402a1e2b69c8e1c6dd753d01a80350.2 Ether
0xed94657a4549775f33059c4e4a558d2dae4c2ce8a5f3d2e03b569345032edca950425192018-02-06 18:16:111328 days 6 hrs ago BlockbitsDirectFunding 0x58534c480ef96b6478940f9bbf6748da8f2ec9350.2 Ether
0xac905a0312dcf9c5da3429310cb8bd8b82a1a70cda98ce4b4c8c53ec2deb6cd650376912018-02-05 22:45:241329 days 1 hr ago 0x58534c480ef96b6478940f9bbf6748da8f2ec935 0xb4007597da3402a1e2b69c8e1c6dd753d01a80351.5 Ether
0xac905a0312dcf9c5da3429310cb8bd8b82a1a70cda98ce4b4c8c53ec2deb6cd650376912018-02-05 22:45:241329 days 1 hr ago BlockbitsMilestoneFunding 0x58534c480ef96b6478940f9bbf6748da8f2ec9351.5 Ether
0xc7011e1c2c99f46a0f57d8e66fe46d1a4bb224982c4603f1bafa9398c68efb7650350502018-02-05 11:58:341329 days 12 hrs ago 0x58534c480ef96b6478940f9bbf6748da8f2ec935 0xb4007597da3402a1e2b69c8e1c6dd753d01a80350.25 Ether
0xc7011e1c2c99f46a0f57d8e66fe46d1a4bb224982c4603f1bafa9398c68efb7650350502018-02-05 11:58:341329 days 12 hrs ago BlockbitsMilestoneFunding 0x58534c480ef96b6478940f9bbf6748da8f2ec9350.25 Ether
0xe66a6c4fce8dccc2e76ec765220c4e2460038c050c27ea06033f6382b584519e50350432018-02-05 11:56:271329 days 12 hrs ago 0x58534c480ef96b6478940f9bbf6748da8f2ec935 0xb4007597da3402a1e2b69c8e1c6dd753d01a80350.25 Ether
0xe66a6c4fce8dccc2e76ec765220c4e2460038c050c27ea06033f6382b584519e50350432018-02-05 11:56:271329 days 12 hrs ago BlockbitsMilestoneFunding 0x58534c480ef96b6478940f9bbf6748da8f2ec9350.25 Ether
0x28bd397ce5c96bb3850e45060877675a894ab74c326279ed2342d4f94d0635ee50348752018-02-05 11:16:171329 days 13 hrs ago 0x58534c480ef96b6478940f9bbf6748da8f2ec935 0xb4007597da3402a1e2b69c8e1c6dd753d01a80350.1 Ether
0x28bd397ce5c96bb3850e45060877675a894ab74c326279ed2342d4f94d0635ee50348752018-02-05 11:16:171329 days 13 hrs ago BlockbitsMilestoneFunding 0x58534c480ef96b6478940f9bbf6748da8f2ec9350.1 Ether
0x4974d384e7748749ebb942cf8a143af732b8c897268a7daff24dfb2267e3643c50343902018-02-05 9:20:451329 days 15 hrs ago 0x58534c480ef96b6478940f9bbf6748da8f2ec935 0xb4007597da3402a1e2b69c8e1c6dd753d01a80350.1 Ether
0x4974d384e7748749ebb942cf8a143af732b8c897268a7daff24dfb2267e3643c50343902018-02-05 9:20:451329 days 15 hrs ago BlockbitsMilestoneFunding 0x58534c480ef96b6478940f9bbf6748da8f2ec9350.1 Ether
0xf2a90c8979d42b2f55b24b42e6291fe9f8df43a22fe7fcc2ef520331fb10566950342752018-02-05 8:50:231329 days 15 hrs ago 0x58534c480ef96b6478940f9bbf6748da8f2ec935 0xb4007597da3402a1e2b69c8e1c6dd753d01a80350.1 Ether
0xf2a90c8979d42b2f55b24b42e6291fe9f8df43a22fe7fcc2ef520331fb10566950342752018-02-05 8:50:231329 days 15 hrs ago BlockbitsMilestoneFunding 0x58534c480ef96b6478940f9bbf6748da8f2ec9350.1 Ether
0xcbcead10f3312612d2dd0fef31b59c2548531494c5d3ebe773965f647b1aa50350313592018-02-04 21:21:591330 days 3 hrs ago 0x58534c480ef96b6478940f9bbf6748da8f2ec935 0xb4007597da3402a1e2b69c8e1c6dd753d01a80350.9994 Ether
0xcbcead10f3312612d2dd0fef31b59c2548531494c5d3ebe773965f647b1aa50350313592018-02-04 21:21:591330 days 3 hrs ago BlockbitsMilestoneFunding 0x58534c480ef96b6478940f9bbf6748da8f2ec9350.9994 Ether
0x008b26a9b0608107b7f29b45e4b5fa48187d7235e9b59d4cb052c374e22286c750306302018-02-04 18:16:101330 days 6 hrs ago 0x58534c480ef96b6478940f9bbf6748da8f2ec935 0xb4007597da3402a1e2b69c8e1c6dd753d01a80350.1 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Funding

Compiler Version
v0.4.17+commit.bdeb9e52

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-02-02
*/

pragma solidity ^0.4.17;

/*

 * source       https://github.com/blockbitsio/

 * @name        Application Entity Generic Contract
 * @package     BlockBitsIO
 * @author      Micky Socaci <[email protected]>

    Used for the ABI interface when assets need to call Application Entity.

    This is required, otherwise we end up loading the assets themselves when we load the ApplicationEntity contract
    and end up in a loop
*/



contract ApplicationEntityABI {

    address public ProposalsEntity;
    address public FundingEntity;
    address public MilestonesEntity;
    address public MeetingsEntity;
    address public BountyManagerEntity;
    address public TokenManagerEntity;
    address public ListingContractEntity;
    address public FundingManagerEntity;
    address public NewsContractEntity;

    bool public _initialized = false;
    bool public _locked = false;
    uint8 public CurrentEntityState;
    uint8 public AssetCollectionNum;
    address public GatewayInterfaceAddress;
    address public deployerAddress;
    address testAddressAllowUpgradeFrom;
    mapping (bytes32 => uint8) public EntityStates;
    mapping (bytes32 => address) public AssetCollection;
    mapping (uint8 => bytes32) public AssetCollectionIdToName;
    mapping (bytes32 => uint256) public BylawsUint256;
    mapping (bytes32 => bytes32) public BylawsBytes32;

    function ApplicationEntity() public;
    function getEntityState(bytes32 name) public view returns (uint8);
    function linkToGateway( address _GatewayInterfaceAddress, bytes32 _sourceCodeUrl ) external;
    function setUpgradeState(uint8 state) public ;
    function addAssetProposals(address _assetAddresses) external;
    function addAssetFunding(address _assetAddresses) external;
    function addAssetMilestones(address _assetAddresses) external;
    function addAssetMeetings(address _assetAddresses) external;
    function addAssetBountyManager(address _assetAddresses) external;
    function addAssetTokenManager(address _assetAddresses) external;
    function addAssetFundingManager(address _assetAddresses) external;
    function addAssetListingContract(address _assetAddresses) external;
    function addAssetNewsContract(address _assetAddresses) external;
    function getAssetAddressByName(bytes32 _name) public view returns (address);
    function setBylawUint256(bytes32 name, uint256 value) public;
    function getBylawUint256(bytes32 name) public view returns (uint256);
    function setBylawBytes32(bytes32 name, bytes32 value) public;
    function getBylawBytes32(bytes32 name) public view returns (bytes32);
    function initialize() external returns (bool);
    function getParentAddress() external view returns(address);
    function createCodeUpgradeProposal( address _newAddress, bytes32 _sourceCodeUrl ) external returns (uint256);
    function acceptCodeUpgradeProposal(address _newAddress) external;
    function initializeAssetsToThisApplication() external returns (bool);
    function transferAssetsToNewApplication(address _newAddress) external returns (bool);
    function lock() external returns (bool);
    function canInitiateCodeUpgrade(address _sender) public view returns(bool);
    function doStateChanges() public;
    function hasRequiredStateChanges() public view returns (bool);
    function anyAssetHasChanges() public view returns (bool);
    function extendedAnyAssetHasChanges() internal view returns (bool);
    function getRequiredStateChanges() public view returns (uint8, uint8);
    function getTimestamp() view public returns (uint256);

}

/*

 * source       https://github.com/blockbitsio/

 * @name        Application Asset Contract
 * @package     BlockBitsIO
 * @author      Micky Socaci <[email protected]>

 Any contract inheriting this will be usable as an Asset in the Application Entity

*/




contract ApplicationAsset {

    event EventAppAssetOwnerSet(bytes32 indexed _name, address indexed _owner);
    event EventRunBeforeInit(bytes32 indexed _name);
    event EventRunBeforeApplyingSettings(bytes32 indexed _name);


    mapping (bytes32 => uint8) public EntityStates;
    mapping (bytes32 => uint8) public RecordStates;
    uint8 public CurrentEntityState;

    event EventEntityProcessor(bytes32 indexed _assetName, uint8 indexed _current, uint8 indexed _required);
    event DebugEntityRequiredChanges( bytes32 _assetName, uint8 indexed _current, uint8 indexed _required );

    bytes32 public assetName;

    /* Asset records */
    uint8 public RecordNum = 0;

    /* Asset initialised or not */
    bool public _initialized = false;

    /* Asset settings present or not */
    bool public _settingsApplied = false;

    /* Asset owner ( ApplicationEntity address ) */
    address public owner = address(0x0) ;
    address public deployerAddress;

    function ApplicationAsset() public {
        deployerAddress = msg.sender;
    }

    function setInitialApplicationAddress(address _ownerAddress) public onlyDeployer requireNotInitialised {
        owner = _ownerAddress;
    }

    function setInitialOwnerAndName(bytes32 _name) external
        requireNotInitialised
        onlyOwner
        returns (bool)
    {
        // init states
        setAssetStates();
        assetName = _name;
        // set initial state
        CurrentEntityState = getEntityState("NEW");
        runBeforeInitialization();
        _initialized = true;
        EventAppAssetOwnerSet(_name, owner);
        return true;
    }

    function setAssetStates() internal {
        // Asset States
        EntityStates["__IGNORED__"]     = 0;
        EntityStates["NEW"]             = 1;
        // Funding Stage States
        RecordStates["__IGNORED__"]     = 0;
    }

    function getRecordState(bytes32 name) public view returns (uint8) {
        return RecordStates[name];
    }

    function getEntityState(bytes32 name) public view returns (uint8) {
        return EntityStates[name];
    }

    function runBeforeInitialization() internal requireNotInitialised  {
        EventRunBeforeInit(assetName);
    }

    function applyAndLockSettings()
        public
        onlyDeployer
        requireInitialised
        requireSettingsNotApplied
        returns(bool)
    {
        runBeforeApplyingSettings();
        _settingsApplied = true;
        return true;
    }

    function runBeforeApplyingSettings() internal requireInitialised requireSettingsNotApplied  {
        EventRunBeforeApplyingSettings(assetName);
    }

    function transferToNewOwner(address _newOwner) public requireInitialised onlyOwner returns (bool) {
        require(owner != address(0x0) && _newOwner != address(0x0));
        owner = _newOwner;
        EventAppAssetOwnerSet(assetName, owner);
        return true;
    }

    function getApplicationAssetAddressByName(bytes32 _name)
        public
        view
        returns(address)
    {
        address asset = ApplicationEntityABI(owner).getAssetAddressByName(_name);
        if( asset != address(0x0) ) {
            return asset;
        } else {
            revert();
        }
    }

    function getApplicationState() public view returns (uint8) {
        return ApplicationEntityABI(owner).CurrentEntityState();
    }

    function getApplicationEntityState(bytes32 name) public view returns (uint8) {
        return ApplicationEntityABI(owner).getEntityState(name);
    }

    function getAppBylawUint256(bytes32 name) public view requireInitialised returns (uint256) {
        ApplicationEntityABI CurrentApp = ApplicationEntityABI(owner);
        return CurrentApp.getBylawUint256(name);
    }

    function getAppBylawBytes32(bytes32 name) public view requireInitialised returns (bytes32) {
        ApplicationEntityABI CurrentApp = ApplicationEntityABI(owner);
        return CurrentApp.getBylawBytes32(name);
    }

    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    modifier onlyApplicationEntity() {
        require(msg.sender == owner);
        _;
    }

    modifier requireInitialised() {
        require(_initialized == true);
        _;
    }

    modifier requireNotInitialised() {
        require(_initialized == false);
        _;
    }

    modifier requireSettingsApplied() {
        require(_settingsApplied == true);
        _;
    }

    modifier requireSettingsNotApplied() {
        require(_settingsApplied == false);
        _;
    }

    modifier onlyDeployer() {
        require(msg.sender == deployerAddress);
        _;
    }

    modifier onlyAsset(bytes32 _name) {
        address AssetAddress = getApplicationAssetAddressByName(_name);
        require( msg.sender == AssetAddress);
        _;
    }

    function getTimestamp() view public returns (uint256) {
        return now;
    }


}

/*

 * source       https://github.com/blockbitsio/

 * @name        Application Asset Contract ABI
 * @package     BlockBitsIO
 * @author      Micky Socaci <[email protected]>

 Any contract inheriting this will be usable as an Asset in the Application Entity

*/



contract ABIApplicationAsset {

    bytes32 public assetName;
    uint8 public CurrentEntityState;
    uint8 public RecordNum;
    bool public _initialized;
    bool public _settingsApplied;
    address public owner;
    address public deployerAddress;
    mapping (bytes32 => uint8) public EntityStates;
    mapping (bytes32 => uint8) public RecordStates;

    function setInitialApplicationAddress(address _ownerAddress) public;
    function setInitialOwnerAndName(bytes32 _name) external returns (bool);
    function getRecordState(bytes32 name) public view returns (uint8);
    function getEntityState(bytes32 name) public view returns (uint8);
    function applyAndLockSettings() public returns(bool);
    function transferToNewOwner(address _newOwner) public returns (bool);
    function getApplicationAssetAddressByName(bytes32 _name) public returns(address);
    function getApplicationState() public view returns (uint8);
    function getApplicationEntityState(bytes32 name) public view returns (uint8);
    function getAppBylawUint256(bytes32 name) public view returns (uint256);
    function getAppBylawBytes32(bytes32 name) public view returns (bytes32);
    function getTimestamp() view public returns (uint256);


}

/*

 * source       https://github.com/blockbitsio/

 * @name        Funding Contract ABI
 * @package     BlockBitsIO
 * @author      Micky Socaci <[email protected]>

 Contains the Funding Contract code deployed and linked to the Application Entity

*/





contract ABIFundingManager is ABIApplicationAsset {

    bool public fundingProcessed;
    bool FundingPoolBalancesAllocated;
    uint8 public VaultCountPerProcess;
    uint256 public lastProcessedVaultId;
    uint256 public vaultNum;
    uint256 public LockedVotingTokens;
    bytes32 public currentTask;
    mapping (bytes32 => bool) public taskByHash;
    mapping  (address => address) public vaultList;
    mapping  (uint256 => address) public vaultById;

    function receivePayment(address _sender, uint8 _payment_method, uint8 _funding_stage) payable public returns(bool);
    function getMyVaultAddress(address _sender) public view returns (address);
    function setVaultCountPerProcess(uint8 _perProcess) external;
    function getHash(bytes32 actionType, bytes32 arg1) public pure returns ( bytes32 );
    function getCurrentMilestoneProcessed() public view returns (bool);
    function processFundingFailedFinished() public view returns (bool);
    function processFundingSuccessfulFinished() public view returns (bool);
    function getCurrentMilestoneIdHash() internal view returns (bytes32);
    function processMilestoneFinished() public view returns (bool);
    function processEmergencyFundReleaseFinished() public view returns (bool);
    function getAfterTransferLockedTokenBalances(address vaultAddress, bool excludeCurrent) public view returns (uint256);
    function VaultRequestedUpdateForLockedVotingTokens(address owner) public;
    function doStateChanges() public;
    function hasRequiredStateChanges() public view returns (bool);
    function getRequiredStateChanges() public view returns (uint8, uint8);
    function ApplicationInFundingOrDevelopment() public view returns(bool);

}

/*

 * source       https://github.com/blockbitsio/

 * @name        Token Manager Contract
 * @package     BlockBitsIO
 * @author      Micky Socaci <[email protected]>

*/





contract ABITokenManager is ABIApplicationAsset {

    address public TokenSCADAEntity;
    address public TokenEntity;
    address public MarketingMethodAddress;
    bool OwnerTokenBalancesReleased = false;

    function addSettings(address _scadaAddress, address _tokenAddress, address _marketing ) public;
    function getTokenSCADARequiresHardCap() public view returns (bool);
    function mint(address _to, uint256 _amount) public returns (bool);
    function finishMinting() public returns (bool);
    function mintForMarketingPool(address _to, uint256 _amount) external returns (bool);
    function ReleaseOwnersLockedTokens(address _multiSigOutputAddress) public returns (bool);

}

/*

 * source       https://github.com/blockbitsio/

 * @name        General Funding Input Contract ABI
 * @package     BlockBitsIO
 * @author      Micky Socaci <[email protected]>

*/



contract ABIFundingInputGeneral {

    bool public initialized = false;
    uint8 public typeId;
    address public FundingAssetAddress;

    event EventInputPaymentReceived(address sender, uint amount, uint8 _type);

    function setFundingAssetAddress(address _addr) public;
    function () public payable;
    function buy() public payable returns(bool);
}

/*

 * source       https://github.com/blockbitsio/

 * @name        Funding Contract
 * @package     BlockBitsIO
 * @author      Micky Socaci <[email protected]>

 Contains the Funding Contract code deployed and linked to the Application Entity

 !!! Links directly to Milestones

*/










contract Funding is ApplicationAsset {

    address public multiSigOutputAddress;
    ABIFundingInputGeneral public DirectInput;
    ABIFundingInputGeneral public MilestoneInput;

    // mapping (bytes32 => uint8) public FundingMethods;
    enum FundingMethodIds {
        __IGNORED__,
        DIRECT_ONLY, 				//
        MILESTONE_ONLY, 		    //
        DIRECT_AND_MILESTONE		//
    }

    ABITokenManager public TokenManagerEntity;
    ABIFundingManager public FundingManagerEntity;

    event FundingStageCreated( uint8 indexed index, bytes32 indexed name );

    struct FundingStage {
        bytes32 name;
        uint8   state;
        uint256 time_start;
        uint256 time_end;
        uint256 amount_cap_soft;            // 0 = not enforced
        uint256 amount_cap_hard;            // 0 = not enforced
        uint256 amount_raised;              // 0 = not enforced
        // funding method settings
        uint256 minimum_entry;
        uint8   methods;                    // FundingMethodIds
        // token settings
        uint256 fixed_tokens;
        uint8   price_addition_percentage;  //
        uint8   token_share_percentage;
        uint8   index;
    }

    mapping (uint8 => FundingStage) public Collection;
    uint8 public FundingStageNum = 0;
    uint8 public currentFundingStage = 1;

    // funding settings
    uint256 public AmountRaised = 0;
    uint256 public MilestoneAmountRaised = 0;

    uint256 public GlobalAmountCapSoft = 0;
    uint256 public GlobalAmountCapHard = 0;

    uint8 public TokenSellPercentage = 0;

    uint256 public Funding_Setting_funding_time_start = 0;
    uint256 public Funding_Setting_funding_time_end = 0;

    uint256 public Funding_Setting_cashback_time_start = 0;
    // end time is ignored at this stage, anyone can cashback forever if funding fails.
    uint256 public Funding_Setting_cashback_time_end = 0;

    // to be taken from application bylaws
    uint256 public Funding_Setting_cashback_before_start_wait_duration = 7 days;
    uint256 public Funding_Setting_cashback_duration = 365 days;

    event LifeCycle();
    event DebugRecordRequiredChanges( bytes32 indexed _assetName, uint8 indexed _current, uint8 indexed _required );
    event DebugCallAgain(uint8 indexed _who);

    event EventEntityProcessor(bytes32 indexed _assetName, uint8 indexed _current, uint8 indexed _required);
    event EventRecordProcessor(bytes32 indexed _assetName, uint8 indexed _current, uint8 indexed _required);

    event DebugAction(bytes32 indexed _name, bool indexed _allowed);


    event EventFundingReceivedPayment(address indexed _sender, uint8 indexed _payment_method, uint256 indexed _amount );

    function runBeforeInitialization() internal requireNotInitialised {

        // instantiate token manager, moved from runBeforeApplyingSettings
        TokenManagerEntity = ABITokenManager( getApplicationAssetAddressByName('TokenManager') );
        FundingManagerEntity = ABIFundingManager( getApplicationAssetAddressByName('FundingManager') );

        EventRunBeforeInit(assetName);
    }

    function setAssetStates() internal {
        // Asset States
        EntityStates["__IGNORED__"]     = 0;
        EntityStates["NEW"]             = 1;
        EntityStates["WAITING"]         = 2;
        EntityStates["IN_PROGRESS"]     = 3;
        EntityStates["COOLDOWN"]        = 4;
        EntityStates["FUNDING_ENDED"]   = 5;
        EntityStates["FAILED"]          = 6;
        EntityStates["FAILED_FINAL"]    = 7;
        EntityStates["SUCCESSFUL"]      = 8;
        EntityStates["SUCCESSFUL_FINAL"]= 9;

        // Funding Stage States
        RecordStates["__IGNORED__"]     = 0;
        RecordStates["NEW"]             = 1;
        RecordStates["IN_PROGRESS"]     = 2;
        RecordStates["FINAL"]           = 3;
    }

    function addSettings(address _outputAddress, uint256 soft_cap, uint256 hard_cap, uint8 sale_percentage, address _direct, address _milestone )
        public
        requireInitialised
        requireSettingsNotApplied
    {
        if(soft_cap > hard_cap) {
            revert();
        }

        multiSigOutputAddress = _outputAddress;
        GlobalAmountCapSoft = soft_cap;
        GlobalAmountCapHard = hard_cap;

        if(sale_percentage > 90) {
            revert();
        }

        TokenSellPercentage = sale_percentage;

        DirectInput = ABIFundingInputGeneral(_direct);
        MilestoneInput = ABIFundingInputGeneral(_milestone);
    }

    function addFundingStage(
        bytes32 _name,
        uint256 _time_start,
        uint256 _time_end,
        uint256 _amount_cap_soft,
        uint256 _amount_cap_hard,   // required > 0
        uint8   _methods,
        uint256 _minimum_entry,
        uint256 _fixed_tokens,
        uint8   _price_addition_percentage,
        uint8   _token_share_percentage
    )
        public
        onlyDeployer
        requireInitialised
        requireSettingsNotApplied
    {

        // make sure end time is later than start time
        if(_time_end <= _time_start) {
            revert();
        }

        // make sure hard cap exists!
        if(_amount_cap_hard == 0) {
            revert();
        }

        // make sure soft cap is not higher than hard cap
        if(_amount_cap_soft > _amount_cap_hard) {
            revert();
        }

        if(_token_share_percentage > 0) {
            revert();
        }

        FundingStage storage prevRecord = Collection[FundingStageNum];
        if(FundingStageNum > 0) {

            // new stage does not start before the previous one ends
            if( _time_start <= prevRecord.time_end ) {
                revert();
            }
        }

        FundingStage storage record = Collection[++FundingStageNum];
        record.name             = _name;
        record.time_start       = _time_start;
        record.time_end         = _time_end;
        record.amount_cap_soft  = _amount_cap_soft;
        record.amount_cap_hard  = _amount_cap_hard;

        // funding method settings
        record.methods          = _methods;
        record.minimum_entry    = _minimum_entry;

        // token settings
        record.fixed_tokens              = _fixed_tokens;
        record.price_addition_percentage = _price_addition_percentage;
        record.token_share_percentage    = _token_share_percentage;

        // state new
        record.state = getRecordState("NEW");
        record.index = FundingStageNum;

        FundingStageCreated( FundingStageNum, _name );

        adjustFundingSettingsBasedOnNewFundingStage();
    }

    function adjustFundingSettingsBasedOnNewFundingStage() internal {

        // set funding start
        Funding_Setting_funding_time_start = Collection[1].time_start;
        // set funding end
        Funding_Setting_funding_time_end = Collection[FundingStageNum].time_end;

        // cashback starts 1 day after funding status is failed
        Funding_Setting_cashback_time_start = Funding_Setting_funding_time_end + Funding_Setting_cashback_before_start_wait_duration;
        Funding_Setting_cashback_time_end = Funding_Setting_cashback_time_start + Funding_Setting_cashback_duration;
    }

    function getStageAmount(uint8 StageId) public view returns ( uint256 ) {
        return Collection[StageId].fixed_tokens;
    }

    function allowedPaymentMethod(uint8 _payment_method) public pure returns (bool) {
        if(
        _payment_method == uint8(FundingMethodIds.DIRECT_ONLY) ||
        _payment_method == uint8(FundingMethodIds.MILESTONE_ONLY)
        ){
            return true;
        } else {
            return false;
        }
    }

    function receivePayment(address _sender, uint8 _payment_method)
        payable
        public
        requireInitialised
        onlyInputPaymentMethod
        returns(bool)
    {
        // check that msg.value is higher than 0, don't really want to have to deal with minus in case the network breaks this somehow
        if(allowedPaymentMethod(_payment_method) && canAcceptPayment(msg.value) ) {

            uint256 contributed_value = msg.value;

            uint256 amountOverCap = getValueOverCurrentCap(contributed_value);
            if ( amountOverCap > 0 ) {
                // calculate how much we can accept

                // update contributed value
                contributed_value -= amountOverCap;
            }

            Collection[currentFundingStage].amount_raised+= contributed_value;
            AmountRaised+= contributed_value;

            if(_payment_method == uint8(FundingMethodIds.MILESTONE_ONLY)) {
                MilestoneAmountRaised+=contributed_value;
            }

            EventFundingReceivedPayment(_sender, _payment_method, contributed_value);

            if( FundingManagerEntity.receivePayment.value(contributed_value)( _sender, _payment_method, currentFundingStage ) ) {

                if(amountOverCap > 0) {
                    // last step, if we received more than we can accept, send remaining back
                    // amountOverCap sent back
                    if( _sender.send(this.balance) ) {
                        return true;
                    }
                    else {
                        revert();
                    }
                } else {
                    return true;
                }
            } else {
                revert();
            }

        } else {
            revert();
        }
    }

    modifier onlyInputPaymentMethod() {
        require(msg.sender != 0x0 && ( msg.sender == address(DirectInput) || msg.sender == address(MilestoneInput) ));
        _;
    }

    function canAcceptPayment(uint256 _amount) public view returns (bool) {
        if( _amount > 0 ) {
            // funding state should be IN_PROGRESS, no state changes should be required
            if( CurrentEntityState == getEntityState("IN_PROGRESS") && hasRequiredStateChanges() == false) {
                return true;
            }
        }
        return false;
    }

    function getValueOverCurrentCap(uint256 _amount) public view returns (uint256) {
        FundingStage memory record = Collection[currentFundingStage];
        uint256 remaining = record.amount_cap_hard - AmountRaised;
        if( _amount > remaining ) {
            return _amount - remaining;
        }
        return 0;
    }


    /*
    * Update Existing FundingStage
    *
    * @param        uint8 _record_id
    * @param        uint8 _new_state
    * @param        uint8 _duration
    *
    * @access       public
    * @type         method
    * @modifiers    onlyOwner, requireInitialised, updateAllowed
    *
    * @return       void
    */

    function updateFundingStage( uint8 _new_state )
        internal
        requireInitialised
        FundingStageUpdateAllowed(_new_state)
        returns (bool)
    {
        FundingStage storage rec = Collection[currentFundingStage];
        rec.state       = _new_state;
        return true;
    }


    /*
    * Modifier: Validate if record updates are allowed
    *
    * @type         modifier
    *
    * @param        uint8 _record_id
    * @param        uint8 _new_state
    * @param        uint256 _duration
    *
    * @return       bool
    */

    modifier FundingStageUpdateAllowed(uint8 _new_state) {
        require( isFundingStageUpdateAllowed( _new_state )  );
        _;
    }

    /*
     * Method: Validate if record can be updated to requested state
     *
     * @access       public
     * @type         method
     *
     * @param        uint8 _record_id
     * @param        uint8 _new_state
     *
     * @return       bool
     */
    function isFundingStageUpdateAllowed(uint8 _new_state ) public view returns (bool) {

        var (CurrentRecordState, RecordStateRequired, EntityStateRequired) = getRequiredStateChanges();

        CurrentRecordState = 0;
        EntityStateRequired = 0;

        if(_new_state == uint8(RecordStateRequired)) {
            return true;
        }
        return false;
    }

    /*
     * Funding Phase changes
     *
     * Method: Get FundingStage Required State Changes
     *
     * @access       public
     * @type         method
     * @modifiers    onlyOwner
     *
     * @return       uint8 RecordStateRequired
     */
    function getRecordStateRequiredChanges() public view returns (uint8) {

        FundingStage memory record = Collection[currentFundingStage];
        uint8 RecordStateRequired = getRecordState("__IGNORED__");

        if(record.state == getRecordState("FINAL")) {
            return getRecordState("__IGNORED__");
        }

        /*
            If funding stage is not started and timestamp is after start time:
            - we need to change state to IN_PROGRESS so we can start receiving funds
        */
        if( getTimestamp() >= record.time_start ) {
            RecordStateRequired = getRecordState("IN_PROGRESS");
        }

        /*
            This is where we're accepting payments unless we can change state to FINAL

            1. Check if timestamp is after record time_end
            2. Check hard caps
            All lead to state change => FINAL
        */

        // Time check
        if(getTimestamp() >= record.time_end) {
            // Funding Phase ended passed
            return getRecordState("FINAL");
        }

        // will trigger in pre-ico
        // Record Hard Cap Check
        if(AmountRaised >= record.amount_cap_hard) {
            // record hard cap reached
            return getRecordState("FINAL");
        }

        // will trigger in ico
        // Global Hard Cap Check
        if(AmountRaised >= GlobalAmountCapHard) {
            // hard cap reached
            return getRecordState("FINAL");
        }

        if( record.state == RecordStateRequired ) {
            RecordStateRequired = getRecordState("__IGNORED__");
        }

        return RecordStateRequired;
    }

    function doStateChanges() public {
        var (CurrentRecordState, RecordStateRequired, EntityStateRequired) = getRequiredStateChanges();
        bool callAgain = false;

        DebugRecordRequiredChanges( assetName, CurrentRecordState, RecordStateRequired );
        DebugEntityRequiredChanges( assetName, CurrentEntityState, EntityStateRequired );

        if( RecordStateRequired != getRecordState("__IGNORED__") ) {
            // process record changes.
            RecordProcessor(CurrentRecordState, RecordStateRequired);
            DebugCallAgain(2);
            callAgain = true;
        }

        if(EntityStateRequired != getEntityState("__IGNORED__") ) {
            // process entity changes.
            // if(CurrentEntityState != EntityStateRequired) {
            EntityProcessor(EntityStateRequired);
            DebugCallAgain(1);
            callAgain = true;
            //}
        }
    }

    function hasRequiredStateChanges() public view returns (bool) {
        bool hasChanges = false;

        var (CurrentRecordState, RecordStateRequired, EntityStateRequired) = getRequiredStateChanges();
        CurrentRecordState = 0;

        if( RecordStateRequired != getRecordState("__IGNORED__") ) {
            hasChanges = true;
        }
        if(EntityStateRequired != getEntityState("__IGNORED__") ) {
            hasChanges = true;
        }
        return hasChanges;
    }

    // view methods decide if changes are to be made
    // in case of tasks, we do them in the Processors.

    function RecordProcessor(uint8 CurrentRecordState, uint8 RecordStateRequired) internal {
        EventRecordProcessor( assetName, CurrentRecordState, RecordStateRequired );
        updateFundingStage( RecordStateRequired );
        if( RecordStateRequired == getRecordState("FINAL") ) {
            if(currentFundingStage < FundingStageNum) {
                // jump to next stage
                currentFundingStage++;
            }
        }
    }

    function EntityProcessor(uint8 EntityStateRequired) internal {
        EventEntityProcessor( assetName, CurrentEntityState, EntityStateRequired );

        // Do State Specific Updates
        // Update our Entity State
        CurrentEntityState = EntityStateRequired;

        if ( EntityStateRequired == getEntityState("FUNDING_ENDED") ) {
            /*
                STATE: FUNDING_ENDED
                @Processor hook
                Action: Check if funding is successful or not, and move state to "FAILED" or "SUCCESSFUL"
            */

            // Global Hard Cap Check
            if(AmountRaised >= GlobalAmountCapSoft) {
                // hard cap reached
                CurrentEntityState = getEntityState("SUCCESSFUL");
            } else {
                CurrentEntityState = getEntityState("FAILED");
            }
        }


    }

    /*
     * Method: Get Record and Entity State Changes
     *
     * @access       public
     * @type         method
     * @modifiers    onlyOwner
     *
     * @return       ( uint8 CurrentRecordState, uint8 RecordStateRequired, uint8 EntityStateRequired)
     */
    function getRequiredStateChanges() public view returns (uint8, uint8, uint8) {

        // get FundingStage current state
        FundingStage memory record = Collection[currentFundingStage];

        uint8 CurrentRecordState = record.state;
        uint8 RecordStateRequired = getRecordStateRequiredChanges();
        uint8 EntityStateRequired = getEntityState("__IGNORED__");


        // Funding Record State Overrides
        // if(CurrentRecordState != RecordStateRequired) {
        if(RecordStateRequired != getRecordState("__IGNORED__"))
        {
            // direct state overrides by funding stage
            if(RecordStateRequired == getRecordState("IN_PROGRESS") ) {
                // both funding stage and entity states need to move to IN_PROGRESS
                EntityStateRequired = getEntityState("IN_PROGRESS");

            } else if (RecordStateRequired == getRecordState("FINAL")) {
                // funding stage moves to FINAL

                if (currentFundingStage == FundingStageNum) {
                    // if current funding is last
                    EntityStateRequired = getEntityState("FUNDING_ENDED");
                }
                else {
                    // start cooldown between funding stages
                    EntityStateRequired = getEntityState("COOLDOWN");
                }
            }

        } else {

            // Records do not require any updates.
            // Do Entity Checks

            if( CurrentEntityState == getEntityState("NEW") ) {
                /*
                    STATE: NEW
                    Processor Action: Allocate Tokens to Funding / Owners then Update to WAITING
                */
                EntityStateRequired = getEntityState("WAITING");
            } else  if ( CurrentEntityState == getEntityState("FUNDING_ENDED") ) {
                /*
                    STATE: FUNDING_ENDED
                    Processor Action: Check if funding is successful or not, and move state to "SUCCESSFUL" or "FAILED"
                */
            } else if ( CurrentEntityState == getEntityState("SUCCESSFUL") ) {
                /*
                    STATE: SUCCESSFUL
                    Processor Action: none

                    External Action:
                    FundingManager - Run Internal Processor ( deliver tokens, deliver direct funding eth )
                */

                // check funding manager has processed the FUNDING_SUCCESSFUL Task, if true => FUNDING_SUCCESSFUL_DONE
                if(FundingManagerEntity.taskByHash( FundingManagerEntity.getHash("FUNDING_SUCCESSFUL_START", "") ) == true) {
                    EntityStateRequired = getEntityState("SUCCESSFUL_FINAL");
                }
                /*
                if( FundingManagerEntity.CurrentEntityState() == FundingManagerEntity.getEntityState("FUNDING_SUCCESSFUL_DONE") ) {
                    EntityStateRequired = getEntityState("SUCCESSFUL_FINAL");
                }
                */

            } else if ( CurrentEntityState == getEntityState("FAILED") ) {
                /*
                    STATE: FAILED
                    Processor Action: none

                    External Action:
                    FundingManager - Run Internal Processor (release tokens to owner) ( Cashback is available )
                */

                // check funding manager state, if FUNDING_NOT_PROCESSED -> getEntityState("__IGNORED__")
                // if FUNDING_FAILED_DONE

                if(FundingManagerEntity.taskByHash( FundingManagerEntity.getHash("FUNDING_FAILED_START", "") ) == true) {
                    EntityStateRequired = getEntityState("FAILED_FINAL");
                }
            } else if ( CurrentEntityState == getEntityState("SUCCESSFUL_FINAL") ) {
                /*
                    STATE: SUCCESSFUL_FINAL
                    Processor Action: none

                    External Action:
                    Application: Run Internal Processor ( Change State to IN_DEVELOPMENT )
                */
            } else if ( CurrentEntityState == getEntityState("FAILED_FINAL") ) {
                /*
                    STATE: FINAL_FAILED
                    Processor Action: none

                    External Action:
                    Application: Run Internal Processor ( Change State to FUNDING_FAILED )
                */
            }
        }

        return (CurrentRecordState, RecordStateRequired, EntityStateRequired);
    }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"GlobalAmountCapSoft","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTimestamp","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"name","type":"bytes32"}],"name":"getRecordState","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"StageId","type":"uint8"}],"name":"getStageAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_initialized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MilestoneInput","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint8"}],"name":"Collection","outputs":[{"name":"name","type":"bytes32"},{"name":"state","type":"uint8"},{"name":"time_start","type":"uint256"},{"name":"time_end","type":"uint256"},{"name":"amount_cap_soft","type":"uint256"},{"name":"amount_cap_hard","type":"uint256"},{"name":"amount_raised","type":"uint256"},{"name":"minimum_entry","type":"uint256"},{"name":"methods","type":"uint8"},{"name":"fixed_tokens","type":"uint256"},{"name":"price_addition_percentage","type":"uint8"},{"name":"token_share_percentage","type":"uint8"},{"name":"index","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"RecordNum","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TokenManagerEntity","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DirectInput","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"Funding_Setting_cashback_duration","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TokenSellPercentage","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"RecordStates","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_amount","type":"uint256"}],"name":"canAcceptPayment","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"FundingManagerEntity","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"AmountRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"EntityStates","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getApplicationState","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CurrentEntityState","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferToNewOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_name","type":"bytes32"}],"name":"getApplicationAssetAddressByName","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"Funding_Setting_cashback_before_start_wait_duration","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"FundingStageNum","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getRequiredStateChanges","outputs":[{"name":"","type":"uint8"},{"name":"","type":"uint8"},{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"multiSigOutputAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"bytes32"},{"name":"_time_start","type":"uint256"},{"name":"_time_end","type":"uint256"},{"name":"_amount_cap_soft","type":"uint256"},{"name":"_amount_cap_hard","type":"uint256"},{"name":"_methods","type":"uint8"},{"name":"_minimum_entry","type":"uint256"},{"name":"_fixed_tokens","type":"uint256"},{"name":"_price_addition_percentage","type":"uint8"},{"name":"_token_share_percentage","type":"uint8"}],"name":"addFundingStage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"GlobalAmountCapHard","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_sender","type":"address"},{"name":"_payment_method","type":"uint8"}],"name":"receivePayment","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"Funding_Setting_funding_time_end","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"applyAndLockSettings","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"Funding_Setting_funding_time_start","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_amount","type":"uint256"}],"name":"getValueOverCurrentCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getRecordStateRequiredChanges","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_new_state","type":"uint8"}],"name":"isFundingStageUpdateAllowed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"bytes32"}],"name":"setInitialOwnerAndName","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_ownerAddress","type":"address"}],"name":"setInitialApplicationAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"assetName","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"Funding_Setting_cashback_time_end","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_settingsApplied","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"name","type":"bytes32"}],"name":"getAppBylawBytes32","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"name","type":"bytes32"}],"name":"getEntityState","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_outputAddress","type":"address"},{"name":"soft_cap","type":"uint256"},{"name":"hard_cap","type":"uint256"},{"name":"sale_percentage","type":"uint8"},{"name":"_direct","type":"address"},{"name":"_milestone","type":"address"}],"name":"addSettings","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"name","type":"bytes32"}],"name":"getAppBylawUint256","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentFundingStage","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"deployerAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"name","type":"bytes32"}],"name":"getApplicationEntityState","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MilestoneAmountRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"Funding_Setting_cashback_time_start","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"doStateChanges","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"hasRequiredStateChanges","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_payment_method","type":"uint8"}],"name":"allowedPaymentMethod","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"index","type":"uint8"},{"indexed":true,"name":"name","type":"bytes32"}],"name":"FundingStageCreated","type":"event"},{"anonymous":false,"inputs":[],"name":"LifeCycle","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_assetName","type":"bytes32"},{"indexed":true,"name":"_current","type":"uint8"},{"indexed":true,"name":"_required","type":"uint8"}],"name":"DebugRecordRequiredChanges","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_who","type":"uint8"}],"name":"DebugCallAgain","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_assetName","type":"bytes32"},{"indexed":true,"name":"_current","type":"uint8"},{"indexed":true,"name":"_required","type":"uint8"}],"name":"EventEntityProcessor","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_assetName","type":"bytes32"},{"indexed":true,"name":"_current","type":"uint8"},{"indexed":true,"name":"_required","type":"uint8"}],"name":"EventRecordProcessor","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_name","type":"bytes32"},{"indexed":true,"name":"_allowed","type":"bool"}],"name":"DebugAction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_sender","type":"address"},{"indexed":true,"name":"_payment_method","type":"uint8"},{"indexed":true,"name":"_amount","type":"uint256"}],"name":"EventFundingReceivedPayment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_name","type":"bytes32"},{"indexed":true,"name":"_owner","type":"address"}],"name":"EventAppAssetOwnerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_name","type":"bytes32"}],"name":"EventRunBeforeInit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_name","type":"bytes32"}],"name":"EventRunBeforeApplyingSettings","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_assetName","type":"bytes32"},{"indexed":true,"name":"_current","type":"uint8"},{"indexed":true,"name":"_required","type":"uint8"}],"name":"DebugEntityRequiredChanges","type":"event"}]

606060405260048054600160b860020a0319169055600c805461ffff19166101001790556000600d819055600e819055600f81905560108190556011805460ff1916905560128190556013819055601481905560155562093a806016556301e133806017556005805433600160a060020a0316600160a060020a03199091161790556125bd806100906000396000f300606060405236156102565763ffffffff60e060020a600035041663036478c1811461025b578063188ec356146102805780631af86866146102935780631d4eae77146102bf5780633072cf60146102d8578063320a5018146102ff57806345f9ac2e1461032e5780634a1a650d146103bd57806351fc6f59146103d05780635d4dda72146103e35780635e593cd3146103f657806360425c481461040957806362e2f9941461041c57806369d196e1146104325780636ad49245146104485780636c5265031461045b5780636d0a11c31461046e57806370c0f689146104845780637278d623146104975780637372e9be146104aa5780637c5c7845146104c95780637d722a30146104df57806382d29195146104f257806388db84bc146105055780638da5cb5b146105435780639880472f14610556578063a45c685814610569578063a883aab3146105a9578063aa6a3c74146105bc578063ada65728146105d6578063af653861146105e9578063affd0dd4146105fc578063b2482bbd1461060f578063b4b1b6d914610625578063b82cf4a514610638578063b84e183a14610651578063bc9121cf14610667578063c9230c5d14610686578063cee8fa1f14610699578063ddb9769c146106ac578063df077c74146106bf578063e490c513146106d5578063e6a89721146106eb578063ed031ae314610725578063ee1e61b21461073b578063efdee94f1461074e578063f01b1dc114610761578063f726af4014610777578063f8408a8d1461078a578063f86282da1461079d578063fa9d2352146107b0578063fff56a33146107c3575b600080fd5b341561026657600080fd5b61026e6107dc565b60405190815260200160405180910390f35b341561028b57600080fd5b61026e6107e2565b341561029e57600080fd5b6102a96004356107e6565b60405160ff909116815260200160405180910390f35b34156102ca57600080fd5b61026e60ff600435166107fe565b34156102e357600080fd5b6102eb610816565b604051901515815260200160405180910390f35b341561030a57600080fd5b610312610824565b604051600160a060020a03909116815260200160405180910390f35b341561033957600080fd5b61034760ff60043516610833565b6040519c8d5260ff9b8c1660208e01526040808e019b909b5260608d019990995260808c019790975260a08b019590955260c08a019390935260e08901919091528616610100880152610120870152841661014086015283166101608501529091166101808301526101a0909101905180910390f35b34156103c857600080fd5b6102a96108a6565b34156103db57600080fd5b6103126108af565b34156103ee57600080fd5b6103126108be565b341561040157600080fd5b61026e6108cd565b341561041457600080fd5b6102a96108d3565b341561042757600080fd5b6102a96004356108dc565b341561043d57600080fd5b6102eb6004356108f1565b341561045357600080fd5b610312610943565b341561046657600080fd5b61026e610952565b341561047957600080fd5b6102a9600435610958565b341561048f57600080fd5b6102a961096d565b34156104a257600080fd5b6102a96109dd565b34156104b557600080fd5b6102eb600160a060020a03600435166109e6565b34156104d457600080fd5b610312600435610acc565b34156104ea57600080fd5b61026e610b59565b34156104fd57600080fd5b6102a9610b5f565b341561051057600080fd5b610518610b68565b60405160ff938416815291831660208301529091166040808301919091526060909101905180910390f35b341561054e57600080fd5b610312611117565b341561056157600080fd5b61031261112d565b341561057457600080fd5b6105a760043560243560443560643560843560ff60a43581169060c4359060e4359061010435811690610124351661113c565b005b34156105b457600080fd5b61026e611316565b6102eb600160a060020a036004351660ff6024351661131c565b34156105e157600080fd5b61026e61152e565b34156105f457600080fd5b6102eb611534565b341561060757600080fd5b61026e6115a1565b341561061a57600080fd5b61026e6004356115a7565b341561063057600080fd5b6102a9611699565b341561064357600080fd5b6102eb60ff60043516611887565b341561065c57600080fd5b6102eb6004356118c4565b341561067257600080fd5b6105a7600160a060020a03600435166119a7565b341561069157600080fd5b61026e611a10565b34156106a457600080fd5b61026e611a16565b34156106b757600080fd5b6102eb611a1c565b34156106ca57600080fd5b61026e600435611a2b565b34156106e057600080fd5b6102a9600435611ac5565b34156106f657600080fd5b6105a7600160a060020a03600435811690602435906044359060ff606435169060843581169060a43516611ada565b341561073057600080fd5b61026e600435611bae565b341561074657600080fd5b6102a9611c27565b341561075957600080fd5b610312611c35565b341561076c57600080fd5b6102a9600435611c44565b341561078257600080fd5b61026e611cbe565b341561079557600080fd5b61026e611cc4565b34156107a857600080fd5b6105a7611cca565b34156107bb57600080fd5b6102eb611e21565b34156107ce57600080fd5b6102eb60ff60043516611e92565b600f5481565b4290565b60008181526001602052604090205460ff165b919050565b60ff166000908152600b602052604090206009015490565b600454610100900460ff1681565b600854600160a060020a031681565b600b60205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a909a0154989960ff98891699979896979596949593949293918316929091808216916101008204811691620100009004168d565b60045460ff1681565b600954600160a060020a031681565b600754600160a060020a031681565b60175481565b60115460ff1681565b60016020526000908152604090205460ff1681565b60008082111561093b57610912600080516020612572833981519152611ac5565b60025460ff908116911614801561092e575061092c611e21565b155b1561093b575060016107f9565b506000919050565b600a54600160a060020a031681565b600d5481565b60006020819052908152604090205460ff1681565b60045460009063010000009004600160a060020a0316637278d62382604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156109be57600080fd5b6102c65a03f115156109cf57600080fd5b505050604051805191505090565b60025460ff1681565b60045460009060ff610100909104161515600114610a0357600080fd5b60045433600160a060020a0390811663010000009092041614610a2557600080fd5b60045463010000009004600160a060020a031615801590610a4e5750600160a060020a03821615155b1515610a5957600080fd5b6004805476ffffffffffffffffffffffffffffffffffffffff00000019166301000000600160a060020a0385811682029290921792839055600354920416907f6f7b0a882e7ac0b47fcdb9814cfdaef1622128fa5d29e3318c730c3a5301e8c460405160405180910390a3506001919050565b600454600090819063010000009004600160a060020a031663689216c784836040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610b2857600080fd5b6102c65a03f11515610b3957600080fd5b5050506040518051915050600160a060020a038116156102565792915050565b60165481565b600c5460ff1681565b6000806000610b756124e5565b600c54610100900460ff166000908152600b602052604080822082918291906101a09051908101604090815282548252600183015460ff908116602084019081526002850154928401929092526003840154606084015260048401546080840152600584015460a0840152600684015460c0840152600784015460e084015260088401548116610100808501919091526009850154610120850152600a909401548082166101408501529384048116610160840152620100009093049092166101808201529450519250610c47611699565b9150610c60600080516020612552833981519152611ac5565b9050610c796000805160206125528339815191526107e6565b60ff838116911614610d5757610c9c6000805160206125728339815191526107e6565b60ff168260ff161415610cc757610cc0600080516020612572833981519152611ac5565b9050610d52565b610cdb60da60020a641192539053026107e6565b60ff168260ff161415610d5257600c54610100810460ff90811691161415610d2657610cc07f46554e44494e475f454e44454400000000000000000000000000000000000000611ac5565b610d4f7f434f4f4c444f574e000000000000000000000000000000000000000000000000611ac5565b90505b61110a565b610d807f4e45570000000000000000000000000000000000000000000000000000000000611ac5565b60025460ff90811691161415610db957610d4f7f57414954494e4700000000000000000000000000000000000000000000000000611ac5565b610de27f46554e44494e475f454e44454400000000000000000000000000000000000000611ac5565b60025460ff90811691161415610df75761110a565b610e207f5355434345535346554c00000000000000000000000000000000000000000000611ac5565b60025460ff90811691161415610f4c57600a54600160a060020a0316635eaf43b2816380c9597f60006040516020015260405160e060020a63ffffffff83160281527f46554e44494e475f5355434345535346554c5f535441525400000000000000006004820152604401602060405180830381600087803b1515610ea457600080fd5b6102c65a03f11515610eb557600080fd5b5050506040518051905060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610efe57600080fd5b6102c65a03f11515610f0f57600080fd5b50505060405180511515600114159050610d5257610d4f7f5355434345535346554c5f46494e414c00000000000000000000000000000000611ac5565b610f757f4641494c45440000000000000000000000000000000000000000000000000000611ac5565b60025460ff908116911614156110a157600a54600160a060020a0316635eaf43b2816380c9597f60006040516020015260405160e060020a63ffffffff83160281527f46554e44494e475f4641494c45445f53544152540000000000000000000000006004820152604401602060405180830381600087803b1515610ff957600080fd5b6102c65a03f1151561100a57600080fd5b5050506040518051905060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561105357600080fd5b6102c65a03f1151561106457600080fd5b50505060405180511515600114159050610d5257610d4f7f4641494c45445f46494e414c0000000000000000000000000000000000000000611ac5565b6110ca7f5355434345535346554c5f46494e414c00000000000000000000000000000000611ac5565b60025460ff908116911614156110df5761110a565b6111087f4641494c45445f46494e414c0000000000000000000000000000000000000000611ac5565b505b9196909550909350915050565b60045463010000009004600160a060020a031681565b600654600160a060020a031681565b600554600090819033600160a060020a0390811691161461115c57600080fd5b60045460ff61010090910416151560011461117657600080fd5b60045462010000900460ff161561118c57600080fd5b8a8a1161119857600080fd5b8715156111a457600080fd5b878911156111b157600080fd5b60008360ff1611156111c257600080fd5b600c5460ff166000818152600b6020526040812093509011156111ef5760038201548b116111ef57600080fd5b50600c805460ff19808216600160ff9384160183169081179093556000928352600b60205260409092208d8155600281018d9055600381018c9055600481018b9055600581018a905560088101805484168a84161790556007810188905560098101879055600a810180549093168683161761ff00191661010092861692909202919091179091556112a07f4e455700000000000000000000000000000000000000000000000000000000006107e6565b60018201805460ff191660ff928316179055600c8054600a8401805462ff000019169184166201000002919091179055548d91167f3f2ac3d1681471693727b52413a34b20939976672ca55f42a805c7f39a8697b160405160405180910390a3611308611ebe565b505050505050505050505050565b60105481565b6004546000908190819060ff61010090910416151560011461133d57600080fd5b600160a060020a0333161580159061137b575060075433600160a060020a039081169116148061137b575060085433600160a060020a039081169116145b151561138657600080fd5b61138f84611e92565b801561139f575061139f346108f1565b15610256573491506113b0826115a7565b905060008111156113c15780820391505b600c5460ff61010090910481166000908152600b60205260409020600601805484019055600d80548401905584166002141561140057600e8054830190555b818460ff1686600160a060020a03167fe7ec0531ca32bb8a638c1c296e76cf0ae44f89aa2edf39aa5df8aca499ed90d960405160405180910390a4600a54600c54600160a060020a039091169063c357907290849088908890610100900460ff1660006040516020015260405160e060020a63ffffffff8716028152600160a060020a03909316600484015260ff91821660248401521660448201526064016020604051808303818588803b15156114b757600080fd5b6125ee5a03f115156114c857600080fd5b5050505060405180519050156102565760008111156115215784600160a060020a03166108fc30600160a060020a0316319081150290604051600060405180830381858888f19350505050156102565760019250611526565b600192505b505092915050565b60135481565b60055460009033600160a060020a0390811691161461155257600080fd5b60045460ff61010090910416151560011461156c57600080fd5b60045462010000900460ff161561158257600080fd5b61158a611f12565b506004805462ff0000191662010000179055600190565b60125481565b60006115b16124e5565b600c54610100900460ff166000908152600b6020526040808220906101a09051908101604090815282548252600183015460ff90811660208401526002840154918301919091526003830154606083015260048301546080830152600583015460a08301908152600684015460c0840152600784015460e084015260088401548216610100808501919091526009850154610120850152600a9094015480831661014085015293840482166101608401526201000090930416610180820152600d5490935090510390508084111561168d578084039250611692565b600092505b5050919050565b60006116a36124e5565b600c54610100900460ff166000908152600b6020526040808220906101a09051908101604090815282548252600183015460ff90811660208401526002840154918301919091526003830154606083015260048301546080830152600583015460a0830152600683015460c0830152600783015460e083015260088301548116610100808401919091526009840154610120840152600a90930154808216610140840152928304811661016083015262010000909204909116610180820152915061177b6000805160206125528339815191526107e6565b905061179160da60020a641192539053026107e6565b60ff16826020015160ff1614156117c0576117b96000805160206125528339815191526107e6565b9250611882565b81604001516117cd6107e2565b106117ec576117e96000805160206125728339815191526107e6565b90505b81606001516117f96107e2565b10611812576117b960da60020a641192539053026107e6565b8160a00151600d5410611833576117b960da60020a641192539053026107e6565b601054600d5410611852576117b960da60020a641192539053026107e6565b8060ff16826020015160ff16141561187e5761187b6000805160206125528339815191526107e6565b90505b8092505b505090565b600080600080611895610b68565b506000945092508391505060ff85811690831614156118b757600193506118bc565b600093505b505050919050565b600454600090610100900460ff16156118dc57600080fd5b60045433600160a060020a03908116630100000090920416146118fe57600080fd5b611906611f73565b60038290556119347f4e45570000000000000000000000000000000000000000000000000000000000611ac5565b6002805460ff191660ff929092169190911790556119506121dd565b6004805461ff0019166101001790819055600160a060020a03630100000090910416827f6f7b0a882e7ac0b47fcdb9814cfdaef1622128fa5d29e3318c730c3a5301e8c460405160405180910390a3506001919050565b60055433600160a060020a039081169116146119c257600080fd5b600454610100900460ff16156119d757600080fd5b60048054600160a060020a0390921663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909216919091179055565b60035481565b60155481565b60045462010000900460ff1681565b600454600090819060ff610100909104161515600114611a4a57600080fd5b5060045463010000009004600160a060020a03168063ee44da7e8460006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515611aa457600080fd5b6102c65a03f11515611ab557600080fd5b5050506040518051949350505050565b60009081526020819052604090205460ff1690565b60045460ff610100909104161515600114611af457600080fd5b60045462010000900460ff1615611b0a57600080fd5b83851115611b1757600080fd5b6006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038816179055600f8590556010849055605a60ff84161115611b5a57600080fd5b6011805460ff191660ff94909416939093179092556007805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03938416179091556008805490911691909216179055505050565b600454600090819060ff610100909104161515600114611bcd57600080fd5b5060045463010000009004600160a060020a03168063b44ce8938460006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515611aa457600080fd5b600c54610100900460ff1681565b600554600160a060020a031681565b60045460009063010000009004600160a060020a031663e490c51383836040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515611c9e57600080fd5b6102c65a03f11515611caf57600080fd5b50505060405180519392505050565b600e5481565b60145481565b600080600080611cd8610b68565b935093509350600090508260ff168460ff16600354600019167f956147267a6d7deef0b7e79c40af83c9d24edfd649b3bd71b82e9728a550116a60405160405180910390a460025460035460ff8085169216907fac3b1b9b04941d61d4294b1f52e47d24e8b1ab590d5775302fdd5108e15f43ee9060405190815260200160405180910390a3611d756000805160206125528339815191526107e6565b60ff848116911614611dbd57611d8b84846122cf565b60027fc95f70c179d14f283454d49fbae175e3f3b35bc4e70702d2dd1bb4433ea337e360405160405180910390a25060015b611dd4600080516020612552833981519152611ac5565b60ff838116911614611e1b57611de98261236e565b60017fc95f70c179d14f283454d49fbae175e3f3b35bc4e70702d2dd1bb4433ea337e360405160405180910390a25060015b50505050565b600080808080611e2f610b68565b92509250925060009250611e506000805160206125528339815191526107e6565b60ff838116911614611e6157600193505b611e78600080516020612552833981519152611ac5565b60ff828116911614611e8957600193505b50919392505050565b600060ff821660011480611ea9575060ff82166002145b15611eb6575060016107f9565b5060006107f9565b600b6020527f72c6bfb7988af3a1efa6568f02a999bc52252641c659d85961ca3d372b57d5d154601255600c5460ff1660009081526040902060030154601381905560165401601481905560175401601555565b60045460ff610100909104161515600114611f2c57600080fd5b60045462010000900460ff1615611f4257600080fd5b6003547fce50d83c2c178553c51fe8a83d1af61967b308e4ae48086d6526816b465e2f4960405160405180910390a2565b7f82aa092d4c801429a1fff0e42bdcbb41efc63176230d4f4542b13200afb562e8805460ff199081169091557f26c6da47b1522bc44b5826073c13ff8f683a2d7bcb3e45f089817656015efae98054821660019081179091557f0b472e849ed7e57c6860ab569920f9b20f7226a8f60486df39cb8dfdc32464b98054831660029081179091557fe1852c911ae9281e8c431a486a1f2fd441b387467627ddf512a43b43f86d1cc78054841660039081179091557fb997addad2620a20a23f1cf6eeb618090efe54c484a86e0be78f34f9474fbfac8054851660041790557fbdbc538e8fbb35a870ade4e876e27790e1fa93636fd1ddd20aa212c09c80cd8c8054851660051790557fa66286b58a98a32803336b02a0f95df2ec39c4de784012d027e2e752715e0c0c8054851660061790557fe89ecb4934cfa16361acaf3ff01e7b2587e1811aa775beb9d0cec05d88a2d3ab8054851660071790557fa5df57aafca4d1cf024ebd18f37c5ce4c5f7ff4b070316b1149a06f6eb364e098054851660081790557fe16000a96e1c3e84c23020f7d3b23f5c8cfed2c0e3f3d0fdd63c7fd5d1421d9a80548516600917905560208390527fe4f12cd7531d4b60d6f694b938f9d161e42f7945d6c7e248621b398180482b728054851690557f7682888ea2773830b81e9e9056ddc00853b3dd35cbcafb959db81dd2dcc07110805485169093179092557f6db836eb07cc6ffcaaa17c6971ee87212301b5066365d6c838e86bfa1606207580548416909117905560da60020a641192539053026000527f4fae28347d557af6011a222037aaa8b50d57a888c752b4548eb028b7c83841af8054909216179055565b600454610100900460ff16156121f257600080fd5b61221b7f546f6b656e4d616e616765720000000000000000000000000000000000000000610acc565b6009805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790556122717f46756e64696e674d616e61676572000000000000000000000000000000000000610acc565b600a805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790556003547f6bec69c1d4de72551859e2a42d5f8b4bbb7e6cde7f27a338ad426e098257dfba60405160405180910390a2565b8060ff168260ff16600354600019167f3281ea73b425fee0923ece93ebd39079b597f6fd3913064a2b4cb9c48f20a26c60405160405180910390a46123138161247b565b5061232860da60020a641192539053026107e6565b60ff168160ff16141561236a57600c5460ff80821661010090920416101561236a57600c805460ff61010080830482166001019091160261ff00199091161790555b5050565b60025460035460ff8084169216907fa711172fadfeaff9adc3ca2a0ec885d631e96cc1d79e20a1603a1d535966729a60405160405180910390a46002805460ff191660ff83161790556123e07f46554e44494e475f454e44454400000000000000000000000000000000000000611ac5565b60ff168160ff16141561247857600f54600d541061243a576124217f5355434345535346554c00000000000000000000000000000000000000000000611ac5565b6002805460ff191660ff92909216919091179055612478565b6124637f4641494c45440000000000000000000000000000000000000000000000000000611ac5565b6002805460ff191660ff929092169190911790555b50565b600454600090819060ff61010090910416151560011461249a57600080fd5b826124a481611887565b15156124af57600080fd5b5050600c54610100900460ff9081166000908152600b602052604090206001908101805460ff1916949092169390931790555090565b6101a06040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a0820181905260c0820181905260e0820181905261010082018190526101208201819052610140820181905261016082018190526101808201529056005f5f49474e4f5245445f5f000000000000000000000000000000000000000000494e5f50524f4752455353000000000000000000000000000000000000000000a165627a7a723058207a4f8c16f2b88a018941bed5d9ea86095385b4ce913d51d370e260ccaf709e820029

Swarm Source

bzzr://7a4f8c16f2b88a018941bed5d9ea86095385b4ce913d51d370e260ccaf709e82
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.