ETH Price: $3,909.13 (+1.30%)

Contract

0xE2466deB9536A69BF8131Ecd0c267EE41dd1cdA0
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Suspend194795082024-03-21 0:33:35269 days ago1710981215IN
0xE2466deB...41dd1cdA0
0 ETH0.0016179735.40512059
Deauthorize Addr...194772942024-03-20 17:07:23270 days ago1710954443IN
0xE2466deB...41dd1cdA0
0 ETH0.0014513334.51284737
Authorize Addres...118351062021-02-11 11:54:371403 days ago1613044477IN
0xE2466deB...41dd1cdA0
0 ETH0.00813763111
Deauthorize Addr...118351012021-02-11 11:52:561403 days ago1613044376IN
0xE2466deB...41dd1cdA0
0 ETH0.00237384111
Authorize Addres...118350502021-02-11 11:41:381403 days ago1613043698IN
0xE2466deB...41dd1cdA0
0 ETH0.009164125
Transfer103162272020-06-22 14:58:191637 days ago1592837899IN
0xE2466deB...41dd1cdA0
0 ETH0.00115555
Authorize Addres...102433842020-06-11 8:42:051648 days ago1591864925IN
0xE2466deB...41dd1cdA0
0 ETH0.0025659235
Authorize Addres...100543522020-05-12 23:39:201677 days ago1589326760IN
0xE2466deB...41dd1cdA0
0 ETH0.0008797412
Authorize Addres...91375752019-12-20 22:04:241821 days ago1576879464IN
0xE2466deB...41dd1cdA0
0 ETH0.0009530513
Authorize Addres...91343962019-12-20 6:40:581822 days ago1576824058IN
0xE2466deB...41dd1cdA0
0 ETH0.0009530513
Authorize Addres...91246132019-12-18 7:51:511824 days ago1576655511IN
0xE2466deB...41dd1cdA0
0 ETH0.0009530513
Authorize Addres...91245942019-12-18 7:47:111824 days ago1576655231IN
0xE2466deB...41dd1cdA0
0 ETH0.0009530513
Authorize Addres...91243562019-12-18 6:34:281824 days ago1576650868IN
0xE2466deB...41dd1cdA0
0 ETH0.0008064311
Add Trusted Subm...91243202019-12-18 6:24:461824 days ago1576650286IN
0xE2466deB...41dd1cdA0
0 ETH0.0004799811
Authorize Addres...90635142019-12-07 1:13:151835 days ago1575681195IN
0xE2466deB...41dd1cdA0
0 ETH0.0009521611

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TradeDelegate

Compiler Version
v0.5.7+commit.6da8b019

Optimization Enabled:
Yes with 200 runs

Other Settings:
petersburg EvmVersion, Apache-2.0 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-12-07
*/

// File: contracts/loopring/impl/BrokerData.sol

pragma solidity 0.5.7;

library BrokerData {

  struct BrokerOrder {
    address owner;
    bytes32 orderHash;
    uint fillAmountB;
    uint requestedAmountS;
    uint requestedFeeAmount;
    address tokenRecipient;
    bytes extraData;
  }

  struct BrokerApprovalRequest {
    BrokerOrder[] orders;
    address tokenS;
    address tokenB;
    address feeToken;
    uint totalFillAmountB;
    uint totalRequestedAmountS;
    uint totalRequestedFeeAmount;
  }

  struct BrokerInterceptorReport {
    address owner;
    address broker;
    bytes32 orderHash;
    address tokenB;
    address tokenS;
    address feeToken;
    uint fillAmountB;
    uint spentAmountS;
    uint spentFeeAmount;
    address tokenRecipient;
    bytes extraData;
  }

}

// File: contracts/loopring/iface/IBrokerDelegate.sol

/*

  Copyright 2017 Loopring Project Ltd (Loopring Foundation).

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
*/

pragma solidity 0.5.7;
pragma experimental ABIEncoderV2;


/**
 * @title IBrokerDelegate
 * @author Zack Rubenstein
 */
interface IBrokerDelegate {

  /*
   * Loopring requests an allowance be set on a given token for a specified amount. Order details
   * are provided (tokenS, totalAmountS, tokenB, totalAmountB, orderTokenRecipient, extraOrderData)
   * to aid in any calculations or on-chain exchange of assets that may be required. The last 4
   * parameters concern the actual token approval being requested of the broker.
   *
   * @returns Whether or not onOrderFillReport should be called for orders using this broker
   */
  function brokerRequestAllowance(BrokerData.BrokerApprovalRequest calldata request) external returns (bool);

  /*
   * After Loopring performs all of the transfers necessary to complete all the submitted
   * rings it will call this function for every order's brokerInterceptor (if set) passing
   * along the final fill counts for tokenB, tokenS and feeToken. This allows actions to be
   * performed on a per-order basis after all tokenS/feeToken funds have left the order owner's
   * possesion and the tokenB funds have been transfered to the order owner's intended recipient
   */
  function onOrderFillReport(BrokerData.BrokerInterceptorReport calldata fillReport) external;

  /*
   * Get the available token balance controlled by the broker on behalf of an address (owner)
   */
  function brokerBalanceOf(address owner, address token) external view returns (uint);
}

// File: contracts/loopring/iface/ITradeDelegate.sol

/*

  Copyright 2017 Loopring Project Ltd (Loopring Foundation).

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
*/
pragma solidity 0.5.7;

/// @title ITradeDelegate
/// @dev Acts as a middle man to transfer ERC20 tokens on behalf of different
/// versions of Loopring protocol to avoid ERC20 re-authorization.
/// @author Daniel Wang - <[email protected]>.
contract ITradeDelegate {

    function isTrustedSubmitter(address submitter) public view returns (bool);

    function batchTransfer(
        bytes32[] calldata batch
    ) external;

    function brokerTransfer(
        address token,
        address broker,
        address recipient,
        uint amount
    ) external;

    function proxyBrokerRequestAllowance(
        BrokerData.BrokerApprovalRequest memory request,
        address broker
    ) public returns (bool);


    /// @dev Add a Loopring protocol address.
    /// @param addr A loopring protocol address.
    function authorizeAddress(
        address addr
        )
        external;

    /// @dev Remove a Loopring protocol address.
    /// @param addr A loopring protocol address.
    function deauthorizeAddress(
        address addr
        )
        external;

    function isAddressAuthorized(
        address addr
        )
        public
        view
        returns (bool);


    function suspend()
        external;

    function resume()
        external;

    function kill()
        external;
}

// File: contracts/loopring/iface/Errors.sol

/*

  Copyright 2017 Loopring Project Ltd (Loopring Foundation).

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
*/
pragma solidity 0.5.7;


/// @title Errors
contract Errors {
    string constant ZERO_VALUE                 = "ZERO_VALUE";
    string constant ZERO_ADDRESS               = "ZERO_ADDRESS";
    string constant INVALID_VALUE              = "INVALID_VALUE";
    string constant INVALID_ADDRESS            = "INVALID_ADDRESS";
    string constant INVALID_SIZE               = "INVALID_SIZE";
    string constant INVALID_MINER_SIGNATURE    = "INVALID_MINER_SIGNATURE";
    string constant INVALID_STATE              = "INVALID_STATE";
    string constant NOT_FOUND                  = "NOT_FOUND";
    string constant ALREADY_EXIST              = "ALREADY_EXIST";
    string constant REENTRY                    = "REENTRY";
    string constant UNAUTHORIZED               = "UNAUTHORIZED";
    string constant UNIMPLEMENTED              = "UNIMPLEMENTED";
    string constant UNSUPPORTED                = "UNSUPPORTED";
    string constant TRANSFER_FAILURE           = "TRANSFER_FAILURE";
    string constant BROKER_TRANSFER_FAILURE    = "BROKER_TRANSFER_FAILURE";
    string constant WITHDRAWAL_FAILURE         = "WITHDRAWAL_FAILURE";
    string constant BURN_FAILURE               = "BURN_FAILURE";
    string constant BURN_RATE_FROZEN           = "BURN_RATE_FROZEN";
    string constant BURN_RATE_MINIMIZED        = "BURN_RATE_MINIMIZED";
    string constant UNAUTHORIZED_ONCHAIN_ORDER = "UNAUTHORIZED_ONCHAIN_ORDER";
    string constant INVALID_CANDIDATE          = "INVALID_CANDIDATE";
    string constant ALREADY_VOTED              = "ALREADY_VOTED";
    string constant NOT_OWNER                  = "NOT_OWNER";
}

// File: contracts/loopring/lib/Ownable.sol

/*

  Copyright 2017 Loopring Project Ltd (Loopring Foundation).

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
*/
pragma solidity 0.5.7;


