Contract 0x30f938fed5de6e06a9a7cd2ac3517131c317b1e7

 

TxHash Block Age From To Value [TxFee]
0xea89b60d71dd71d5c08da7f9fbcc805751a7db67571707cdab6116e83bda185272331634 hrs 14 mins ago0xa27243046e16ee596d19ff3091719160527e469a  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.000826475
0x544a240d6b7e62e97c988148ab2d685b943dfaadde08e65dbb02bb4a430b93cf72328336 hrs 5 mins ago0xa21ada383dd22ed7c98c95937fd13c12597be721  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.000043618
0x3657d6dae79fc25edee0627794cae01012f5bf093dafdc594381a9ae64ae18ee72328336 hrs 5 mins ago0xdaa172456f5815256831aee19c8a370a83522871  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.000080535
0x992a6215066b614e92745bd99060e1a35d346104c42db595d02e13a79b3df48e723069018 hrs 17 mins ago0xa27243046e16ee596d19ff3091719160527e469a  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.000825835
0x24ac8026efa831329597a62c37e92eea9afa90cf3cc84864c1a8b8b4db15d36d723068518 hrs 20 mins ago0xa27243046e16ee596d19ff3091719160527e469a  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.000825835
0xf73907f370ac7e380b1b8246a3c91828b1a4262e465a088ce30c277b4a3e2b1d722979223 hrs 31 mins ago0xa27243046e16ee596d19ff3091719160527e469a  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.0006845858
0xae8618a61387c829c8e4c7e529e9767634702021d6962d456fa40d769551a21272284721 day 6 hrs ago0xa27243046e16ee596d19ff3091719160527e469a  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.0007426755
0xf26563d29c69517a584efce13331a8e338c4fef4d92c611ae0eb3e1ad1b4358072242152 days 7 hrs ago0xdaa172456f5815256831aee19c8a370a83522871  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.00088324
0x4c85ff95aa2954c446c2ddb4011563a33f342a75c31183bc0ee722b0a3d8c1db72241922 days 7 hrs ago0xdaa172456f5815256831aee19c8a370a83522871  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.000204022
0x8aaa1d6dc9e710da60d38edccccda4c94dc7a991add594737b85cca5c0da261572185453 days 16 hrs ago0xa78999e755f33e25c8255b9b1fcf1cca552d23e4  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e71 Ether0.0001424057
0xe2fe564e092ad1e5db4d171b504adbe3082b6f3bb09cb691cb8210dde258deb572153954 days 10 hrs ago0x839395e20bbb182fa440d08f850e6c7a8f6f0780  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.000170085
0xda79d910b9ee72921ea9ee78ae0f79b8ec58ac1f4beed2c5fa918b8c8d9787cc72153424 days 10 hrs ago0x839395e20bbb182fa440d08f850e6c7a8f6f0780  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70.3 Ether0.00025863
0xc440cfa9dd234ba0456fc696f1de603a1f063fa56e4e76f31f31a9e73b510fa172153094 days 10 hrs ago0x839395e20bbb182fa440d08f850e6c7a8f6f0780  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.000170085
0x3a6f969325c7d56dfef71909186a01c5bb652814563989ad4522b520ea2e087072152034 days 11 hrs ago0xa27243046e16ee596d19ff3091719160527e469a  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.000495309
0x0ad7b9c9d71b54d888df160ca00e7e92924f936cad262e95543255863cd0a11872149624 days 12 hrs ago0xc1d5fd1f0d969075040988e37df3643af724995d  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70.4261 Ether0.0000593934
0x0d95d7efbef32f7714ea3841b1ac18fc4e2c48927ea0f98565f2c641ff405f4b72139034 days 18 hrs ago0x839395e20bbb182fa440d08f850e6c7a8f6f0780  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70.5 Ether0.000129315
0x3eaf83c90d76a729ce1f43308edc1c2976242dfc0a9f108de12f5ed65b0070e872119445 days 5 hrs ago0xa27243046e16ee596d19ff3091719160527e469a  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.000330206
0xeebc705965afb8d41b9d20efba73cc0ed156efba94975454f754ee012045bbe772091865 days 21 hrs ago0x8a1239fe1b3e2353b4b846dfd3ebf654e6a72f1e  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.000136324
0xc7721c0d0730577af4f81ba3fca8636a8eba281d3eab02973bdf400e43f219a872091765 days 21 hrs ago0x8a1239fe1b3e2353b4b846dfd3ebf654e6a72f1e  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e77.73 Ether0.000103452
0x852ff2e7fea103104edaafc13c5ea63b2b45589504a241a36bebd44d146c144272091705 days 21 hrs ago0x8a1239fe1b3e2353b4b846dfd3ebf654e6a72f1e  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e76 Ether0.0001163835
0x4e1cd2251e27f82a647bb6f3db1f081a0b9210b82aad62457615db9c866c302772091695 days 21 hrs ago0x8a1239fe1b3e2353b4b846dfd3ebf654e6a72f1e  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e73 Ether0.000077589
0x70b44fa6eff44adbf8989ebda7cd40fa6e81d2ea0315ad8454616dcf6d5da69672091695 days 21 hrs ago0x8a1239fe1b3e2353b4b846dfd3ebf654e6a72f1e  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e72 Ether0.000051598
0xd4e29678bd019ac5127aa4b07ecaae1eb1ae021a009fdc9b7e0f94ac3088d69172091585 days 21 hrs ago0x8a1239fe1b3e2353b4b846dfd3ebf654e6a72f1e  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e74 Ether0.000077397
0x6dff1c7f36cdaca2b8e6f8a8d5e9859617808a27ae2b2461f8620fd0b458db7272091555 days 21 hrs ago0x8a1239fe1b3e2353b4b846dfd3ebf654e6a72f1e  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e75 Ether0.000077589
0xa21a3e740e9745b6ab1dfcc7bf4dc85034755e2b5e1d5dbbbc76441e7efd768c72090625 days 22 hrs ago0x8a1239fe1b3e2353b4b846dfd3ebf654e6a72f1e  IN   0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70 Ether0.000068034
[ Download CSV Export 

Latest 25 Internal Transaction, Click here to view more Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0x2c1a4211b0aa9b1c7b978198c0ef4cac322f00868f47c689fb4c738036ce68d871935859 days 8 hrs ago0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70x0ab9f80940ceb9cfeae8a7412d41177531a3411f5.37485 Ether
0x2c1a4211b0aa9b1c7b978198c0ef4cac322f00868f47c689fb4c738036ce68d871935859 days 8 hrs ago0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70xaa74e9014e224c5c85704958116b7e1eca9e769a4.912850307587149692 Ether
0x706c65902bf457b4e79c88db3ff3a23d7072571e12971da91607608b08baea19718437711 days 5 hrs ago0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70x778549eb292ac98a96a05e122967f22efa0037070.507055225909216 Ether
0x706c65902bf457b4e79c88db3ff3a23d7072571e12971da91607608b08baea19718437711 days 5 hrs ago0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70x839395e20bbb182fa440d08f850e6c7a8f6f078024.47 Ether
0x706c65902bf457b4e79c88db3ff3a23d7072571e12971da91607608b08baea19718437711 days 5 hrs ago0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70x839395e20bbb182fa440d08f850e6c7a8f6f078079.977399866168195806 Ether
0x706c65902bf457b4e79c88db3ff3a23d7072571e12971da91607608b08baea19718437711 days 5 hrs ago0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70x839395e20bbb182fa440d08f850e6c7a8f6f07800.215026378024376933 Ether
0x586d38c1b4b751346647f1ed2282911624e222ced1a1942d440e2ce74fc6a244717493013 days 3 hrs ago0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70xe7f3722a36f1a08c4db998122553785d94081ebf0.984464732734501546 Ether
0x586d38c1b4b751346647f1ed2282911624e222ced1a1942d440e2ce74fc6a244717493013 days 3 hrs ago0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70x839395e20bbb182fa440d08f850e6c7a8f6f07802.85548760702406237 Ether
0x586d38c1b4b751346647f1ed2282911624e222ced1a1942d440e2ce74fc6a244717493013 days 3 hrs ago0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70x839395e20bbb182fa440d08f850e6c7a8f6f07809.191551151500238077 Ether
0x586d38c1b4b751346647f1ed2282911624e222ced1a1942d440e2ce74fc6a244717493013 days 3 hrs ago0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70x839395e20bbb182fa440d08f850e6c7a8f6f07805.44495225661342635 Ether
0x5918b5f24b325a3b8952760da8947a40183e78dd7f4e9a6c25bcdf8156ad097d717435013 days 6 hrs ago0xcbd901db55c9139828f7b5d5cbfd5afeab01d0660x30f938fed5de6e06a9a7cd2ac3517131c317b1e70.04 Ether
0x1558d9df5767f92986e0f395cc876e837421a8065678ff1469fbae9cfae90ce2716979014 days 4 hrs ago0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70x5f48465bb9a29a3904a8d320146e78640df0e96e0.32 Ether
0x1558d9df5767f92986e0f395cc876e837421a8065678ff1469fbae9cfae90ce2716979014 days 4 hrs ago0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70x5f48465bb9a29a3904a8d320146e78640df0e96e0.53 Ether
0x1558d9df5767f92986e0f395cc876e837421a8065678ff1469fbae9cfae90ce2716979014 days 4 hrs ago0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70x5f48465bb9a29a3904a8d320146e78640df0e96e0.32 Ether
0x1558d9df5767f92986e0f395cc876e837421a8065678ff1469fbae9cfae90ce2716979014 days 4 hrs ago0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70xc47e1364a202376ebcd1304837f0c80d6fbf4d6c1.42 Ether
0x1558d9df5767f92986e0f395cc876e837421a8065678ff1469fbae9cfae90ce2716979014 days 4 hrs ago0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70xc47e1364a202376ebcd1304837f0c80d6fbf4d6c0.77 Ether
0x1558d9df5767f92986e0f395cc876e837421a8065678ff1469fbae9cfae90ce2716979014 days 4 hrs ago0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70xc47e1364a202376ebcd1304837f0c80d6fbf4d6c1.27 Ether
0x1558d9df5767f92986e0f395cc876e837421a8065678ff1469fbae9cfae90ce2716979014 days 4 hrs ago0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70x5f48465bb9a29a3904a8d320146e78640df0e96e1.42 Ether
0x1558d9df5767f92986e0f395cc876e837421a8065678ff1469fbae9cfae90ce2716979014 days 4 hrs ago0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70x5f48465bb9a29a3904a8d320146e78640df0e96e1.82 Ether
0x1558d9df5767f92986e0f395cc876e837421a8065678ff1469fbae9cfae90ce2716979014 days 4 hrs ago0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70xc47e1364a202376ebcd1304837f0c80d6fbf4d6c0.42 Ether
0x1558d9df5767f92986e0f395cc876e837421a8065678ff1469fbae9cfae90ce2716979014 days 4 hrs ago0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70xc47e1364a202376ebcd1304837f0c80d6fbf4d6c0.32 Ether
0x1558d9df5767f92986e0f395cc876e837421a8065678ff1469fbae9cfae90ce2716979014 days 4 hrs ago0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70xc47e1364a202376ebcd1304837f0c80d6fbf4d6c0.37 Ether
0x1558d9df5767f92986e0f395cc876e837421a8065678ff1469fbae9cfae90ce2716979014 days 4 hrs ago0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70xc47e1364a202376ebcd1304837f0c80d6fbf4d6c0.77 Ether
0x1558d9df5767f92986e0f395cc876e837421a8065678ff1469fbae9cfae90ce2716979014 days 4 hrs ago0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70xc47e1364a202376ebcd1304837f0c80d6fbf4d6c0.42 Ether
0x1558d9df5767f92986e0f395cc876e837421a8065678ff1469fbae9cfae90ce2716979014 days 4 hrs ago0x30f938fed5de6e06a9a7cd2ac3517131c317b1e70xc47e1364a202376ebcd1304837f0c80d6fbf4d6c0.32 Ether
[ Download CSV Export 
Warning: The compiled contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) Solidity Compiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: GivethBridge
Compiler Version: v0.4.21+commit.dfe3193c
Optimization Enabled: Yes
Runs (Optimizer):  200


Contract Source Code
///File: giveth-common-contracts/contracts/ERC20.sol

pragma solidity ^0.4.19;


/**
 * @title ERC20
 * @dev A standard interface for tokens.
 * @dev https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md
 */
contract ERC20 {
  
    /// @dev Returns the total token supply
    function totalSupply() public constant returns (uint256 supply);

    /// @dev Returns the account balance of the account with address _owner
    function balanceOf(address _owner) public constant returns (uint256 balance);

    /// @dev Transfers _value number of tokens to address _to
    function transfer(address _to, uint256 _value) public returns (bool success);

    /// @dev Transfers _value number of tokens from address _from to address _to
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);

    /// @dev Allows _spender to withdraw from the msg.sender's account up to the _value amount
    function approve(address _spender, uint256 _value) public returns (bool success);

    /// @dev Returns the amount which _spender is still allowed to withdraw from _owner
    function allowance(address _owner, address _spender) public constant returns (uint256 remaining);

    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);

}