/// @title Ownable
/// @dev The Ownable contract has an owner address, and provides basic
///      authorization control functions, this simplifies the implementation of
///      "user permissions".
contract Ownable {
    address public owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    /// @dev The Ownable constructor sets the original `owner` of the contract
    ///      to the sender.
    constructor()
        public
    {
        owner = msg.sender;
    }

    /// @dev Throws if called by any account other than the owner.
    modifier onlyOwner()
    {
        require(msg.sender == owner, "NOT_OWNER");
        _;
    }

    /// @dev Allows the current owner to transfer control of the contract to a
    ///      newOwner.
    /// @param newOwner The address to transfer ownership to.
    function transferOwnership(
        address newOwner
        )
        public
        onlyOwner
    {
        require(newOwner != address(0x0), "ZERO_ADDRESS");
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
}

// File: contracts/loopring/lib/Claimable.sol

/*

  Copyright 2017 Loopring Project Ltd (Loopring Foundation).

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
*/
pragma solidity 0.5.7;



/// @title Claimable
/// @dev Extension for the Ownable contract, where the ownership needs
///      to be claimed. This allows the new owner to accept the transfer.
contract Claimable is Ownable {
    address public pendingOwner;

    /// @dev Modifier throws if called by any account other than the pendingOwner.
    modifier onlyPendingOwner() {
        require(msg.sender == pendingOwner, "UNAUTHORIZED");
        _;
    }

    /// @dev Allows the current owner to set the pendingOwner address.
    /// @param newOwner The address to transfer ownership to.
    function transferOwnership(
        address newOwner
        )
        public
        onlyOwner
    {
        require(newOwner != address(0x0) && newOwner != owner, "INVALID_ADDRESS");
        pendingOwner = newOwner;
    }

    /// @dev Allows the pendingOwner address to finalize the transfer.
    function claimOwnership()
        public
        onlyPendingOwner
    {
        emit OwnershipTransferred(owner, pendingOwner);
        owner = pendingOwner;
        pendingOwner = address(0x0);
    }
}

// File: contracts/loopring/lib/Authorizable.sol

/*

  Copyright 2017 Loopring Project Ltd (Loopring Foundation).

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
*/
pragma solidity 0.5.7;




/// @title Authorizable
/// @dev The Authorizable contract allows a contract to be used by other contracts
///      by authorizing it by the contract owner.
contract Authorizable is Claimable, Errors  {

    event AddressAuthorized(
        address indexed addr
    );

    event AddressDeauthorized(
        address indexed addr
    );

    // The list of all authorized addresses
    address[] authorizedAddresses;

    mapping (address => uint) private positionMap;

    struct AuthorizedAddress {
        uint    pos;
        address addr;
    }

    modifier onlyAuthorized()
    {
        require(positionMap[msg.sender] > 0, UNAUTHORIZED);
        _;
    }

    function authorizeAddress(
        address addr
        )
        external
        onlyOwner
    {
        require(address(0x0) != addr, ZERO_ADDRESS);
        require(0 == positionMap[addr], ALREADY_EXIST);
        require(isContract(addr), INVALID_ADDRESS);

        authorizedAddresses.push(addr);
        positionMap[addr] = authorizedAddresses.length;
        emit AddressAuthorized(addr);
    }

    function deauthorizeAddress(
        address addr
        )
        external
        onlyOwner
    {
        require(address(0x0) != addr, ZERO_ADDRESS);

        uint pos = positionMap[addr];
        require(pos != 0, NOT_FOUND);

        uint size = authorizedAddresses.length;
        if (pos != size) {
            address lastOne = authorizedAddresses[size - 1];
            authorizedAddresses[pos - 1] = lastOne;
            positionMap[lastOne] = pos;
        }

        authorizedAddresses.length -= 1;
        delete positionMap[addr];

        emit AddressDeauthorized(addr);
    }

    function isAddressAuthorized(
        address addr
        )
        public
        view
        returns (bool)
    {
        return positionMap[addr] > 0;
    }

    function isContract(
        address addr
        )
        internal
        view
        returns (bool)
    {
        uint size;
        assembly { size := extcodesize(addr) }
        return size > 0;
    }

}

// File: contracts/loopring/lib/ERC20SafeTransfer.sol

/*

  Copyright 2017 Loopring Project Ltd (Loopring Foundation).

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
*/
pragma solidity 0.5.7;


/// @title ERC20 safe transfer
/// @dev see https://github.com/sec-bit/badERC20Fix
/// @author Brecht Devos - <[email protected]>
library ERC20SafeTransfer {

    function safeTransfer(
        address token,
        address to,
        uint256 value)
        internal
        returns (bool success)
    {
        // A transfer is successful when 'call' is successful and depending on the token:
        // - No value is returned: we assume a revert when the transfer failed (i.e. 'call' returns false)
        // - A single boolean is returned: this boolean needs to be true (non-zero)

        // bytes4(keccak256("transfer(address,uint256)")) = 0xa9059cbb
        bytes memory callData = abi.encodeWithSelector(
            bytes4(0xa9059cbb),
            to,
            value
        );
        (success, ) = token.call(callData);
        return checkReturnValue(success);
    }

    function safeTransferFrom(
        address token,
        address from,
        address to,
        uint256 value)
        internal
        returns (bool success)
    {
        // A transferFrom is successful when 'call' is successful and depending on the token:
        // - No value is returned: we assume a revert when the transfer failed (i.e. 'call' returns false)
        // - A single boolean is returned: this boolean needs to be true (non-zero)

        // bytes4(keccak256("transferFrom(address,address,uint256)")) = 0x23b872dd
        bytes memory callData = abi.encodeWithSelector(
            bytes4(0x23b872dd),
            from,
            to,
            value
        );
        (success, ) = token.call(callData);
        return checkReturnValue(success);
    }

    function checkReturnValue(
        bool success
        )
        internal
        pure
        returns (bool)
    {
        // A transfer/transferFrom is successful when 'call' is successful and depending on the token:
        // - No value is returned: we assume a revert when the transfer failed (i.e. 'call' returns false)
        // - A single boolean is returned: this boolean needs to be true (non-zero)
        if (success) {
            assembly {
                switch returndatasize()
                // Non-standard ERC20: nothing is returned so if 'call' was successful we assume the transfer succeeded
                case 0 {
                    success := 1
                }
                // Standard ERC20: a single boolean value is returned which needs to be true
                case 32 {
                    returndatacopy(0, 0, 32)
                    success := mload(0)
                }
                // None of the above: not successful
                default {
                    success := 0
                }
            }
        }
        return success;
    }

}

// File: contracts/loopring/lib/Killable.sol

/*

  Copyright 2017 Loopring Project Ltd (Loopring Foundation).

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
*/
pragma solidity 0.5.7;




/// @title Killable
/// @dev The Killable contract allows the contract owner to suspend, resume or kill the contract
contract Killable is Claimable, Errors  {

    bool public suspended = false;

    modifier notSuspended()
    {
        require(!suspended, INVALID_STATE);
        _;
    }

    modifier isSuspended()
    {
        require(suspended, INVALID_STATE);
        _;
    }

    function suspend()
        external
        onlyOwner
        notSuspended
    {
        suspended = true;
    }

    function resume()
        external
        onlyOwner
        isSuspended
    {
        suspended = false;
    }

    /// owner must suspend the delegate first before invoking the kill method.
    function kill()
        external
        onlyOwner
        isSuspended
    {
        owner = address(0x0);
        emit OwnershipTransferred(owner, address(0x0));
    }
}

// File: contracts/loopring/lib/NoDefaultFunc.sol

/*

  Copyright 2017 Loopring Project Ltd (Loopring Foundation).

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
*/
pragma solidity 0.5.7;



/// @title NoDefaultFunc
/// @dev Disable default functions.
contract NoDefaultFunc is Errors {
    function ()
        external
        payable
    {
        revert(UNSUPPORTED);
    }
}

// File: contracts/loopring/impl/TradeDelegate.sol

/*

  Copyright 2017 Loopring Project Ltd (Loopring Foundation).

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
*/
pragma solidity 0.5.7;







/// @title An Implementation of ITradeDelegate.
/// @author Daniel Wang - <[email protected]>.
/// @author Kongliang Zhong - <[email protected]>.
contract TradeDelegate is ITradeDelegate, Authorizable, Killable, NoDefaultFunc {
    using ERC20SafeTransfer for address;

    mapping (address => bool) public trustedSubmitters;

    function addTrustedSubmitter(address submitter) public {
        require(owner == msg.sender, "UNAUTHORIZED");
        trustedSubmitters[submitter] = true;
    }

    function removeTrustedSubmitter(address submitter) public {
        require(owner == msg.sender, "UNAUTHORIZED");
        trustedSubmitters[submitter] = false;
    }

    function isTrustedSubmitter(address submitter) public view returns (bool) {
        return trustedSubmitters[submitter];
    }

    function brokerTransfer(
        address token,
        address broker,
        address recipient,
        uint amount
    ) external onlyAuthorized notSuspended {
        require(
            token.safeTransferFrom(broker, recipient, amount),
            BROKER_TRANSFER_FAILURE
        );
    }

    function proxyBrokerRequestAllowance(
        BrokerData.BrokerApprovalRequest memory request,
        address broker
    ) onlyAuthorized notSuspended public returns (bool) {
        return IBrokerDelegate(broker).brokerRequestAllowance(request);
    }

    function batchTransfer(
        bytes32[] calldata batch
        )
        external
        onlyAuthorized
        notSuspended
    {
        uint length = batch.length;
        require(length % 4 == 0, INVALID_SIZE);

        uint start = 68;
        uint end = start + length * 32;
        for (uint p = start; p < end; p += 128) {
            address token;
            address from;
            address to;
            uint amount;
            assembly {
                token := calldataload(add(p,  0))
                from := calldataload(add(p, 32))
                to := calldataload(add(p, 64))
                amount := calldataload(add(p, 96))
            }
            require(
                token.safeTransferFrom(from, to, amount),
                TRANSFER_FAILURE
            );
        }
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[],"name":"resume","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"trustedSubmitters","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"submitter","type":"address"}],"name":"isTrustedSubmitter","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"submitter","type":"address"}],"name":"addTrustedSubmitter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"kill","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"authorizeAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"broker","type":"address"},{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"}],"name":"brokerTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"suspended","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":[{"components":[{"components":[{"name":"owner","type":"address"},{"name":"orderHash","type":"bytes32"},{"name":"fillAmountB","type":"uint256"},{"name":"requestedAmountS","type":"uint256"},{"name":"requestedFeeAmount","type":"uint256"},{"name":"tokenRecipient","type":"address"},{"name":"extraData","type":"bytes"}],"name":"orders","type":"tuple[]"},{"name":"tokenS","type":"address"},{"name":"tokenB","type":"address"},{"name":"feeToken","type":"address"},{"name":"totalFillAmountB","type":"uint256"},{"name":"totalRequestedAmountS","type":"uint256"},{"name":"totalRequestedFeeAmount","type":"uint256"}],"name":"request","type":"tuple"},{"name":"broker","type":"address"}],"name":"proxyBrokerRequestAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"isAddressAuthorized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"suspend","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"deauthorizeAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"batch","type":"bytes32[]"}],"name":"batchTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"submitter","type":"address"}],"name":"removeTrustedSubmitter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"}],"name":"AddressAuthorized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"}],"name":"AddressDeauthorized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