///File: giveth-common-contracts/contracts/Owned.sol

pragma solidity ^0.4.19;


/// @title Owned
/// @author Adrià Massanet <[email protected]>
/// @notice The Owned contract has an owner address, and provides basic 
///  authorization control functions, this simplifies & the implementation of
///  user permissions; this contract has three work flows for a change in
///  ownership, the first requires the new owner to validate that they have the
///  ability to accept ownership, the second allows the ownership to be
///  directly transfered without requiring acceptance, and the third allows for
///  the ownership to be removed to allow for decentralization 
contract Owned {

    address public owner;
    address public newOwnerCandidate;

    event OwnershipRequested(address indexed by, address indexed to);
    event OwnershipTransferred(address indexed from, address indexed to);
    event OwnershipRemoved();

    /// @dev The constructor sets the `msg.sender` as the`owner` of the contract
    function Owned() public {
        owner = msg.sender;
    }

    /// @dev `owner` is the only address that can call a function with this
    /// modifier
    modifier onlyOwner() {
        require (msg.sender == owner);
        _;
    }
    
    /// @dev In this 1st option for ownership transfer `proposeOwnership()` must
    ///  be called first by the current `owner` then `acceptOwnership()` must be
    ///  called by the `newOwnerCandidate`
    /// @notice `onlyOwner` Proposes to transfer control of the contract to a
    ///  new owner
    /// @param _newOwnerCandidate The address being proposed as the new owner
    function proposeOwnership(address _newOwnerCandidate) public onlyOwner {
        newOwnerCandidate = _newOwnerCandidate;
        OwnershipRequested(msg.sender, newOwnerCandidate);
    }

    /// @notice Can only be called by the `newOwnerCandidate`, accepts the
    ///  transfer of ownership
    function acceptOwnership() public {
        require(msg.sender == newOwnerCandidate);

        address oldOwner = owner;
        owner = newOwnerCandidate;
        newOwnerCandidate = 0x0;

        OwnershipTransferred(oldOwner, owner);
    }

    /// @dev In this 2nd option for ownership transfer `changeOwnership()` can
    ///  be called and it will immediately assign ownership to the `newOwner`
    /// @notice `owner` can step down and assign some other address to this role
    /// @param _newOwner The address of the new owner
    function changeOwnership(address _newOwner) public onlyOwner {
        require(_newOwner != 0x0);

        address oldOwner = owner;
        owner = _newOwner;
        newOwnerCandidate = 0x0;

        OwnershipTransferred(oldOwner, owner);
    }

    /// @dev In this 3rd option for ownership transfer `removeOwnership()` can
    ///  be called and it will immediately assign ownership to the 0x0 address;
    ///  it requires a 0xdece be input as a parameter to prevent accidental use
    /// @notice Decentralizes the contract, this operation cannot be undone 
    /// @param _dac `0xdac` has to be entered for this function to work
    function removeOwnership(address _dac) public onlyOwner {
        require(_dac == 0xdac);
        owner = 0x0;
        newOwnerCandidate = 0x0;
        OwnershipRemoved();     
    }
} 


///File: giveth-common-contracts/contracts/Escapable.sol

pragma solidity ^0.4.19;
/*
    Copyright 2016, Jordi Baylina
    Contributor: Adrià Massanet <[email protected]>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/





/// @dev `Escapable` is a base level contract built off of the `Owned`
///  contract; it creates an escape hatch function that can be called in an
///  emergency that will allow designated addresses to send any ether or tokens
///  held in the contract to an `escapeHatchDestination` as long as they were
///  not blacklisted
contract Escapable is Owned {
    address public escapeHatchCaller;
    address public escapeHatchDestination;
    mapping (address=>bool) private escapeBlacklist; // Token contract addresses

    /// @notice The Constructor assigns the `escapeHatchDestination` and the
    ///  `escapeHatchCaller`
    /// @param _escapeHatchCaller The address of a trusted account or contract
    ///  to call `escapeHatch()` to send the ether in this contract to the
    ///  `escapeHatchDestination` it would be ideal that `escapeHatchCaller`
    ///  cannot move funds out of `escapeHatchDestination`
    /// @param _escapeHatchDestination The address of a safe location (usu a
    ///  Multisig) to send the ether held in this contract; if a neutral address
    ///  is required, the WHG Multisig is an option:
    ///  0x8Ff920020c8AD673661c8117f2855C384758C572 
    function Escapable(address _escapeHatchCaller, address _escapeHatchDestination) public {
        escapeHatchCaller = _escapeHatchCaller;
        escapeHatchDestination = _escapeHatchDestination;
    }

    /// @dev The addresses preassigned as `escapeHatchCaller` or `owner`
    ///  are the only addresses that can call a function with this modifier
    modifier onlyEscapeHatchCallerOrOwner {
        require ((msg.sender == escapeHatchCaller)||(msg.sender == owner));
        _;
    }

    /// @notice Creates the blacklist of tokens that are not able to be taken
    ///  out of the contract; can only be done at the deployment, and the logic
    ///  to add to the blacklist will be in the constructor of a child contract
    /// @param _token the token contract address that is to be blacklisted 
    function blacklistEscapeToken(address _token) internal {
        escapeBlacklist[_token] = true;
        EscapeHatchBlackistedToken(_token);
    }

    /// @notice Checks to see if `_token` is in the blacklist of tokens
    /// @param _token the token address being queried
    /// @return False if `_token` is in the blacklist and can't be taken out of
    ///  the contract via the `escapeHatch()`
    function isTokenEscapable(address _token) view public returns (bool) {
        return !escapeBlacklist[_token];
    }

    /// @notice The `escapeHatch()` should only be called as a last resort if a
    /// security issue is uncovered or something unexpected happened
    /// @param _token to transfer, use 0x0 for ether
    function escapeHatch(address _token) public onlyEscapeHatchCallerOrOwner {   
        require(escapeBlacklist[_token]==false);

        uint256 balance;

        /// @dev Logic for ether
        if (_token == 0x0) {
            balance = this.balance;
            escapeHatchDestination.transfer(balance);
            EscapeHatchCalled(_token, balance);
            return;
        }
        /// @dev Logic for tokens
        ERC20 token = ERC20(_token);
        balance = token.balanceOf(this);
        require(token.transfer(escapeHatchDestination, balance));
        EscapeHatchCalled(_token, balance);
    }

    /// @notice Changes the address assigned to call `escapeHatch()`
    /// @param _newEscapeHatchCaller The address of a trusted account or
    ///  contract to call `escapeHatch()` to send the value in this contract to
    ///  the `escapeHatchDestination`; it would be ideal that `escapeHatchCaller`
    ///  cannot move funds out of `escapeHatchDestination`
    function changeHatchEscapeCaller(address _newEscapeHatchCaller) public onlyEscapeHatchCallerOrOwner {
        escapeHatchCaller = _newEscapeHatchCaller;
    }

    event EscapeHatchBlackistedToken(address token);
    event EscapeHatchCalled(address token, uint amount);
}


///File: ./contracts/lib/Pausable.sol

pragma solidity ^0.4.21;



/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is Owned {
    event Pause();
    event Unpause();

    bool public paused = false;

    /**
    * @dev Modifier to make a function callable only when the contract is not paused.
    */
    modifier whenNotPaused() {
        require(!paused);
        _;
    }

    /**
    * @dev Modifier to make a function callable only when the contract is paused.
    */
    modifier whenPaused() {
        require(paused);
        _;
    }

    /**
    * @dev called by the owner to pause, triggers stopped state
    */
    function pause() onlyOwner whenNotPaused public {
        paused = true;
        emit Pause();
    }

    /**
    * @dev called by the owner to unpause, returns to normal state
    */
    function unpause() onlyOwner whenPaused public {
        paused = false;
        emit Unpause();
    }
}

///File: ./contracts/lib/Vault.sol

pragma solidity ^0.4.21;