60806040526004805460ff19169055600080546001600160a01b031916331790556118a08061002f6000396000f3fe6080604052600436106101095760003560e01c80638da5cb5b11610095578063e6400bbe11610064578063e6400bbe146102d4578063f2fde38b146102e9578063f73857cc14610309578063fa369e6614610329578063fd97c1a21461034957610109565b80638da5cb5b1461025d5780639282602a1461027f578063ced3fb9c1461029f578063e30c3978146102bf57610109565b806341c0e1b5116100dc57806341c0e1b5146101de5780634a5db3b5146101f35780634e71e0c8146102135780635bc3e21a14610228578063702efdf31461024857610109565b8063046f7da2146101515780630d7570e61461016857806331ac0d581461019e578063336754ef146101be575b604080518082018252600b8152600160aa1b6a155394d5541413d49511510260208201529051600160e51b62461bcd028152610148919060040161172a565b60405180910390fd5b34801561015d57600080fd5b50610166610369565b005b34801561017457600080fd5b506101886101833660046112fc565b6103f1565b604051610195919061171c565b60405180910390f35b3480156101aa57600080fd5b506101886101b93660046112fc565b610406565b3480156101ca57600080fd5b506101666101d93660046112fc565b610424565b3480156101ea57600080fd5b50610166610475565b3480156101ff57600080fd5b5061016661020e3660046112fc565b61052d565b34801561021f57600080fd5b506101666106fa565b34801561023457600080fd5b5061016661024336600461131a565b61078b565b34801561025457600080fd5b506101886108af565b34801561026957600080fd5b506102726108b8565b60405161019591906116e6565b34801561028b57600080fd5b5061018861029a3660046113db565b6108c7565b3480156102ab57600080fd5b506101886102ba3660046112fc565b6109fc565b3480156102cb57600080fd5b50610272610a19565b3480156102e057600080fd5b50610166610a28565b3480156102f557600080fd5b506101666103043660046112fc565b610ab4565b34801561031557600080fd5b506101666103243660046112fc565b610b48565b34801561033557600080fd5b5061016661034436600461137b565b610d07565b34801561035557600080fd5b506101666103643660046112fc565b610ebb565b6000546001600160a01b0316331461039657604051600160e51b62461bcd0281526004016101489061175b565b60045460408051808201909152600d8152600160981b6c494e56414c49445f53544154450260208201529060ff166103e457604051600160e51b62461bcd028152600401610148919061172a565b506004805460ff19169055565b60056020526000908152604090205460ff1681565b6001600160a01b031660009081526005602052604090205460ff1690565b6000546001600160a01b0316331461045157604051600160e51b62461bcd0281526004016101489061174b565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6000546001600160a01b031633146104a257604051600160e51b62461bcd0281526004016101489061175b565b60045460408051808201909152600d8152600160981b6c494e56414c49445f53544154450260208201529060ff166104f057604051600160e51b62461bcd028152600401610148919061172a565b50600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b0316331461055a57604051600160e51b62461bcd0281526004016101489061175b565b60408051808201909152600c8152600160a01b6b5a45524f5f414444524553530260208201526001600160a01b0382166105aa57604051600160e51b62461bcd028152600401610148919061172a565b506001600160a01b038116600090815260036020908152604091829020548251808401909352600d83527f414c52454144595f455849535400000000000000000000000000000000000000918301919091521561061d57604051600160e51b62461bcd028152600401610148919061172a565b5061062781610f09565b6040518060400160405280600f8152602001600160881b6e494e56414c49445f41444452455353028152509061067357604051600160e51b62461bcd028152600401610148919061172a565b50600280546001810182557f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b03841690811790915590546000828152600360205260408082209290925590517faa4a1856deca699ff17682b11b9090fe141669ccd7c1951ab8605ad8c9ab17759190a250565b6001546001600160a01b0316331461072757604051600160e51b62461bcd0281526004016101489061174b565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b33600090815260036020908152604091829020548251808401909352600c8352600160a21b6b15539055551213d49256915102918301919091526107e557604051600160e51b62461bcd028152600401610148919061172a565b5060045460408051808201909152600d8152600160981b6c494e56414c49445f53544154450260208201529060ff161561083557604051600160e51b62461bcd028152600401610148919061172a565b506108516001600160a01b03851684848463ffffffff610f0f16565b6040518060400160405280601781526020017f42524f4b45525f5452414e534645525f4641494c555245000000000000000000815250906108a857604051600160e51b62461bcd028152600401610148919061172a565b5050505050565b60045460ff1681565b6000546001600160a01b031681565b336000908152600360209081526040808320548151808301909252600c8252600160a21b6b15539055551213d49256915102928201929092529061092157604051600160e51b62461bcd028152600401610148919061172a565b5060045460408051808201909152600d8152600160981b6c494e56414c49445f53544154450260208201529060ff161561097157604051600160e51b62461bcd028152600401610148919061172a565b50604051600160e11b636616f84b0281526001600160a01b0383169063cc2df096906109a190869060040161176b565b602060405180830381600087803b1580156109bb57600080fd5b505af11580156109cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109f391908101906113bd565b90505b92915050565b6001600160a01b0316600090815260036020526040902054151590565b6001546001600160a01b031681565b6000546001600160a01b03163314610a5557604051600160e51b62461bcd0281526004016101489061175b565b60045460408051808201909152600d8152600160981b6c494e56414c49445f53544154450260208201529060ff1615610aa457604051600160e51b62461bcd028152600401610148919061172a565b506004805460ff19166001179055565b6000546001600160a01b03163314610ae157604051600160e51b62461bcd0281526004016101489061175b565b6001600160a01b03811615801590610b0757506000546001600160a01b03828116911614155b610b2657604051600160e51b62461bcd0281526004016101489061173b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610b7557604051600160e51b62461bcd0281526004016101489061175b565b60408051808201909152600c8152600160a01b6b5a45524f5f414444524553530260208201526001600160a01b038216610bc557604051600160e51b62461bcd028152600401610148919061172a565b506001600160a01b03811660009081526003602090815260409182902054825180840190935260098352600160ba1b681393d517d193d5539102918301919091529081610c2857604051600160e51b62461bcd028152600401610148919061172a565b50600254818114610cad57600060026001830381548110610c4557fe5b600091825260209091200154600280546001600160a01b03909216925082916000198601908110610c7257fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559290911681526003909152604090208290555b600280546000190190610cc09082611015565b506001600160a01b038316600081815260036020526040808220829055517fff697c8ffb6d1c8456e82cc41dade65a5222e9914aa8c020f55b73b617ad50c09190a2505050565b33600090815260036020908152604091829020548251808401909352600c8352600160a21b6b15539055551213d4925691510291830191909152610d6157604051600160e51b62461bcd028152600401610148919061172a565b5060045460408051808201909152600d8152600160981b6c494e56414c49445f53544154450260208201529060ff1615610db157604051600160e51b62461bcd028152600401610148919061172a565b5060408051808201909152600c81527f494e56414c49445f53495a450000000000000000000000000000000000000000602082015281906003821615610e0d57604051600160e51b62461bcd028152600401610148919061172a565b506044602082028101815b81811015610eb3578035602082013560408301356060840135610e4c6001600160a01b03851684848463ffffffff610f0f16565b6040518060400160405280601081526020017f5452414e534645525f4641494c5552450000000000000000000000000000000081525090610ea357604051600160e51b62461bcd028152600401610148919061172a565b5050505050608081019050610e18565b505050505050565b6000546001600160a01b03163314610ee857604051600160e51b62461bcd0281526004016101489061174b565b6001600160a01b03166000908152600560205260409020805460ff19169055565b3b151590565b600060606323b872dd60e01b858585604051602401610f30939291906116f4565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050509050856001600160a01b031681604051610f7d91906116d3565b6000604051808303816000865af19150503d8060008114610fba576040519150601f19603f3d011682016040523d82523d6000602084013e610fbf565b606091505b505080925050610fce82610fda565b9150505b949350505050565b60008115611011573d8015610ffa5760208114611003576000925061100f565b6001925061100f565b60206000803e60005192505b505b5090565b8154818355818111156110395760008381526020902061103991810190830161103e565b505050565b61105891905b808211156110115760008155600101611044565b90565b60006109f38235611804565b60008083601f84011261107957600080fd5b50813567ffffffffffffffff81111561109157600080fd5b6020830191508360208202830111156110a957600080fd5b9250929050565b600082601f8301126110c157600080fd5b81356110d46110cf826117a3565b61177c565b81815260209384019390925082018360005b8381101561111257813586016110fc8882611245565b84525060209283019291909101906001016110e6565b5050505092915050565b60006109f3825161180f565b60006109f38235611058565b600082601f83011261114557600080fd5b81356111536110cf826117c4565b9150808252602083016020830185838301111561116f57600080fd5b61117a838284611820565b50505092915050565b600060e0828403121561119557600080fd5b61119f60e061177c565b9050813567ffffffffffffffff8111156111b857600080fd5b6111c4848285016110b0565b82525060206111d58484830161105b565b60208301525060406111e98482850161105b565b60408301525060606111fd8482850161105b565b606083015250608061121184828501611128565b60808301525060a061122584828501611128565b60a08301525060c061123984828501611128565b60c08301525092915050565b600060e0828403121561125757600080fd5b61126160e061177c565b9050600061126f848461105b565b825250602061128084848301611128565b602083015250604061129484828501611128565b60408301525060606112a884828501611128565b60608301525060806112bc84828501611128565b60808301525060a06112d08482850161105b565b60a08301525060c082013567ffffffffffffffff8111156112f057600080fd5b61123984828501611134565b60006020828403121561130e57600080fd5b6000610fd2848461105b565b6000806000806080858703121561133057600080fd5b600061133c878761105b565b945050602061134d8782880161105b565b935050604061135e8782880161105b565b925050606061136f87828801611128565b91505092959194509250565b6000806020838503121561138e57600080fd5b823567ffffffffffffffff8111156113a557600080fd5b6113b185828601611067565b92509250509250929050565b6000602082840312156113cf57600080fd5b6000610fd2848461111c565b600080604083850312156113ee57600080fd5b823567ffffffffffffffff81111561140557600080fd5b61141185828601611183565b92505060206114228582860161105b565b9150509250929050565b60006109f3838361163f565b61144181611804565b82525050565b6000611452826117f2565b61145c81856117f6565b93508360208202850161146e856117ec565b60005b848110156114a557838303885261148983835161142c565b9250611494826117ec565b602098909801979150600101611471565b50909695505050505050565b6114418161180f565b61144181611058565b60006114ce826117f2565b6114d881856117ff565b93506114e881856020860161182c565b9290920192915050565b60006114fd826117f2565b61150781856117f6565b935061151781856020860161182c565b6115208161185c565b9093019392505050565b6000611537600f836117f6565b600160881b6e494e56414c49445f4144445245535302815260200192915050565b6000611565600c836117f6565b600160a21b6b15539055551213d49256915102815260200192915050565b60006115906009836117f6565b600160b91b682727aa2fa7aba722a902815260200192915050565b805160e0808452600091908401906115c38282611447565b91505060208301516115d86020860182611438565b5060408301516115eb6040860182611438565b5060608301516115fe6060860182611438565b50608083015161161160808601826114ba565b5060a083015161162460a08601826114ba565b5060c083015161163760c08601826114ba565b509392505050565b805160009060e08401906116538582611438565b50602083015161166660208601826114ba565b50604083015161167960408601826114ba565b50606083015161168c60608601826114ba565b50608083015161169f60808601826114ba565b5060a08301516116b260a0860182611438565b5060c083015184820360c08601526116ca82826114f2565b95945050505050565b60006116df82846114c3565b9392505050565b602081016109f68284611438565b606081016117028286611438565b61170f6020830185611438565b610fd260408301846114ba565b602081016109f682846114b1565b602080825281016109f381846114f2565b602080825281016109f68161152a565b602080825281016109f681611558565b602080825281016109f681611583565b602080825281016109f381846115ab565b60405181810167ffffffffffffffff8111828210171561179b57600080fd5b604052919050565b600067ffffffffffffffff8211156117ba57600080fd5b5060209081020190565b600067ffffffffffffffff8211156117db57600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b919050565b60006109f682611814565b151590565b6001600160a01b031690565b82818337506000910152565b60005b8381101561184757818101518382015260200161182f565b83811115611856576000848401525b50505050565b601f01601f19169056fea265627a7a72305820d474bfae06d790b118359401063ec5d41e52778bdc8a19c499300203bd334e936c6578706572696d656e74616cf50037