/*
    Copyright 2018, Jordi Baylina, RJ Ewing

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

/// @title Vault Contract
/// @author Jordi Baylina, RJ Ewing
/// @notice This contract holds funds for Campaigns and automates payments. For
///  this iteration the funds will come straight from the Giveth Multisig as a
///  safety precaution, but once fully tested and optimized this contract will
///  be a safe place to store funds equipped with optional variable time delays
///  to allow for an optional escape hatch




/// @dev `Vault` is a higher level contract built off of the `Escapable`
///  contract that holds funds for Campaigns and automates payments.
contract Vault is Escapable, Pausable {

    /// @dev `Payment` is a public structure that describes the details of
    ///  each payment making it easy to track the movement of funds
    ///  transparently
    struct Payment {
        string name;              // What is the purpose of this payment
        bytes32 reference;        // Reference of the payment.
        address spender;          // Who is sending the funds
        uint earliestPayTime;     // The earliest a payment can be made (Unix Time)
        bool canceled;            // If True then the payment has been canceled
        bool paid;                // If True then the payment has been paid
        address recipient;        // Who is receiving the funds
        address token;            // Token this payment represents
        uint amount;              // The amount of wei sent in the payment
        uint securityGuardDelay;  // The seconds `securityGuard` can delay payment
    }

    Payment[] public authorizedPayments;

    address public securityGuard;
    uint public absoluteMinTimeLock;
    uint public timeLock;
    uint public maxSecurityGuardDelay;
    bool public allowDisbursePaymentWhenPaused;

    /// @dev The white list of approved addresses allowed to set up && receive
    ///  payments from this vault
    mapping (address => bool) public allowedSpenders;

    // @dev Events to make the payment movements easy to find on the blockchain
    event PaymentAuthorized(uint indexed idPayment, address indexed recipient, uint amount, address token, bytes32 reference);
    event PaymentExecuted(uint indexed idPayment, address indexed recipient, uint amount, address token);
    event PaymentCanceled(uint indexed idPayment);
    event SpenderAuthorization(address indexed spender, bool authorized);

    /// @dev The address assigned the role of `securityGuard` is the only
    ///  addresses that can call a function with this modifier
    modifier onlySecurityGuard { 
        require(msg.sender == securityGuard);
        _;
    }

    /// By default, we dis-allow payment disburements if the contract is paused.
    /// However, to facilitate a migration of the bridge, we can allow
    /// disbursements when paused if explicitly set
    modifier disbursementsAllowed {
        require(!paused || allowDisbursePaymentWhenPaused);
        _;
    }

    /// @notice The Constructor creates the Vault on the blockchain
    /// @param _escapeHatchCaller The address of a trusted account or contract to
    ///  call `escapeHatch()` to send the ether in this contract to the
    ///  `escapeHatchDestination` it would be ideal if `escapeHatchCaller` cannot move
    ///  funds out of `escapeHatchDestination`
    /// @param _escapeHatchDestination The address of a safe location (usu a
    ///  Multisig) to send the ether held in this contract in an emergency
    /// @param _absoluteMinTimeLock The minimum number of seconds `timelock` can
    ///  be set to, if set to 0 the `owner` can remove the `timeLock` completely
    /// @param _timeLock Initial number of seconds that payments are delayed
    ///  after they are authorized (a security precaution)
    /// @param _securityGuard Address that will be able to delay the payments
    ///  beyond the initial timelock requirements; can be set to 0x0 to remove
    ///  the `securityGuard` functionality
    /// @param _maxSecurityGuardDelay The maximum number of seconds in total
    ///   that `securityGuard` can delay a payment so that the owner can cancel
    ///   the payment if needed
    function Vault(
        address _escapeHatchCaller,
        address _escapeHatchDestination,
        uint _absoluteMinTimeLock,
        uint _timeLock,
        address _securityGuard,
        uint _maxSecurityGuardDelay
    ) Escapable(_escapeHatchCaller, _escapeHatchDestination) public
    {
        absoluteMinTimeLock = _absoluteMinTimeLock;
        timeLock = _timeLock;
        securityGuard = _securityGuard;
        maxSecurityGuardDelay = _maxSecurityGuardDelay;
    }

/////////
// Helper functions
/////////

    /// @notice States the total number of authorized payments in this contract
    /// @return The number of payments ever authorized even if they were canceled
    function numberOfAuthorizedPayments() public view returns (uint) {
        return authorizedPayments.length;
    }

////////
// Spender Interface
////////

    /// @notice only `allowedSpenders[]` Creates a new `Payment`
    /// @param _name Brief description of the payment that is authorized
    /// @param _reference External reference of the payment
    /// @param _recipient Destination of the payment
    /// @param _amount Amount to be paid in wei
    /// @param _paymentDelay Number of seconds the payment is to be delayed, if
    ///  this value is below `timeLock` then the `timeLock` determines the delay
    /// @return The Payment ID number for the new authorized payment
    function authorizePayment(
        string _name,
        bytes32 _reference,
        address _recipient,
        address _token,
        uint _amount,
        uint _paymentDelay
    ) whenNotPaused external returns(uint) {

        // Fail if you arent on the `allowedSpenders` white list
        require(allowedSpenders[msg.sender]);
        uint idPayment = authorizedPayments.length;       // Unique Payment ID
        authorizedPayments.length++;

        // The following lines fill out the payment struct
        Payment storage p = authorizedPayments[idPayment];
        p.spender = msg.sender;

        // Overflow protection
        require(_paymentDelay <= 10**18);

        // Determines the earliest the recipient can receive payment (Unix time)
        p.earliestPayTime = _paymentDelay >= timeLock ?
                                _getTime() + _paymentDelay :
                                _getTime() + timeLock;
        p.recipient = _recipient;
        p.amount = _amount;
        p.name = _name;
        p.reference = _reference;
        p.token = _token;
        emit PaymentAuthorized(idPayment, p.recipient, p.amount, p.token, p.reference);
        return idPayment;
    }

    /// Anyone can call this function to disburse the payment to 
    ///  the recipient after `earliestPayTime` has passed
    /// @param _idPayment The payment ID to be executed
    function disburseAuthorizedPayment(uint _idPayment) disbursementsAllowed public {
        // Check that the `_idPayment` has been added to the payments struct
        require(_idPayment < authorizedPayments.length);

        Payment storage p = authorizedPayments[_idPayment];

        // Checking for reasons not to execute the payment
        require(allowedSpenders[p.spender]);
        require(_getTime() >= p.earliestPayTime);
        require(!p.canceled);
        require(!p.paid);

        p.paid = true; // Set the payment to being paid

        // Make the payment
        if (p.token == 0) {
            p.recipient.transfer(p.amount);
        } else {
            require(ERC20(p.token).transfer(p.recipient, p.amount));
        }

        emit PaymentExecuted(_idPayment, p.recipient, p.amount, p.token);
    }

    /// convience function to disburse multiple payments in a single tx
    function disburseAuthorizedPayments(uint[] _idPayments) public {
        for (uint i = 0; i < _idPayments.length; i++) {
            uint _idPayment = _idPayments[i];
            disburseAuthorizedPayment(_idPayment);
        }
    }

/////////
// SecurityGuard Interface
/////////

    /// @notice `onlySecurityGuard` Delays a payment for a set number of seconds
    /// @param _idPayment ID of the payment to be delayed
    /// @param _delay The number of seconds to delay the payment
    function delayPayment(uint _idPayment, uint _delay) onlySecurityGuard external {
        require(_idPayment < authorizedPayments.length);

        // Overflow test
        require(_delay <= 10**18);

        Payment storage p = authorizedPayments[_idPayment];

        require(p.securityGuardDelay + _delay <= maxSecurityGuardDelay);
        require(!p.paid);
        require(!p.canceled);

        p.securityGuardDelay += _delay;
        p.earliestPayTime += _delay;
    }

////////
// Owner Interface
///////

    /// @notice `onlyOwner` Cancel a payment all together
    /// @param _idPayment ID of the payment to be canceled.
    function cancelPayment(uint _idPayment) onlyOwner external {
        require(_idPayment < authorizedPayments.length);

        Payment storage p = authorizedPayments[_idPayment];

        require(!p.canceled);
        require(!p.paid);

        p.canceled = true;
        emit PaymentCanceled(_idPayment);
    }

    /// @notice `onlyOwner` Adds a spender to the `allowedSpenders[]` white list
    /// @param _spender The address of the contract being authorized/unauthorized
    /// @param _authorize `true` if authorizing and `false` if unauthorizing
    function authorizeSpender(address _spender, bool _authorize) onlyOwner external {
        allowedSpenders[_spender] = _authorize;
        emit SpenderAuthorization(_spender, _authorize);
    }

    /// @notice `onlyOwner` Sets the address of `securityGuard`
    /// @param _newSecurityGuard Address of the new security guard
    function setSecurityGuard(address _newSecurityGuard) onlyOwner external {
        securityGuard = _newSecurityGuard;
    }

    /// @notice `onlyOwner` Changes `timeLock`; the new `timeLock` cannot be
    ///  lower than `absoluteMinTimeLock`
    /// @param _newTimeLock Sets the new minimum default `timeLock` in seconds;
    ///  pending payments maintain their `earliestPayTime`
    function setTimelock(uint _newTimeLock) onlyOwner external {
        require(_newTimeLock >= absoluteMinTimeLock);
        timeLock = _newTimeLock;
    }

    /// @notice `onlyOwner` Changes the maximum number of seconds
    /// `securityGuard` can delay a payment
    /// @param _maxSecurityGuardDelay The new maximum delay in seconds that
    ///  `securityGuard` can delay the payment's execution in total
    function setMaxSecurityGuardDelay(uint _maxSecurityGuardDelay) onlyOwner external {
        maxSecurityGuardDelay = _maxSecurityGuardDelay;
    }

    /// @dev called by the owner to pause the contract. Triggers a stopped state 
    ///  and resets allowDisbursePaymentWhenPaused to false
    function pause() onlyOwner whenNotPaused public {
        allowDisbursePaymentWhenPaused = false;
        super.pause();
    }

    /// Owner can allow payment disbursement when the contract is paused. This is so the
    /// bridge can be upgraded without having to migrate any existing authorizedPayments
    /// @dev only callable whenPaused b/c pausing the contract will reset `allowDisbursePaymentWhenPaused` to false
    /// @param allowed `true` if allowing payments to be disbursed when paused, otherwise 'false'
    function setAllowDisbursePaymentWhenPaused(bool allowed) onlyOwner whenPaused public {
        allowDisbursePaymentWhenPaused = allowed;
    }

    // for overidding during testing
    function _getTime() internal view returns (uint) {
        return now;
    }

}

///File: ./contracts/lib/FailClosedVault.sol

pragma solidity ^0.4.21;

/*
    Copyright 2018, RJ Ewing

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */



/**
* @dev `FailClosedVault` is a version of the vault that requires
*  the securityGuard to "see" each payment before it can be collected
*/
contract FailClosedVault is Vault {
    uint public securityGuardLastCheckin;

    /**
    * @param _absoluteMinTimeLock For this version of the vault, it is recommended
    *   that this value is > 24hrs. If not, it will require the securityGuard to checkIn
    *   multiple times a day. Also consider that `securityGuardLastCheckin >= payment.earliestPayTime - timelock + 30mins);`
    *   is the condition to allow payments to be payed. The additional 30 mins is to reduce (not eliminate)
    *   the risk of front-running
    */
    function FailClosedVault(
        address _escapeHatchCaller,
        address _escapeHatchDestination,
        uint _absoluteMinTimeLock,
        uint _timeLock,
        address _securityGuard,
        uint _maxSecurityGuardDelay
    ) Vault(
        _escapeHatchCaller,
        _escapeHatchDestination, 
        _absoluteMinTimeLock,
        _timeLock,
        _securityGuard,
        _maxSecurityGuardDelay
    ) public {
    }

/////////////////////
// Spender Interface
/////////////////////

    /**
    * Disburse an authorizedPayment to the recipient if all checks pass.
    *
    * @param _idPayment The payment ID to be disbursed
    */
    function disburseAuthorizedPayment(uint _idPayment) disbursementsAllowed public {
        // Check that the `_idPayment` has been added to the payments struct
        require(_idPayment < authorizedPayments.length);

        Payment storage p = authorizedPayments[_idPayment];
        // The current minimum delay for a payment is `timeLock`. Thus the following ensuress
        // that the `securityGuard` has checked in after the payment was created
        // @notice earliestPayTime is updated when a payment is delayed. Which may require
        // another checkIn before the payment can be collected.
        // @notice We add 30 mins to this to reduce (not eliminate) the risk of front-running
        require(securityGuardLastCheckin >= p.earliestPayTime - timeLock + 30 minutes);

        super.disburseAuthorizedPayment(_idPayment);
    }

///////////////////////////
// SecurityGuard Interface
///////////////////////////

    /**
    * @notice `onlySecurityGuard` can checkin. If they fail to checkin,
    * payments will not be allowed to be disbursed, unless the payment has
    * an `earliestPayTime` <= `securityGuardLastCheckin`.
    * @notice To reduce the risk of a front-running attack on payments, it
    * is important that this is called with a resonable gasPrice set for the
    * current network congestion. If this tx is not mined, within 30 mins
    * of being sent, it is possible that a payment can be authorized w/o the
    * securityGuard's knowledge
    */
    function checkIn() onlySecurityGuard external {
        securityGuardLastCheckin = _getTime();
    }
}

///File: ./contracts/GivethBridge.sol

pragma solidity ^0.4.21;

/*
    Copyright 2017, RJ Ewing <[email protected]>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/





/**
* @notice It is not recommened to call this function outside of the giveth dapp (giveth.io)
* this function is bridged to a side chain. If for some reason the sidechain tx fails, the donation
* will end up in the givers control inside LiquidPledging contract. If you do not use the dapp, there
* will be no way of notifying the sender/giver that the giver has to take action (withdraw/donate) in
* the dapp
*/
contract GivethBridge is FailClosedVault {

    mapping(address => bool) tokenWhitelist;

    event Donate(uint64 giverId, uint64 receiverId, address token, uint amount);
    event DonateAndCreateGiver(address giver, uint64 receiverId, address token, uint amount);
    event EscapeFundsCalled(address token, uint amount);

    //== constructor

    /**
    * @param _escapeHatchCaller The address of a trusted account or contract to
    *  call `escapeHatch()` to send the ether in this contract to the
    *  `escapeHatchDestination` in the case on an emergency. it would be ideal 
    *  if `escapeHatchCaller` cannot move funds out of `escapeHatchDestination`
    * @param _escapeHatchDestination The address of a safe location (usually a
    *  Multisig) to send the ether held in this contract in the case of an emergency
    * @param _absoluteMinTimeLock The minimum number of seconds `timelock` can
    *  be set to, if set to 0 the `owner` can remove the `timeLock` completely
    * @param _timeLock Minimum number of seconds that payments are delayed
    *  after they are authorized (a security precaution)
    * @param _securityGuard Address that will be able to delay the payments
    *  beyond the initial timelock requirements; can be set to 0x0 to remove
    *  the `securityGuard` functionality
    * @param _maxSecurityGuardDelay The maximum number of seconds in total
    *   that `securityGuard` can delay a payment so that the owner can cancel
    *   the payment if needed
    */
    function GivethBridge(
        address _escapeHatchCaller,
        address _escapeHatchDestination,
        uint _absoluteMinTimeLock,
        uint _timeLock,
        address _securityGuard,
        uint _maxSecurityGuardDelay
    ) FailClosedVault(
        _escapeHatchCaller,
        _escapeHatchDestination,
        _absoluteMinTimeLock,
        _timeLock,
        _securityGuard,
        _maxSecurityGuardDelay
    ) public
    {
        tokenWhitelist[0] = true; // enable eth transfers
    }

    //== public methods

    /**
    * @notice It is not recommened to call this function outside of the giveth dapp (giveth.io)
    * this function is bridged to a side chain. If for some reason the sidechain tx fails, the donation
    * will end up in the givers control inside LiquidPledging contract. If you do not use the dapp, there
    * will be no way of notifying the sender/giver that the giver has to take action (withdraw/donate) in
    * the dapp
    *
    * @param giver The address to create a 'giver' pledge admin for in the liquidPledging contract
    * @param receiverId The adminId of the liquidPledging pledge admin receiving the donation
    */
    function donateAndCreateGiver(address giver, uint64 receiverId) payable external {
        donateAndCreateGiver(giver, receiverId, 0, 0);
    }

    /**
    * @notice It is not recommened to call this function outside of the giveth dapp (giveth.io)
    * this function is bridged to a side chain. If for some reason the sidechain tx fails, the donation
    * will end up in the givers control inside LiquidPledging contract. If you do not use the dapp, there
    * will be no way of notifying the sender/giver that the giver has to take action (withdraw/donate) in
    * the dapp
    *
    * @param giver The address to create a 'giver' pledge admin for in the liquidPledging contract
    * @param receiverId The adminId of the liquidPledging pledge admin receiving the donation
    * @param token The token to donate. If donating ETH, then 0x0. Note: the token must be whitelisted
    * @param _amount The amount of the token to donate. If donating ETH, then 0x0 as the msg.value will be used instead.
    */
    function donateAndCreateGiver(address giver, uint64 receiverId, address token, uint _amount) whenNotPaused payable public {
        require(giver != 0);
        require(receiverId != 0);
        uint amount = _receiveDonation(token, _amount);
        emit DonateAndCreateGiver(giver, receiverId, token, amount);
    }

    /**
    * @notice It is not recommened to call this function outside of the giveth dapp (giveth.io)
    * this function is bridged to a side chain. If for some reason the sidechain tx fails, the donation
    * will end up in the givers control inside LiquidPledging contract. If you do not use the dapp, there
    * will be no way of notifying the sender/giver that the giver has to take action (withdraw/donate) in
    * the dapp
    *
    * @param giverId The adminId of the liquidPledging pledge admin who is donating
    * @param receiverId The adminId of the liquidPledging pledge admin receiving the donation
    */
    function donate(uint64 giverId, uint64 receiverId) payable external {
        donate(giverId, receiverId, 0, 0);
    }

    /**
    * @notice It is not recommened to call this function outside of the giveth dapp (giveth.io)
    * this function is bridged to a side chain. If for some reason the sidechain tx fails, the donation
    * will end up in the givers control inside LiquidPledging contract. If you do not use the dapp, there
    * will be no way of notifying the sender/giver that the giver has to take action (withdraw/donate) in
    * the dapp
    *
    * @param giverId The adminId of the liquidPledging pledge admin who is donating
    * @param receiverId The adminId of the liquidPledging pledge admin receiving the donation
    * @param token The token to donate. If donating ETH, then 0x0. Note: the token must be whitelisted
    * @param _amount The amount of the token to donate. If donating ETH, then 0x0 as the msg.value will be used instead.
    */
    function donate(uint64 giverId, uint64 receiverId, address token, uint _amount) whenNotPaused payable public {
        require(giverId != 0);
        require(receiverId != 0);
        uint amount = _receiveDonation(token, _amount);
        emit Donate(giverId, receiverId, token, amount);
    }

    /**
    * The `owner` can call this function to add/remove a token from the whitelist
    *
    * @param token The address of the token to update
    * @param accepted Wether or not to accept this token for donations
    */
    function whitelistToken(address token, bool accepted) whenNotPaused onlyOwner external {
        tokenWhitelist[token] = accepted;
    }

    /**
    * Transfer tokens/eth to the escapeHatchDestination.
    * Used as a safety mechanism to prevent the bridge from holding too much value
    *
    * before being thoroughly battle-tested.
    * @param _token the token to transfer. 0x0 for ETH
    * @param _amount the amount to transfer
    */
    function escapeFunds(address _token, uint _amount) external onlyEscapeHatchCallerOrOwner {
        // @dev Logic for ether
        if (_token == 0) {
            escapeHatchDestination.transfer(_amount);
        // @dev Logic for tokens
        } else {
            ERC20 token = ERC20(_token);
            require(token.transfer(escapeHatchDestination, _amount));
        }
        emit EscapeFundsCalled(_token, _amount);
    }

    /**
    * Allow the escapeHatchDestination to deposit eth into this contract w/o calling donate method
    */
    function depositEscapedFunds() external payable {
        require(msg.sender == escapeHatchDestination);
    }

    //== internal methods

    /**
    * @dev used to actually receive the donation. Will transfer the token to to this contract
    */
    function _receiveDonation(address token, uint _amount) internal returns(uint amount) {
        require(tokenWhitelist[token]);
        amount = _amount;

        // eth donation
        if (token == 0) {
            amount = msg.value;
        }

        require(amount > 0);

        if (token != 0) {
            require(ERC20(token).transferFrom(msg.sender, this, amount));
        }
    }
}