Deployed Bytecode

0x6080604052600436106101095760003560e01c80638da5cb5b11610095578063e6400bbe11610064578063e6400bbe146102d4578063f2fde38b146102e9578063f73857cc14610309578063fa369e6614610329578063fd97c1a21461034957610109565b80638da5cb5b1461025d5780639282602a1461027f578063ced3fb9c1461029f578063e30c3978146102bf57610109565b806341c0e1b5116100dc57806341c0e1b5146101de5780634a5db3b5146101f35780634e71e0c8146102135780635bc3e21a14610228578063702efdf31461024857610109565b8063046f7da2146101515780630d7570e61461016857806331ac0d581461019e578063336754ef146101be575b604080518082018252600b8152600160aa1b6a155394d5541413d49511510260208201529051600160e51b62461bcd028152610148919060040161172a565b60405180910390fd5b34801561015d57600080fd5b50610166610369565b005b34801561017457600080fd5b506101886101833660046112fc565b6103f1565b604051610195919061171c565b60405180910390f35b3480156101aa57600080fd5b506101886101b93660046112fc565b610406565b3480156101ca57600080fd5b506101666101d93660046112fc565b610424565b3480156101ea57600080fd5b50610166610475565b3480156101ff57600080fd5b5061016661020e3660046112fc565b61052d565b34801561021f57600080fd5b506101666106fa565b34801561023457600080fd5b5061016661024336600461131a565b61078b565b34801561025457600080fd5b506101886108af565b34801561026957600080fd5b506102726108b8565b60405161019591906116e6565b34801561028b57600080fd5b5061018861029a3660046113db565b6108c7565b3480156102ab57600080fd5b506101886102ba3660046112fc565b6109fc565b3480156102cb57600080fd5b50610272610a19565b3480156102e057600080fd5b50610166610a28565b3480156102f557600080fd5b506101666103043660046112fc565b610ab4565b34801561031557600080fd5b506101666103243660046112fc565b610b48565b34801561033557600080fd5b5061016661034436600461137b565b610d07565b34801561035557600080fd5b506101666103643660046112fc565b610ebb565b6000546001600160a01b0316331461039657604051600160e51b62461bcd0281526004016101489061175b565b60045460408051808201909152600d8152600160981b6c494e56414c49445f53544154450260208201529060ff166103e457604051600160e51b62461bcd028152600401610148919061172a565b506004805460ff19169055565b60056020526000908152604090205460ff1681565b6001600160a01b031660009081526005602052604090205460ff1690565b6000546001600160a01b0316331461045157604051600160e51b62461bcd0281526004016101489061174b565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6000546001600160a01b031633146104a257604051600160e51b62461bcd0281526004016101489061175b565b60045460408051808201909152600d8152600160981b6c494e56414c49445f53544154450260208201529060ff166104f057604051600160e51b62461bcd028152600401610148919061172a565b50600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b0316331461055a57604051600160e51b62461bcd0281526004016101489061175b565b60408051808201909152600c8152600160a01b6b5a45524f5f414444524553530260208201526001600160a01b0382166105aa57604051600160e51b62461bcd028152600401610148919061172a565b506001600160a01b038116600090815260036020908152604091829020548251808401909352600d83527f414c52454144595f455849535400000000000000000000000000000000000000918301919091521561061d57604051600160e51b62461bcd028152600401610148919061172a565b5061062781610f09565b6040518060400160405280600f8152602001600160881b6e494e56414c49445f41444452455353028152509061067357604051600160e51b62461bcd028152600401610148919061172a565b50600280546001810182557f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b03841690811790915590546000828152600360205260408082209290925590517faa4a1856deca699ff17682b11b9090fe141669ccd7c1951ab8605ad8c9ab17759190a250565b6001546001600160a01b0316331461072757604051600160e51b62461bcd0281526004016101489061174b565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b33600090815260036020908152604091829020548251808401909352600c8352600160a21b6b15539055551213d49256915102918301919091526107e557604051600160e51b62461bcd028152600401610148919061172a565b5060045460408051808201909152600d8152600160981b6c494e56414c49445f53544154450260208201529060ff161561083557604051600160e51b62461bcd028152600401610148919061172a565b506108516001600160a01b03851684848463ffffffff610f0f16565b6040518060400160405280601781526020017f42524f4b45525f5452414e534645525f4641494c555245000000000000000000815250906108a857604051600160e51b62461bcd028152600401610148919061172a565b5050505050565b60045460ff1681565b6000546001600160a01b031681565b336000908152600360209081526040808320548151808301909252600c8252600160a21b6b15539055551213d49256915102928201929092529061092157604051600160e51b62461bcd028152600401610148919061172a565b5060045460408051808201909152600d8152600160981b6c494e56414c49445f53544154450260208201529060ff161561097157604051600160e51b62461bcd028152600401610148919061172a565b50604051600160e11b636616f84b0281526001600160a01b0383169063cc2df096906109a190869060040161176b565b602060405180830381600087803b1580156109bb57600080fd5b505af11580156109cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109f391908101906113bd565b90505b92915050565b6001600160a01b0316600090815260036020526040902054151590565b6001546001600160a01b031681565b6000546001600160a01b03163314610a5557604051600160e51b62461bcd0281526004016101489061175b565b60045460408051808201909152600d8152600160981b6c494e56414c49445f53544154450260208201529060ff1615610aa457604051600160e51b62461bcd028152600401610148919061172a565b506004805460ff19166001179055565b6000546001600160a01b03163314610ae157604051600160e51b62461bcd0281526004016101489061175b565b6001600160a01b03811615801590610b0757506000546001600160a01b03828116911614155b610b2657604051600160e51b62461bcd0281526004016101489061173b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610b7557604051600160e51b62461bcd0281526004016101489061175b565b60408051808201909152600c8152600160a01b6b5a45524f5f414444524553530260208201526001600160a01b038216610bc557604051600160e51b62461bcd028152600401610148919061172a565b506001600160a01b03811660009081526003602090815260409182902054825180840190935260098352600160ba1b681393d517d193d5539102918301919091529081610c2857604051600160e51b62461bcd028152600401610148919061172a565b50600254818114610cad57600060026001830381548110610c4557fe5b600091825260209091200154600280546001600160a01b03909216925082916000198601908110610c7257fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559290911681526003909152604090208290555b600280546000190190610cc09082611015565b506001600160a01b038316600081815260036020526040808220829055517fff697c8ffb6d1c8456e82cc41dade65a5222e9914aa8c020f55b73b617ad50c09190a2505050565b33600090815260036020908152604091829020548251808401909352600c8352600160a21b6b15539055551213d4925691510291830191909152610d6157604051600160e51b62461bcd028152600401610148919061172a565b5060045460408051808201909152600d8152600160981b6c494e56414c49445f53544154450260208201529060ff1615610db157604051600160e51b62461bcd028152600401610148919061172a565b5060408051808201909152600c81527f494e56414c49445f53495a450000000000000000000000000000000000000000602082015281906003821615610e0d57604051600160e51b62461bcd028152600401610148919061172a565b506044602082028101815b81811015610eb3578035602082013560408301356060840135610e4c6001600160a01b03851684848463ffffffff610f0f16565b6040518060400160405280601081526020017f5452414e534645525f4641494c5552450000000000000000000000000000000081525090610ea357604051600160e51b62461bcd028152600401610148919061172a565b5050505050608081019050610e18565b505050505050565b6000546001600160a01b03163314610ee857604051600160e51b62461bcd0281526004016101489061174b565b6001600160a01b03166000908152600560205260409020805460ff19169055565b3b151590565b600060606323b872dd60e01b858585604051602401610f30939291906116f4565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050509050856001600160a01b031681604051610f7d91906116d3565b6000604051808303816000865af19150503d8060008114610fba576040519150601f19603f3d011682016040523d82523d6000602084013e610fbf565b606091505b505080925050610fce82610fda565b9150505b949350505050565b60008115611011573d8015610ffa5760208114611003576000925061100f565b6001925061100f565b60206000803e60005192505b505b5090565b8154818355818111156110395760008381526020902061103991810190830161103e565b505050565b61105891905b808211156110115760008155600101611044565b90565b60006109f38235611804565b60008083601f84011261107957600080fd5b50813567ffffffffffffffff81111561109157600080fd5b6020830191508360208202830111156110a957600080fd5b9250929050565b600082601f8301126110c157600080fd5b81356110d46110cf826117a3565b61177c565b81815260209384019390925082018360005b8381101561111257813586016110fc8882611245565b84525060209283019291909101906001016110e6565b5050505092915050565b60006109f3825161180f565b60006109f38235611058565b600082601f83011261114557600080fd5b81356111536110cf826117c4565b9150808252602083016020830185838301111561116f57600080fd5b61117a838284611820565b50505092915050565b600060e0828403121561119557600080fd5b61119f60e061177c565b9050813567ffffffffffffffff8111156111b857600080fd5b6111c4848285016110b0565b82525060206111d58484830161105b565b60208301525060406111e98482850161105b565b60408301525060606111fd8482850161105b565b606083015250608061121184828501611128565b60808301525060a061122584828501611128565b60a08301525060c061123984828501611128565b60c08301525092915050565b600060e0828403121561125757600080fd5b61126160e061177c565b9050600061126f848461105b565b825250602061128084848301611128565b602083015250604061129484828501611128565b60408301525060606112a884828501611128565b60608301525060806112bc84828501611128565b60808301525060a06112d08482850161105b565b60a08301525060c082013567ffffffffffffffff8111156112f057600080fd5b61123984828501611134565b60006020828403121561130e57600080fd5b6000610fd2848461105b565b6000806000806080858703121561133057600080fd5b600061133c878761105b565b945050602061134d8782880161105b565b935050604061135e8782880161105b565b925050606061136f87828801611128565b91505092959194509250565b6000806020838503121561138e57600080fd5b823567ffffffffffffffff8111156113a557600080fd5b6113b185828601611067565b92509250509250929050565b6000602082840312156113cf57600080fd5b6000610fd2848461111c565b600080604083850312156113ee57600080fd5b823567ffffffffffffffff81111561140557600080fd5b61141185828601611183565b92505060206114228582860161105b565b9150509250929050565b60006109f3838361163f565b61144181611804565b82525050565b6000611452826117f2565b61145c81856117f6565b93508360208202850161146e856117ec565b60005b848110156114a557838303885261148983835161142c565b9250611494826117ec565b602098909801979150600101611471565b50909695505050505050565b6114418161180f565b61144181611058565b60006114ce826117f2565b6114d881856117ff565b93506114e881856020860161182c565b9290920192915050565b60006114fd826117f2565b61150781856117f6565b935061151781856020860161182c565b6115208161185c565b9093019392505050565b6000611537600f836117f6565b600160881b6e494e56414c49445f4144445245535302815260200192915050565b6000611565600c836117f6565b600160a21b6b15539055551213d49256915102815260200192915050565b60006115906009836117f6565b600160b91b682727aa2fa7aba722a902815260200192915050565b805160e0808452600091908401906115c38282611447565b91505060208301516115d86020860182611438565b5060408301516115eb6040860182611438565b5060608301516115fe6060860182611438565b50608083015161161160808601826114ba565b5060a083015161162460a08601826114ba565b5060c083015161163760c08601826114ba565b509392505050565b805160009060e08401906116538582611438565b50602083015161166660208601826114ba565b50604083015161167960408601826114ba565b50606083015161168c60608601826114ba565b50608083015161169f60808601826114ba565b5060a08301516116b260a0860182611438565b5060c083015184820360c08601526116ca82826114f2565b95945050505050565b60006116df82846114c3565b9392505050565b602081016109f68284611438565b606081016117028286611438565b61170f6020830185611438565b610fd260408301846114ba565b602081016109f682846114b1565b602080825281016109f381846114f2565b602080825281016109f68161152a565b602080825281016109f681611558565b602080825281016109f681611583565b602080825281016109f381846115ab565b60405181810167ffffffffffffffff8111828210171561179b57600080fd5b604052919050565b600067ffffffffffffffff8211156117ba57600080fd5b5060209081020190565b600067ffffffffffffffff8211156117db57600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b919050565b60006109f682611814565b151590565b6001600160a01b031690565b82818337506000910152565b60005b8381101561184757818101518382015260200161182f565b83811115611856576000848401525b50505050565b601f01601f19169056fea265627a7a72305820d474bfae06d790b118359401063ec5d41e52778bdc8a19c499300203bd334e936c6578706572696d656e74616cf50037

Deployed Bytecode Sourcemap

20933:2097:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20035:11;;;;;;;;;;;-1:-1:-1;;;;;20035:11:0;;;;20028:19;;-1:-1:-1;;;;;20028:19:0;;;;20035:11;20028:19;;;;;;;;;;;;18769:117;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18769:117:0;;;:::i;:::-;;21064:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21064:50:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;21471:128;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21471:128:0;;;;;;;;:::i;21123:164::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21123:164:0;;;;;;;;:::i;18974:175::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18974:175:0;;;:::i;12516:413::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12516:413:0;;;;;;;;:::i;10897:207::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10897:207:0;;;:::i;21607:306::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21607:306:0;;;;;;;;:::i;18403:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18403:29:0;;;:::i;8369:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8369:20:0;;;:::i;:::-;;;;;;;;21921:258;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21921:258:0;;;;;;;;:::i;13559:169::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13559:169:0;;;;;;;;:::i;10213:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10213:27:0;;;:::i;18643:118::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18643:118:0;;;:::i;10586:231::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10586:231:0;;;;;;;;:::i;12937:614::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12937:614:0;;;;;;;;:::i;22187:840::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;22187:840:0;;;;;;;;:::i;21295:168::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21295:168:0;;;;;;;;:::i;18769:117::-;8831:5;;-1:-1:-1;;;;;8831:5:0;8817:10;:19;8809:41;;;;-1:-1:-1;;;;;8809:41:0;;;;;;;;;18590:9;;18601:13;;;;;;;;;;;;-1:-1:-1;;;;;18601:13:0;;;;;18590:9;;18582:33;;;;-1:-1:-1;;;;;18582:33:0;;;;;;;;;;-1:-1:-1;18861:9:0;:17;;-1:-1:-1;;18861:17:0;;;18769:117::o;21064:50::-;;;;;;;;;;;;;;;:::o;21471:128::-;-1:-1:-1;;;;;21563:28:0;21539:4;21563:28;;;:17;:28;;;;;;;;;21471:128::o;21123:164::-;21197:5;;-1:-1:-1;;;;;21197:5:0;21206:10;21197:19;21189:44;;;;-1:-1:-1;;;;;21189:44:0;;;;;;;;;-1:-1:-1;;;;;21244:28:0;;;;;:17;:28;;;;;:35;;-1:-1:-1;;21244:35:0;21275:4;21244:35;;;21123:164::o;18974:175::-;8831:5;;-1:-1:-1;;;;;8831:5:0;8817:10;:19;8809:41;;;;-1:-1:-1;;;;;8809:41:0;;;;;;;;;18590:9;;18601:13;;;;;;;;;;;;-1:-1:-1;;;;;18601:13:0;;;;;18590:9;;18582:33;;;;-1:-1:-1;;;;;18582:33:0;;;;;;;;;;-1:-1:-1;19080:3:0;19064:20;;-1:-1:-1;;;;;;19064:20:0;;;19100:41;;19080:3;;19100:41;;19080:3;;19100:41;18974:175::o;12516:413::-;8831:5;;-1:-1:-1;;;;;8831:5:0;8817:10;:19;8809:41;;;;-1:-1:-1;;;;;8809:41:0;;;;;;;;;12659:12;;;;;;;;;;;;-1:-1:-1;;;;;12659:12:0;;;;-1:-1:-1;;;;;12637:20:0;;12629:43;;;;-1:-1:-1;;;;;12629:43:0;;;;;;;;;;-1:-1:-1;;;;;;12696:17:0;;;;;;:11;:17;;;;;;;;;;12715:13;;;;;;;;;;;;;;;;;;;12691:22;12683:46;;;;-1:-1:-1;;;;;12683:46:0;;;;;;;;;;;12748:16;12759:4;12748:10;:16::i;:::-;12766:15;;;;;;;;;;;;;-1:-1:-1;;;;;12766:15:0;;;12740:42;;;;;-1:-1:-1;;;;;12740:42:0;;;;;;;;;;-1:-1:-1;12795:19:0;27:10:-1;;39:1;23:18;;45:23;;12795:30:0;;;;-1:-1:-1;;;;;;12795:30:0;-1:-1:-1;;;;;12795:30:0;;;;;;;;12856:26;;-1:-1:-1;12836:17:0;;;:11;12795:30;12836:17;;;;;:46;;;;12898:23;;;;-1:-1:-1;12898:23:0;12516:413;:::o;10897:207::-;10394:12;;-1:-1:-1;;;;;10394:12:0;10380:10;:26;10372:51;;;;-1:-1:-1;;;;;10372:51:0;;;;;;;;;11014:12;;;11007:5;;10986:41;;-1:-1:-1;;;;;11014:12:0;;;;11007:5;;;;10986:41;;;11046:12;;;;11038:20;;-1:-1:-1;;;;;;11038:20:0;;;-1:-1:-1;;;;;11046:12:0;;11038:20;;;;11069:27;;;10897:207::o;21607:306::-;12458:10;12472:1;12446:23;;;:11;:23;;;;;;;;;;12475:12;;;;;;;;;;;-1:-1:-1;;;;;12475:12:0;;;;;;;12438:50;;;;-1:-1:-1;;;;;12438:50:0;;;;;;;;;;-1:-1:-1;18490:9:0;;18501:13;;;;;;;;;;;;-1:-1:-1;;;;;18501:13:0;;;;;18490:9;;18489:10;18481:34;;;;-1:-1:-1;;;;;18481:34:0;;;;;;;;;;-1:-1:-1;21807:49:0;-1:-1:-1;;;;;21807:22:0;;21830:6;21838:9;21849:6;21807:49;:22;:49;:::i;:::-;21871:23;;;;;;;;;;;;;;;;;21785:120;;;;;-1:-1:-1;;;;;21785:120:0;;;;;;;;;;;21607:306;;;;:::o;18403:29::-;;;;;;:::o;8369:20::-;;;-1:-1:-1;;;;;8369:20:0;;:::o;21921:258::-;12458:10;22092:4;12446:23;;;:11;:23;;;;;;;;;12475:12;;;;;;;;;;;-1:-1:-1;;;;;12475:12:0;;;;;;;;12438:50;;;;-1:-1:-1;;;;;12438:50:0;;;;;;;;;;-1:-1:-1;18490:9:0;;18501:13;;;;;;;;;;;;-1:-1:-1;;;;;18501:13:0;;;;;18490:9;;18489:10;18481:34;;;;-1:-1:-1;;;;;18481:34:0;;;;;;;;;;-1:-1:-1;22116:55:0;;-1:-1:-1;;;;;22116:55:0;;-1:-1:-1;;;;;22116:46:0;;;;;:55;;22163:7;;22116:55;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22116:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22116:55:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;22116:55:0;;;;;;;;;22109:62;;18526:1;21921:258;;;;:::o;13559:169::-;-1:-1:-1;;;;;13699:17:0;13670:4;13699:17;;;:11;:17;;;;;;:21;;;13559:169::o;10213:27::-;;;-1:-1:-1;;;;;10213:27:0;;:::o;18643:118::-;8831:5;;-1:-1:-1;;;;;8831:5:0;8817:10;:19;8809:41;;;;-1:-1:-1;;;;;8809:41:0;;;;;;;;;18490:9;;18501:13;;;;;;;;;;;;-1:-1:-1;;;;;18501:13:0;;;;;18490:9;;18489:10;18481:34;;;;-1:-1:-1;;;;;18481:34:0;;;;;;;;;;-1:-1:-1;18737:9:0;:16;;-1:-1:-1;;18737:16:0;18749:4;18737:16;;;18643:118::o;10586:231::-;8831:5;;-1:-1:-1;;;;;8831:5:0;8817:10;:19;8809:41;;;;-1:-1:-1;;;;;8809:41:0;;;;;;;;;-1:-1:-1;;;;;10710:24:0;;;;;;:45;;-1:-1:-1;10750:5:0;;-1:-1:-1;;;;;10738:17:0;;;10750:5;;10738:17;;10710:45;10702:73;;;;-1:-1:-1;;;;;10702:73:0;;;;;;;;;10786:12;:23;;-1:-1:-1;;;;;;10786:23:0;-1:-1:-1;;;;;10786:23:0;;;;;;;;;;10586:231::o;12937:614::-;8831:5;;-1:-1:-1;;;;;8831:5:0;8817:10;:19;8809:41;;;;-1:-1:-1;;;;;8809:41:0;;;;;;;;;13082:12;;;;;;;;;;;;-1:-1:-1;;;;;13082:12:0;;;;-1:-1:-1;;;;;13060:20:0;;13052:43;;;;-1:-1:-1;;;;;13052:43:0;;;;;;;;;;-1:-1:-1;;;;;;13119:17:0;;13108:8;13119:17;;;:11;:17;;;;;;;;;;13165:9;;;;;;;;;;;-1:-1:-1;;;;;13165:9:0;;;;;;;13119:17;13155:8;13147:28;;;;-1:-1:-1;;;;;13147:28:0;;;;;;;;;;-1:-1:-1;13200:19:0;:26;13241:11;;;13237:185;;13269:15;13287:19;13314:1;13307:4;:8;13287:29;;;;;;;;;;;;;;;;;;13331:19;:28;;-1:-1:-1;;;;;13287:29:0;;;;-1:-1:-1;13287:29:0;;-1:-1:-1;;13351:7:0;;;13331:28;;;;;;;;;;;;;;;;;;:38;;-1:-1:-1;;;;;;13331:38:0;-1:-1:-1;;;;;13331:38:0;;;;;;13384:20;;;;;;:11;:20;;;;;;:26;;;13237:185;13434:19;:31;;-1:-1:-1;;13434:31:0;;;;;;:::i;:::-;-1:-1:-1;;;;;;13483:17:0;;;;;;:11;:17;;;;;;13476:24;;;13518:25;;;13483:17;13518:25;8861:1;;12937:614;:::o;22187:840::-;12458:10;12472:1;12446:23;;;:11;:23;;;;;;;;;;12475:12;;;;;;;;;;;-1:-1:-1;;;;;12475:12:0;;;;;;;12438:50;;;;-1:-1:-1;;;;;12438:50:0;;;;;;;;;;-1:-1:-1;18490:9:0;;18501:13;;;;;;;;;;;;-1:-1:-1;;;;;18501:13:0;;;;;18490:9;;18489:10;18481:34;;;;-1:-1:-1;;;;;18481:34:0;;;;;;;;;;-1:-1:-1;22398:12:0;;;;;;;;;;;;;;;;;22350:5;;22381:10;;;:15;22373:38;;;;-1:-1:-1;;;;;22373:38:0;;;;;;;;;;-1:-1:-1;22437:2:0;22478;22469:11;;22461:19;;22437:2;22491:529;22516:3;22512:1;:7;22491:529;;;22689:24;;22759:2;22752:10;;22739:24;22807:2;22800:10;;22787:24;22859:2;22852:10;;22839:24;22918:40;-1:-1:-1;;;;;22918:22:0;;22739:24;22787;22839;22918:40;:22;:40;:::i;:::-;22977:16;;;;;;;;;;;;;;;;;22892:116;;;;;-1:-1:-1;;;;;22892:116:0;;;;;;;;;;;22491:529;;;;22526:3;22521:8;;;;22491:529;;;;18526:1;;;22187:840;;:::o;21295:168::-;21372:5;;-1:-1:-1;;;;;21372:5:0;21381:10;21372:19;21364:44;;;;-1:-1:-1;;;;;21364:44:0;;;;;;;;;-1:-1:-1;;;;;21419:28:0;21450:5;21419:28;;;:17;:28;;;;;:36;;-1:-1:-1;;21419:36:0;;;21295:168::o;13736:217::-;13901:17;13937:8;;;13736:217::o;15587:801::-;15742:12;16146:21;16214:10;16207:18;;16240:4;16259:2;16276:5;16170:122;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;16170:122:0;;;;-1:-1:-1;;;;;16170:122:0;;38:4:-1;29:7;25:18;67:10;61:17;-1:-1;;;;;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;16170:122:0;16146:146;;16317:5;-1:-1:-1;;;;;16317:10:0;16328:8;16317:20;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;16303:34:0;;;;;16355:25;16372:7;16355:16;:25::i;:::-;16348:32;;;15587:801;;;;;;;:::o;16396:1127::-;16506:4;16829:7;16825:666;;;16888:16;17043:61;;;;17221:2;17216:115;;;;17445:1;17434:12;;16881:584;;17043:61;17084:1;17073:12;;17043:61;;17216:115;17268:2;17265:1;17262;17247:24;17310:1;17304:8;17293:19;;16881:584;;16862:618;-1:-1:-1;17508:7:0;16396:1127::o;20933:2097::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;5:118:-1:-;;72:46;110:6;97:20;72:46;;148:352;;;278:3;271:4;263:6;259:17;255:27;245:2;;296:1;293;286:12;245:2;-1:-1;316:20;;356:18;345:30;;342:2;;;388:1;385;378:12;342:2;422:4;414:6;410:17;398:29;;473:3;465:4;457:6;453:17;443:8;439:32;436:41;433:2;;;490:1;487;480:12;433:2;238:262;;;;;;548:739;;684:3;677:4;669:6;665:17;661:27;651:2;;702:1;699;692:12;651:2;739:6;726:20;761:99;776:83;852:6;776:83;;;761:99;;;888:21;;;932:4;920:17;;;;752:108;;-1:-1;945:14;;920:17;1040:1;1025:256;1050:6;1047:1;1044:13;1025:256;;;1133:3;1120:17;1112:6;1108:30;1157:60;1213:3;1201:10;1157:60;;;1145:73;;-1:-1;1241:4;1232:14;;;;1260;;;;;1072:1;1065:9;1025:256;;;1029:14;644:643;;;;;;;;1295:116;;1370:36;1398:6;1392:13;1370:36;;1418:118;;1485:46;1523:6;1510:20;1485:46;;1544:432;;1641:3;1634:4;1626:6;1622:17;1618:27;1608:2;;1659:1;1656;1649:12;1608:2;1696:6;1683:20;1718:60;1733:44;1770:6;1733:44;;1718:60;1709:69;;1798:6;1791:5;1784:21;1834:4;1826:6;1822:17;1867:4;1860:5;1856:16;1902:3;1893:6;1888:3;1884:16;1881:25;1878:2;;;1919:1;1916;1909:12;1878:2;1929:41;1963:6;1958:3;1953;1929:41;;;1601:375;;;;;;;;2030:1389;;2156:4;2144:9;2139:3;2135:19;2131:30;2128:2;;;2174:1;2171;2164:12;2128:2;2192:20;2207:4;2192:20;;;2183:29;-1:-1;2264:31;;2315:18;2304:30;;2301:2;;;2347:1;2344;2337:12;2301:2;2381:93;2470:3;2461:6;2450:9;2446:22;2381:93;;;2357:118;;-1:-1;2538:2;2571:49;2616:3;2592:22;;;2571:49;;;2564:4;2557:5;2553:16;2546:75;2496:136;2684:2;2717:49;2762:3;2753:6;2742:9;2738:22;2717:49;;;2710:4;2703:5;2699:16;2692:75;2642:136;2832:2;2865:49;2910:3;2901:6;2890:9;2886:22;2865:49;;;2858:4;2851:5;2847:16;2840:75;2788:138;2988:3;3022:49;3067:3;3058:6;3047:9;3043:22;3022:49;;;3015:4;3008:5;3004:16;2997:75;2936:147;3150:3;3184:49;3229:3;3220:6;3209:9;3205:22;3184:49;;;3177:4;3170:5;3166:16;3159:75;3093:152;3314:3;3348:49;3393:3;3384:6;3373:9;3369:22;3348:49;;;3341:4;3334:5;3330:16;3323:75;3255:154;2122:1297;;;;;3462:1332;;3574:4;3562:9;3557:3;3553:19;3549:30;3546:2;;;3592:1;3589;3582:12;3546:2;3610:20;3625:4;3610:20;;;3601:29;-1:-1;3681:1;3712:49;3757:3;3737:9;3712:49;;;3688:74;;-1:-1;3828:2;3861:49;3906:3;3882:22;;;3861:49;;;3854:4;3847:5;3843:16;3836:75;3783:139;3979:2;4012:49;4057:3;4048:6;4037:9;4033:22;4012:49;;;4005:4;3998:5;3994:16;3987:75;3932:141;4135:2;4168:49;4213:3;4204:6;4193:9;4189:22;4168:49;;;4161:4;4154:5;4150:16;4143:75;4083:146;4293:3;4327:49;4372:3;4363:6;4352:9;4348:22;4327:49;;;4320:4;4313:5;4309:16;4302:75;4239:149;4448:3;4482:49;4527:3;4518:6;4507:9;4503:22;4482:49;;;4475:4;4468:5;4464:16;4457:75;4398:145;4626:3;4615:9;4611:19;4598:33;4651:18;4643:6;4640:30;4637:2;;;4683:1;4680;4673:12;4637:2;4718:54;4768:3;4759:6;4748:9;4744:22;4718:54;;4926:241;;5030:2;5018:9;5009:7;5005:23;5001:32;4998:2;;;5046:1;5043;5036:12;4998:2;5081:1;5098:53;5143:7;5123:9;5098:53;;5174:617;;;;;5329:3;5317:9;5308:7;5304:23;5300:33;5297:2;;;5346:1;5343;5336:12;5297:2;5381:1;5398:53;5443:7;5423:9;5398:53;;;5388:63;;5360:97;5488:2;5506:53;5551:7;5542:6;5531:9;5527:22;5506:53;;;5496:63;;5467:98;5596:2;5614:53;5659:7;5650:6;5639:9;5635:22;5614:53;;;5604:63;;5575:98;5704:2;5722:53;5767:7;5758:6;5747:9;5743:22;5722:53;;;5712:63;;5683:98;5291:500;;;;;;;;5798:397;;;5937:2;5925:9;5916:7;5912:23;5908:32;5905:2;;;5953:1;5950;5943:12;5905:2;5988:31;;6039:18;6028:30;;6025:2;;;6071:1;6068;6061:12;6025:2;6099:80;6171:7;6162:6;6151:9;6147:22;6099:80;;;6089:90;;;;5967:218;5899:296;;;;;;6202:257;;6314:2;6302:9;6293:7;6289:23;6285:32;6282:2;;;6330:1;6327;6320:12;6282:2;6365:1;6382:61;6435:7;6415:9;6382:61;;6466:526;;;6624:2;6612:9;6603:7;6599:23;6595:32;6592:2;;;6640:1;6637;6630:12;6592:2;6675:31;;6726:18;6715:30;;6712:2;;;6758:1;6755;6748:12;6712:2;6778:90;6860:7;6851:6;6840:9;6836:22;6778:90;;;6768:100;;6654:220;6905:2;6923:53;6968:7;6959:6;6948:9;6944:22;6923:53;;;6913:63;;6884:98;6586:406;;;;;;7000:249;;7147:96;7239:3;7231:6;7147:96;;7257:110;7330:31;7355:5;7330:31;;;7325:3;7318:44;7312:55;;;7576:927;;7753:73;7820:5;7753:73;;;7839:99;7931:6;7926:3;7839:99;;;7832:106;;7961:3;8003:4;7995:6;7991:17;7986:3;7982:27;8029:75;8098:5;8029:75;;;8125:1;8110:354;8135:6;8132:1;8129:13;8110:354;;;8197:9;8191:4;8187:20;8182:3;8175:33;8223:110;8328:4;8319:6;8313:13;8223:110;;;8215:118;;8350:79;8422:6;8350:79;;;8452:4;8443:14;;;;;8340:89;-1:-1;8157:1;8150:9;8110:354;;;-1:-1;8477:4;;7732:771;-1:-1;;;;;;7732:771;8511:111;8588:28;8610:5;8588:28;;8629:110;8702:31;8727:5;8702:31;;8746:356;;8874:38;8906:5;8874:38;;;8924:88;9005:6;9000:3;8924:88;;;8917:95;;9017:52;9062:6;9057:3;9050:4;9043:5;9039:16;9017:52;;;9081:16;;;;;8854:248;-1:-1;;8854:248;9109:315;;9205:34;9233:5;9205:34;;;9251:60;9304:6;9299:3;9251:60;;;9244:67;;9316:52;9361:6;9356:3;9349:4;9342:5;9338:16;9316:52;;;9389:29;9411:6;9389:29;;;9380:39;;;;9185:239;-1:-1;;;9185:239;9778:364;;9938:67;10002:2;9997:3;9938:67;;;-1:-1;;;;;10018:87;;10133:2;10124:12;;9924:218;-1:-1;;9924:218;10151:364;;10311:67;10375:2;10370:3;10311:67;;;-1:-1;;;;;10391:87;;10506:2;10497:12;;10297:218;-1:-1;;10297:218;10524:363;;10684:66;10748:1;10743:3;10684:66;;;-1:-1;;;;;10763:87;;10878:2;10869:12;;10670:217;-1:-1;;10670:217;10984:1479;11226:22;;11159:4;11261:37;;;10984:1479;;11150:14;;;;11313:144;11150:14;11226:22;11313:144;;;11305:152;;11179:290;11543:4;11536:5;11532:16;11526:23;11555:62;11611:4;11606:3;11602:14;11589:11;11555:62;;;11479:144;11697:4;11690:5;11686:16;11680:23;11709:62;11765:4;11760:3;11756:14;11743:11;11709:62;;;11633:144;11853:4;11846:5;11842:16;11836:23;11865:62;11921:4;11916:3;11912:14;11899:11;11865:62;;;11787:146;12017:4;12010:5;12006:16;12000:23;12029:62;12085:4;12080:3;12076:14;12063:11;12029:62;;;11943:154;12186:4;12179:5;12175:16;12169:23;12198:62;12254:4;12249:3;12245:14;12232:11;12198:62;;;12107:159;12357:4;12350:5;12346:16;12340:23;12369:62;12425:4;12420:3;12416:14;12403:11;12369:62;;;-1:-1;12454:4;11132:1331;-1:-1;;;11132:1331;12539:1363;12746:22;;12539:1363;;12680:4;12671:14;;;12774:61;12675:3;12746:22;12774:61;;;12700:141;12918:4;12911:5;12907:16;12901:23;12930:62;12986:4;12981:3;12977:14;12964:11;12930:62;;;12851:147;13077:4;13070:5;13066:16;13060:23;13089:62;13145:4;13140:3;13136:14;13123:11;13089:62;;;13008:149;13241:4;13234:5;13230:16;13224:23;13253:62;13309:4;13304:3;13300:14;13287:11;13253:62;;;13167:154;13407:4;13400:5;13396:16;13390:23;13419:62;13475:4;13470:3;13466:14;13453:11;13419:62;;;13331:156;13569:4;13562:5;13558:16;13552:23;13581:62;13637:4;13632:3;13628:14;13615:11;13581:62;;;13497:152;13726:4;13719:5;13715:16;13709:23;13778:3;13772:4;13768:14;13761:4;13756:3;13752:14;13745:38;13798:66;13859:4;13846:11;13798:66;;;13790:74;12653:1249;-1:-1;;;;;12653:1249;14153:262;;14297:93;14386:3;14377:6;14297:93;;;14290:100;14278:137;-1:-1;;;14278:137;14422:213;14540:2;14525:18;;14554:71;14529:9;14598:6;14554:71;;14642:435;14816:2;14801:18;;14830:71;14805:9;14874:6;14830:71;;;14912:72;14980:2;14969:9;14965:18;14956:6;14912:72;;;14995;15063:2;15052:9;15048:18;15039:6;14995:72;;15084:201;15196:2;15181:18;;15210:65;15185:9;15248:6;15210:65;;15292:293;15426:2;15440:47;;;15411:18;;15501:74;15411:18;15561:6;15501:74;;15592:407;15783:2;15797:47;;;15768:18;;15858:131;15768:18;15858:131;;16006:407;16197:2;16211:47;;;16182:18;;16272:131;16182:18;16272:131;;16420:407;16611:2;16625:47;;;16596:18;;16686:131;16596:18;16686:131;;16834:409;17026:2;17040:47;;;17011:18;;17101:132;17011:18;17219:6;17101:132;;17250:256;17312:2;17306:9;17338:17;;;17413:18;17398:34;;17434:22;;;17395:62;17392:2;;;17470:1;17467;17460:12;17392:2;17486;17479:22;17290:216;;-1:-1;17290:216;17513:277;;17691:18;17683:6;17680:30;17677:2;;;17723:1;17720;17713:12;17677:2;-1:-1;17752:4;17740:17;;;17770:15;;17614:176;17797:254;;17936:18;17928:6;17925:30;17922:2;;;17968:1;17965;17958:12;17922:2;-1:-1;18041:4;18012;17989:17;;;;-1:-1;;17985:33;18031:15;;17859:192;18060:140;18188:4;18176:17;;18157:43;18209:126;18318:12;;18302:33;18780:191;18911:19;;;18960:4;18951:14;;18904:67;19141:144;19276:3;19254:31;-1:-1;19254:31;19465:105;;19534:31;19559:5;19534:31;;19577:92;19650:13;19643:21;;19626:43;19762:128;-1:-1;;;;;19831:54;;19814:76;20502:145;20583:6;20578:3;20573;20560:30;-1:-1;20639:1;20621:16;;20614:27;20553:94;20656:268;20721:1;20728:101;20742:6;20739:1;20736:13;20728:101;;;20809:11;;;20803:18;20790:11;;;20783:39;20764:2;20757:10;20728:101;;;20844:6;20841:1;20838:13;20835:2;;;20909:1;20900:6;20895:3;20891:16;20884:27;20835:2;20705:219;;;;;20932:97;21020:2;21000:14;-1:-1;;20996:28;;20980:49

Swarm Source

bzzr://d474bfae06d790b118359401063ec5d41e52778bdc8a19c499300203bd334e93

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.