Contract ABI
[{"constant":true,"inputs":[],"name":"maxSecurityGuardDelay","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"accepted","type":"bool"}],"name":"whitelistToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"checkIn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"giver","type":"address"},{"name":"receiverId","type":"uint64"},{"name":"token","type":"address"},{"name":"_amount","type":"uint256"}],"name":"donateAndCreateGiver","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_amount","type":"uint256"}],"name":"escapeFunds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newTimeLock","type":"uint256"}],"name":"setTimelock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"escapeHatchCaller","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"changeOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"securityGuardLastCheckin","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"giverId","type":"uint64"},{"name":"receiverId","type":"uint64"},{"name":"token","type":"address"},{"name":"_amount","type":"uint256"}],"name":"donate","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_idPayment","type":"uint256"}],"name":"disburseAuthorizedPayment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_dac","type":"address"}],"name":"removeOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"allowed","type":"bool"}],"name":"setAllowDisbursePaymentWhenPaused","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"numberOfAuthorizedPayments","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwnerCandidate","type":"address"}],"name":"proposeOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_authorize","type":"bool"}],"name":"authorizeSpender","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_idPayment","type":"uint256"}],"name":"cancelPayment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_idPayment","type":"uint256"},{"name":"_delay","type":"uint256"}],"name":"delayPayment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"allowDisbursePaymentWhenPaused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_idPayments","type":"uint256[]"}],"name":"disburseAuthorizedPayments","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_token","type":"address"}],"name":"isTokenEscapable","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"giver","type":"address"},{"name":"receiverId","type":"uint64"}],"name":"donateAndCreateGiver","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"authorizedPayments","outputs":[{"name":"name","type":"string"},{"name":"reference","type":"bytes32"},{"name":"spender","type":"address"},{"name":"earliestPayTime","type":"uint256"},{"name":"canceled","type":"bool"},{"name":"paid","type":"bool"},{"name":"recipient","type":"address"},{"name":"token","type":"address"},{"name":"amount","type":"uint256"},{"name":"securityGuardDelay","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"escapeHatch","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"securityGuard","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newSecurityGuard","type":"address"}],"name":"setSecurityGuard","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"depositEscapedFunds","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"giverId","type":"uint64"},{"name":"receiverId","type":"uint64"}],"name":"donate","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"timeLock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwnerCandidate","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newEscapeHatchCaller","type":"address"}],"name":"changeHatchEscapeCaller","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"allowedSpenders","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_maxSecurityGuardDelay","type":"uint256"}],"name":"setMaxSecurityGuardDelay","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"absoluteMinTimeLock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"},{"name":"_reference","type":"bytes32"},{"name":"_recipient","type":"address"},{"name":"_token","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_paymentDelay","type":"uint256"}],"name":"authorizePayment","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"escapeHatchDestination","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_escapeHatchCaller","type":"address"},{"name":"_escapeHatchDestination","type":"address"},{"name":"_absoluteMinTimeLock","type":"uint256"},{"name":"_timeLock","type":"uint256"},{"name":"_securityGuard","type":"address"},{"name":"_maxSecurityGuardDelay","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"giverId","type":"uint64"},{"indexed":false,"name":"receiverId","type":"uint64"},{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Donate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"giver","type":"address"},{"indexed":false,"name":"receiverId","type":"uint64"},{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"DonateAndCreateGiver","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"EscapeFundsCalled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idPayment","type":"uint256"},{"indexed":true,"name":"recipient","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"reference","type":"bytes32"}],"name":"PaymentAuthorized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idPayment","type":"uint256"},{"indexed":true,"name":"recipient","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"token","type":"address"}],"name":"PaymentExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idPayment","type":"uint256"}],"name":"PaymentCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"authorized","type":"bool"}],"name":"SpenderAuthorization","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"}],"name":"EscapeHatchBlackistedToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"EscapeHatchCalled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"by","type":"address"},{"indexed":true,"name":"to","type":"address"}],"name":"OwnershipRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"OwnershipRemoved","type":"event"}]

Contract Creation Code
60606040526005805460ff19169055341561001957600080fd5b60405160c080611cc283398101604052808051919060200180519190602001805191906020018051919060200180519190602001805160008054600160a060020a03338116600160a060020a0319928316178355600280549b82169b83169b909b17909a5560038054998b1699821699909917909855600896909655600994909455505060078054959091169490931693909317909155600a919091558052600e6020527fe710864318d4a32f37d6ce54cb3fadbef648dd12d8dbdf53973564d56b7f881c805460ff19166001179055611bca806100f86000396000f3006060604052600436106101df5763ffffffff60e060020a6000350416630b2e742381146101e45780630ffb1d8b14610209578063183ff0851461022f5780631870c10f146102425780631b28591c1461026d5780631e891c0a1461028f5780631f6eb6e7146102a55780632af4c31e146102d45780633f487b8b146102f35780633f4ba83a146103065780634c4316c71461031957806352892478146103435780635c975abb14610359578063666a342714610380578063672f412c1461039f57806368b8c5a1146103b7578063710bf322146103ca578063793c0fd4146103e957806379ba50971461040d5780638422927d146104205780638456cb5914610436578063846a5dde14610449578063859bcc7114610462578063863da00014610475578063892db057146104c45780638da5cb5b146104e357806391f5c3a8146104f6578063a0927a6a14610517578063a142d608146105fb578063b2ca3ec41461061a578063bb2a51d11461062d578063bd541ad01461064c578063bde60ac914610654578063d085835a1461066f578063d091b55014610682578063d836fbe814610695578063d8528af0146106b4578063da4793ac146106d3578063ea8a66c7146106e9578063f37b74ca146106fc578063f5b6123014610736575b600080fd5b34156101ef57600080fd5b6101f7610749565b60405190815260200160405180910390f35b341561021457600080fd5b61022d600160a060020a0360043516602435151561074f565b005b341561023a57600080fd5b61022d6107a5565b61022d600160a060020a0360043581169067ffffffffffffffff6024351690604435166064356107cd565b341561027857600080fd5b61022d600160a060020a0360043516602435610881565b341561029a57600080fd5b61022d6004356109ca565b34156102b057600080fd5b6102b86109f9565b604051600160a060020a03909116815260200160405180910390f35b34156102df57600080fd5b61022d600160a060020a0360043516610a08565b34156102fe57600080fd5b6101f7610a9c565b341561031157600080fd5b61022d610aa2565b61022d67ffffffffffffffff60043581169060243516600160a060020a0360443516606435610b06565b341561034e57600080fd5b61022d600435610bbb565b341561036457600080fd5b61036c610c33565b604051901515815260200160405180910390f35b341561038b57600080fd5b61022d600160a060020a0360043516610c3c565b34156103aa57600080fd5b61022d6004351515610cb9565b34156103c257600080fd5b6101f7610cf8565b34156103d557600080fd5b61022d600160a060020a0360043516610cff565b34156103f457600080fd5b61022d600160a060020a03600435166024351515610d70565b341561041857600080fd5b61022d610dea565b341561042b57600080fd5b61022d600435610e6a565b341561044157600080fd5b61022d610f1e565b341561045457600080fd5b61022d600435602435610f5d565b341561046d57600080fd5b61036c611013565b341561048057600080fd5b61022d600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965061101c95505050505050565b34156104cf57600080fd5b61036c600160a060020a036004351661105a565b34156104ee57600080fd5b6102b8611079565b61022d600160a060020a036004351667ffffffffffffffff60243516611088565b341561052257600080fd5b61052d600435611095565b604051602081018a9052600160a060020a03808a16604083015260608201899052871515608083015286151560a083015285811660c0830152841660e082015261010081018390526101208101829052610140808252819081018c818151815260200191508051906020019080838360005b838110156105b757808201518382015260200161059f565b50505050905090810190601f1680156105e45780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390f35b341561060657600080fd5b61022d600160a060020a03600435166111a9565b341561062557600080fd5b6102b86113ca565b341561063857600080fd5b61022d600160a060020a03600435166113d9565b61022d611416565b61022d67ffffffffffffffff60043581169060243516611431565b341561067a57600080fd5b6101f761143e565b341561068d57600080fd5b6102b8611444565b34156106a057600080fd5b61022d600160a060020a0360043516611453565b34156106bf57600080fd5b61036c600160a060020a03600435166114ab565b34156106de57600080fd5b61022d6004356114c0565b34156106f457600080fd5b6101f76114e0565b341561070757600080fd5b6101f7602460048035828101929101359035600160a060020a036044358116906064351660843560a4356114e6565b341561074157600080fd5b6102b8611698565b600a5481565b60055460ff161561075f57600080fd5b60005433600160a060020a0390811691161461077a57600080fd5b600160a060020a03919091166000908152600e60205260409020805460ff1916911515919091179055565b60075433600160a060020a039081169116146107c057600080fd5b6107c86116a7565b600d55565b60055460009060ff16156107e057600080fd5b600160a060020a03851615156107f557600080fd5b67ffffffffffffffff8416151561080b57600080fd5b61081583836116ab565b90507f300ed237d4114d1c2df9984e698721646d6c45633d6c1c5430450cdecf61571d85858584604051600160a060020a03948516815267ffffffffffffffff909316602084015292166040808301919091526060820192909252608001905180910390a15050505050565b60025460009033600160a060020a03908116911614806108af575060005433600160a060020a039081169116145b15156108ba57600080fd5b600160a060020a038316151561090257600354600160a060020a031682156108fc0283604051600060405180830381858888f1935050505015156108fd57600080fd5b610981565b506003548290600160a060020a038083169163a9059cbb91168460405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561095f57600080fd5b5af1151561096c57600080fd5b50505060405180519050151561098157600080fd5b7f4ccddcd1a4e33721aee316370fb3e014294985be0755a68c88009b31e1dc4ae38383604051600160a060020a03909216825260208201526040908101905180910390a1505050565b60005433600160a060020a039081169116146109e557600080fd5b6008548110156109f457600080fd5b600955565b600254600160a060020a031681565b6000805433600160a060020a03908116911614610a2457600080fd5b600160a060020a0382161515610a3957600080fd5b5060008054600160a060020a03838116600160a060020a031980841691909117938490556001805490911690559081169116817f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600d5481565b60005433600160a060020a03908116911614610abd57600080fd5b60055460ff161515610ace57600080fd5b6005805460ff191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60055460009060ff1615610b1957600080fd5b67ffffffffffffffff85161515610b2f57600080fd5b67ffffffffffffffff84161515610b4557600080fd5b610b4f83836116ab565b90507fc77b8feedf86922981aed41179f4a071d80467c7f17c5c13837269e363ac545b8585858460405167ffffffffffffffff9485168152929093166020830152600160a060020a03166040808301919091526060820192909252608001905180910390a15050505050565b60055460009060ff161580610bd25750600b5460ff165b1515610bdd57600080fd5b6006548210610beb57600080fd5b6006805483908110610bf957fe5b9060005260206000209060080201905060095481600301540361070801600d5410151515610c2657600080fd5b610c2f8261178c565b5050565b60055460ff1681565b60005433600160a060020a03908116911614610c5757600080fd5b610dac600160a060020a03821614610c6e57600080fd5b60008054600160a060020a03199081169091556001805490911690557f94e8b32e01b9eedfddd778ffbd051a7718cdc14781702884561162dca6f74dbb60405160405180910390a150565b60005433600160a060020a03908116911614610cd457600080fd5b60055460ff161515610ce557600080fd5b600b805460ff1916911515919091179055565b6006545b90565b60005433600160a060020a03908116911614610d1a57600080fd5b60018054600160a060020a031916600160a060020a0383811691909117918290559081169033167f13a4b3bc0d5234dd3d87c9f1557d8faefa37986da62c36ba49309e2fb2c9aec460405160405180910390a350565b60005433600160a060020a03908116911614610d8b57600080fd5b600160a060020a0382166000818152600c602052604090819020805460ff19168415151790557f801f568efbc3346a6ae3d0c3eb335a30d64e0d3cf08f1c39626d62cd5c82728190839051901515815260200160405180910390a25050565b60015460009033600160a060020a03908116911614610e0857600080fd5b506000805460018054600160a060020a0319808416600160a060020a03838116919091179586905591169091559081169116817f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000805433600160a060020a03908116911614610e8657600080fd5b6006548210610e9457600080fd5b6006805483908110610ea257fe5b60009182526020909120600890910201600481015490915060ff1615610ec757600080fd5b6004810154610100900460ff1615610ede57600080fd5b60048101805460ff19166001179055817ffdf197ed54809861dafe0b4d391843652730ac67274c1e9e46db7687dccaa30160405160405180910390a25050565b60005433600160a060020a03908116911614610f3957600080fd5b60055460ff1615610f4957600080fd5b600b805460ff19169055610f5b6119ad565b565b60075460009033600160a060020a03908116911614610f7b57600080fd5b6006548310610f8957600080fd5b670de0b6b3a7640000821115610f9e57600080fd5b6006805484908110610fac57fe5b90600052602060002090600802019050600a548282600701540111151515610fd357600080fd5b6004810154610100900460ff1615610fea57600080fd5b600481015460ff1615610ffc57600080fd5b600781018054830190556003018054909101905550565b600b5460ff1681565b6000805b82518210156110555782828151811061103557fe5b90602001906020020151905061104a81610bbb565b600190910190611020565b505050565b600160a060020a031660009081526004602052604090205460ff161590565b600054600160a060020a031681565b610c2f82826000806107cd565b60068054829081106110a357fe5b9060005260206000209060080201600091509050806000018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561114f5780601f106111245761010080835404028352916020019161114f565b820191906000526020600020905b81548152906001019060200180831161113257829003601f168201915b5050505060018301546002840154600385015460048601546005870154600688015460079098015496979496600160a060020a039485169650929460ff80841695610100850490911694620100009094048116939216918a565b600254600090819033600160a060020a03908116911614806111d9575060005433600160a060020a039081169116145b15156111e457600080fd5b600160a060020a03831660009081526004602052604090205460ff161561120a57600080fd5b600160a060020a038316151561129c57600354600160a060020a033081163193501682156108fc0283604051600060405180830381858888f19350505050151561125357600080fd5b7fa50dde912fa22ea0d215a0236093ac45b4d55d6ef0c604c319f900029c5d10f28383604051600160a060020a03909216825260208201526040908101905180910390a1611055565b5081600160a060020a0381166370a082313060405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156112ec57600080fd5b5af115156112f957600080fd5b5050506040518051600354909350600160a060020a03808416925063a9059cbb91168460405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561135f57600080fd5b5af1151561136c57600080fd5b50505060405180519050151561138157600080fd5b7fa50dde912fa22ea0d215a0236093ac45b4d55d6ef0c604c319f900029c5d10f28383604051600160a060020a03909216825260208201526040908101905180910390a1505050565b600754600160a060020a031681565b60005433600160a060020a039081169116146113f457600080fd5b60078054600160a060020a031916600160a060020a0392909216919091179055565b60035433600160a060020a03908116911614610f5b57600080fd5b610c2f8282600080610b06565b60095481565b600154600160a060020a031681565b60025433600160a060020a039081169116148061147e575060005433600160a060020a039081169116145b151561148957600080fd5b60028054600160a060020a031916600160a060020a0392909216919091179055565b600c6020526000908152604090205460ff1681565b60005433600160a060020a039081169116146114db57600080fd5b600a55565b60085481565b6005546000908190819060ff16156114fd57600080fd5b600160a060020a0333166000908152600c602052604090205460ff16151561152457600080fd5b60068054925082906115399060018301611a13565b50600680548390811061154857fe5b60009182526020909120600890910201600281018054600160a060020a03191633600160a060020a03161790559050670de0b6b3a764000084111561158c57600080fd5b6009548410156115a7576009546115a16116a7565b016115b2565b836115b06116a7565b015b600382015560048101805475ffffffffffffffffffffffffffffffffffffffff0000191662010000600160a060020a038a1602179055600681018590556115fa818b8b611a3f565b5060018101889055600581018054600160a060020a031916600160a060020a038881169190911791829055600483015460068401546201000090910482169285927fd11935115aa93b9f1f616d0d7702f4593572daa610390123241b3785430281c49291168c604051928352600160a060020a0390911660208301526040808301919091526060909101905180910390a35098975050505050505050565b600354600160a060020a031681565b4290565b600160a060020a0382166000908152600e602052604081205460ff1615156116d257600080fd5b5080600160a060020a03831615156116e75750345b600081116116f457600080fd5b600160a060020a038316156117865782600160a060020a03166323b872dd33308460405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561176457600080fd5b5af1151561177157600080fd5b50505060405180519050151561178657600080fd5b92915050565b60055460009060ff1615806117a35750600b5460ff165b15156117ae57600080fd5b60065482106117bc57600080fd5b60068054839081106117ca57fe5b60009182526020808320600260089093020191820154600160a060020a03168352600c905260409091205490915060ff16151561180657600080fd5b80600301546118136116a7565b101561181e57600080fd5b600481015460ff161561183057600080fd5b6004810154610100900460ff161561184757600080fd5b60048101805461ff0019166101001790556005810154600160a060020a031615156118b3576004810154600682015462010000909104600160a060020a0316906108fc81150290604051600060405180830381858888f1935050505015156118ae57600080fd5b611941565b600581015460048201546006830154600160a060020a039283169263a9059cbb92620100009004169060405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561191f57600080fd5b5af1151561192c57600080fd5b50505060405180519050151561194157600080fd5b600481015460068201546005830154600160a060020a036201000090930483169285927f354f3c0c8efabe1a1a07cf222842b008ef284ac185e63bdf8245be8cd2d97f5192909116604051918252600160a060020a031660208201526040908101905180910390a35050565b60005433600160a060020a039081169116146119c857600080fd5b60055460ff16156119d857600080fd5b6005805460ff191660011790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b815481835581811511611055576008028160080283600052602060002091820191016110559190611abd565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611a805782800160ff19823516178555611aad565b82800160010185558215611aad579182015b82811115611aad578235825591602001919060010190611a92565b50611ab9929150611b3d565b5090565b610cfc91905b80821115611ab9576000611ad78282611b57565b50600060018201819055600282018054600160a060020a03199081169091556003830182905560048301805475ffffffffffffffffffffffffffffffffffffffffffff191690556005830180549091169055600682018190556007820155600801611ac3565b610cfc91905b80821115611ab95760008155600101611b43565b50805460018160011615610100020316600290046000825580601f10611b7d5750611b9b565b601f016020900490600052602060002090810190611b9b9190611b3d565b505600a165627a7a723058202c93896a99ed00f70c3be01dbfcc817d0371f619dedcd25175f540c4e980677a00290000000000000000000000001e9f6746147e937e8e1c29180e15af0bd5fd64bb00000000000000000000000016fda2fcc887dd7ac65c46be144473067cff86540000000000000000000000000000000000000000000000000000000000015f90000000000000000000000000000000000000000000000000000000000002a300000000000000000000000000daa172456f5815256831aee19c8a370a835228710000000000000000000000000000000000000000000000000000000000278d00


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

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000001e9f6746147e937e8e1c29180e15af0bd5fd64bb
Arg [1] : 00000000000000000000000016fda2fcc887dd7ac65c46be144473067cff8654
Arg [2] : 0000000000000000000000000000000000000000000000000000000000015f90
Arg [3] : 000000000000000000000000000000000000000000000000000000000002a300
Arg [4] : 000000000000000000000000daa172456f5815256831aee19c8a370a83522871
Arg [5] : 0000000000000000000000000000000000000000000000000000000000278d00


   Swarm Source:
bzzr://2c93896a99ed00f70c3be01dbfcc817d0371f619dedcd25175f540c4e980677a
Block Age transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.