Contract 0xDA8B21B94668300dDBC0ecbAF57530D396287848

 
Txn Hash
Method
Block
From
To
Value
0x7af521d68ef77d8e23394db8da1d25d2f6295bad50afed7685ee1269fbabe9a2Withdraw Fees152761302022-08-04 13:22:1612 days 5 hrs ago0x665f3e7a712c470c7c5036ed0f762f936dfe36a7 IN  0xda8b21b94668300ddbc0ecbaf57530d3962878480 Ether0.‍00030607 9.‍01774777
0x6effe149531de885e32c7a3880d632fb0328aec08a547eb15e711828369ea2e0Batch Relay110585872020-10-15 5:52:41670 days 13 hrs ago0x877cf5f02497607e0b4e4e6aaf6c275648cd5ce5 IN  0xda8b21b94668300ddbc0ecbaf57530d3962878480 Ether0.‍0043145384.‍7
0xbfa49ca3401570c1488287a42f71209abb008802001877665f4f5324226bbb10Create Escrow110585452020-10-15 5:44:50670 days 13 hrs ago0xc852f3b49645ef1951eedb8cdc35e2257f028a67 IN  0xda8b21b94668300ddbc0ecbaf57530d3962878480.‍2778064 Ether0.‍0046269480.‍96
0x2b4e609c5284a868a4f24961ffda73fa92435a1befced966cc3f485d69f9d6f0Batch Relay110573082020-10-15 1:07:13670 days 18 hrs ago0x877cf5f02497607e0b4e4e6aaf6c275648cd5ce5 IN  0xda8b21b94668300ddbc0ecbaf57530d3962878480 Ether0.‍0018490836.‍3
0xda1ab71d7648344ded5ec9b63db4bbe51c80c928eaf95ecfbe47873706569121Create Escrow110572642020-10-15 0:59:21670 days 18 hrs ago0xc852f3b49645ef1951eedb8cdc35e2257f028a67 IN  0xda8b21b94668300ddbc0ecbaf57530d3962878480.‍22795389 Ether0.‍0023255540.‍7000016
0x80fbf289bce81c01ee0d866783781ff3395aa3046bd2b5ca73462ffd95572300Batch Relay110554922020-10-14 18:34:52671 days 36 mins ago0x877cf5f02497607e0b4e4e6aaf6c275648cd5ce5 IN  0xda8b21b94668300ddbc0ecbaf57530d3962878480 Ether0.‍0033051664.‍9
0xf4a9c4854d93e8c63d76795f6278007c1d24e449df30f1524c8544e75d7c4435Create Escrow110554422020-10-14 18:24:52671 days 46 mins ago0xe8d40f95d7fc39371b63315b8eb70a0a5b897625 IN  0xda8b21b94668300ddbc0ecbaf57530d3962878480.‍0101 Ether0.‍0043987777
0x4cb30492ebc6c730e0f64ab423eb7f9b1f2bbcc173eb0bfc2147cfedc0719875Create Escrow110533102020-10-14 10:42:51671 days 8 hrs ago0xf90b617d994f1dd1985769d1d62ee17b6448c1e7 IN  0xda8b21b94668300ddbc0ecbaf57530d3962878480.‍3462734 Ether0.‍0045238279.‍2055
0xaf45641e4521d917f370ec32fcb514897157b90ad1366a8126360e6cd71c4506Batch Relay110514892020-10-14 4:00:32671 days 15 hrs ago0x877cf5f02497607e0b4e4e6aaf6c275648cd5ce5 IN  0xda8b21b94668300ddbc0ecbaf57530d3962878480 Ether0.‍0033635566
0xb64c51da4196dc6e7a3bdb2a6991a56afc4641832276db4e495fcd044d703097Create Escrow110514752020-10-14 3:57:11671 days 15 hrs ago0xf90b617d994f1dd1985769d1d62ee17b6448c1e7 IN  0xda8b21b94668300ddbc0ecbaf57530d3962878480.‍34385712 Ether0.‍0035841262.‍7
0x5c90f0d3939ff4fe3be9f92338544c31659194720372fab8197424f8d072b678Batch Relay110509322020-10-14 1:53:43671 days 17 hrs ago0x877cf5f02497607e0b4e4e6aaf6c275648cd5ce5 IN  0xda8b21b94668300ddbc0ecbaf57530d3962878480 Ether0.‍0026908452.‍8
0x2cb7ae380936e6d324bc4bf2d356f897925a926d0864f74dac50aea7cec89dafCreate Escrow110509072020-10-14 1:45:58671 days 17 hrs ago0xf90b617d994f1dd1985769d1d62ee17b6448c1e7 IN  0xda8b21b94668300ddbc0ecbaf57530d3962878480.‍25719078 Ether0.‍0030810853.‍9
0x21c80449da4a4a75c1e508376aa21db64925534d800ddfc210d1693b6d7b684bBatch Relay110503562020-10-13 23:38:25671 days 19 hrs ago0x877cf5f02497607e0b4e4e6aaf6c275648cd5ce5 IN  0xda8b21b94668300ddbc0ecbaf57530d3962878480 Ether0.‍0018495236.‍3
0xd59242fc58a041876275244dd37b97b509f7f901cfd4d979063881602ae4a2c6Create Escrow110503402020-10-13 23:34:38671 days 19 hrs ago0xc852f3b49645ef1951eedb8cdc35e2257f028a67 IN  0xda8b21b94668300ddbc0ecbaf57530d3962878480.‍38117955 Ether0.‍0020808636.‍41
0x72dc621d2b162ec78b20dddbcda5b1e80f63a190ed005a6c3e8e89f3105bb3bfResolve Dispute110462772020-10-13 8:44:40672 days 10 hrs ago0x877cf5f02497607e0b4e4e6aaf6c275648cd5ce5 IN  0xda8b21b94668300ddbc0ecbaf57530d3962878480 Ether0.‍0024666158.‍3
0x06eb6f827faf453e37d88dd72275e16781a7f5f792d05374880470b7f0fc0cfdBatch Relay110460732020-10-13 7:55:29672 days 11 hrs ago0x877cf5f02497607e0b4e4e6aaf6c275648cd5ce5 IN  0xda8b21b94668300ddbc0ecbaf57530d3962878480 Ether0.‍0029697458.‍3
0x80321c8429409863268edfa4a2fc66ef2c2302072559eab4f50e97294af0fcacBatch Relay110451082020-10-13 4:30:49672 days 14 hrs ago0x877cf5f02497607e0b4e4e6aaf6c275648cd5ce5 IN  0xda8b21b94668300ddbc0ecbaf57530d3962878480 Ether0.‍0028003255
0x59af9229db77becbf9fe9f85af8a7f7a4bca575cc544d4966e63db13cfb0369fCreate Escrow110441372020-10-13 0:54:55672 days 18 hrs ago0x40c766a4deb264e1154029f03e7fa6f3bc510675 IN  0xda8b21b94668300ddbc0ecbaf57530d3962878481.‍27 Ether0.‍0030169352.‍8
0xe4356b56274ceb5e3af97a6440dfbde3d0b74ed686ec3c7f61720f728410e08fCreate Escrow110423662020-10-12 18:23:43673 days 47 mins ago0xcc6b754bd6509e679427723fbd5ccb335a484e8f IN  0xda8b21b94668300ddbc0ecbaf57530d3962878480.‍8 Ether0.‍0037711766
0xb9cfd95e319e62a9a8bfd52ca350bcde112a2214c4ef2bfa9075913a192fd7beBatch Relay110398882020-10-12 9:13:05673 days 9 hrs ago0x877cf5f02497607e0b4e4e6aaf6c275648cd5ce5 IN  0xda8b21b94668300ddbc0ecbaf57530d3962878480 Ether0.‍0030264859.‍4
0xa0c6383fb3f5e4ce028beac76930f57fe4256363790f19665fa55c0c68e8221fCreate Escrow110398792020-10-12 9:10:57673 days 10 hrs ago0xc852f3b49645ef1951eedb8cdc35e2257f028a67 IN  0xda8b21b94668300ddbc0ecbaf57530d3962878480.‍2546183 Ether0.‍0033947659.‍4
0xb3e88ff4b27b53bd38dc54f3bd281e611532fd868b15c1a9aeac0bfa18c2399dBatch Relay110398252020-10-12 8:57:18673 days 10 hrs ago0x877cf5f02497607e0b4e4e6aaf6c275648cd5ce5 IN  0xda8b21b94668300ddbc0ecbaf57530d3962878480 Ether0.‍002964758.‍20100229
0x135d9f6f28dca8e7c6d0121ee6b8addc39b40b606980497c67d5ba8508b2e7d6Create Escrow110396532020-10-12 8:21:19673 days 10 hrs ago0xc852f3b49645ef1951eedb8cdc35e2257f028a67 IN  0xda8b21b94668300ddbc0ecbaf57530d3962878480.‍27384891 Ether0.‍0037083264.‍9
0xca07c32de5ce9329d80b4b388bbd6425a1a2a170e7c788135c6716bcd963b73cBatch Relay110393672020-10-12 7:18:08673 days 11 hrs ago0x877cf5f02497607e0b4e4e6aaf6c275648cd5ce5 IN  0xda8b21b94668300ddbc0ecbaf57530d3962878480 Ether0.‍0027462553.‍9
0xec7e445e3db6d523ccd3e27b2305753c6f71e6e3e9facb56f93c650e6ffe3f21Create Escrow110393522020-10-12 7:12:47673 days 11 hrs ago0xa7cfe5c114b91b7b70bfcb27bcfde3ddf33066db IN  0xda8b21b94668300ddbc0ecbaf57530d3962878480.‍09845075 Ether0.‍0029793252.‍15259955
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x7af521d68ef77d8e23394db8da1d25d2f6295bad50afed7685ee1269fbabe9a2152761302022-08-04 13:22:1612 days 5 hrs ago 0xda8b21b94668300ddbc0ecbaf57530d3962878480x22ae67bc9f8e439e925afbcbee470fb8c255c1c62.‍5849562 Ether
0x6effe149531de885e32c7a3880d632fb0328aec08a547eb15e711828369ea2e0110585872020-10-15 5:52:41670 days 13 hrs ago 0xda8b21b94668300ddbc0ecbaf57530d3962878480x2fecdd410e707bc7cd728ace1d616bcf3bea568e0.‍26866838 Ether
0x2b4e609c5284a868a4f24961ffda73fa92435a1befced966cc3f485d69f9d6f0110573082020-10-15 1:07:13670 days 18 hrs ago 0xda8b21b94668300ddbc0ecbaf57530d3962878480x2fecdd410e707bc7cd728ace1d616bcf3bea568e0.‍22294866 Ether
0x80fbf289bce81c01ee0d866783781ff3395aa3046bd2b5ca73462ffd95572300110554922020-10-14 18:34:52671 days 36 mins ago 0xda8b21b94668300ddbc0ecbaf57530d3962878480xaa7822e7aa0825d1625917c05ec92d445d4738000.‍00512578 Ether
0xaf45641e4521d917f370ec32fcb514897157b90ad1366a8126360e6cd71c4506110514892020-10-14 4:00:32671 days 15 hrs ago 0xda8b21b94668300ddbc0ecbaf57530d3962878480x40c766a4deb264e1154029f03e7fa6f3bc5106750.‍33546274 Ether
0x5c90f0d3939ff4fe3be9f92338544c31659194720372fab8197424f8d072b678110509322020-10-14 1:53:43671 days 17 hrs ago 0xda8b21b94668300ddbc0ecbaf57530d3962878480x40c766a4deb264e1154029f03e7fa6f3bc5106750.‍25065422 Ether
0x21c80449da4a4a75c1e508376aa21db64925534d800ddfc210d1693b6d7b684b110503562020-10-13 23:38:25671 days 19 hrs ago 0xda8b21b94668300ddbc0ecbaf57530d3962878480x2fecdd410e707bc7cd728ace1d616bcf3bea568e0.‍37464206 Ether
0x72dc621d2b162ec78b20dddbcda5b1e80f63a190ed005a6c3e8e89f3105bb3bf110462772020-10-13 8:44:40672 days 10 hrs ago 0xda8b21b94668300ddbc0ecbaf57530d3962878480xf90b617d994f1dd1985769d1d62ee17b6448c1e70.‍05343829 Ether
0x06eb6f827faf453e37d88dd72275e16781a7f5f792d05374880470b7f0fc0cfd110460732020-10-13 7:55:29672 days 11 hrs ago 0xda8b21b94668300ddbc0ecbaf57530d3962878480x5a7b8974afcb4fd41115ae0e246e7084b4d503e90.‍78762236 Ether
0x80321c8429409863268edfa4a2fc66ef2c2302072559eab4f50e97294af0fcac110451082020-10-13 4:30:49672 days 14 hrs ago 0xda8b21b94668300ddbc0ecbaf57530d3962878480xf90b617d994f1dd1985769d1d62ee17b6448c1e71.‍25317016 Ether
0xb9cfd95e319e62a9a8bfd52ca350bcde112a2214c4ef2bfa9075913a192fd7be110398882020-10-12 9:13:05673 days 9 hrs ago 0xda8b21b94668300ddbc0ecbaf57530d3962878480x2fecdd410e707bc7cd728ace1d616bcf3bea568e0.‍24761189 Ether
0xb3e88ff4b27b53bd38dc54f3bd281e611532fd868b15c1a9aeac0bfa18c2399d110398252020-10-12 8:57:18673 days 10 hrs ago 0xda8b21b94668300ddbc0ecbaf57530d3962878480xc852f3b49645ef1951eedb8cdc35e2257f028a670.‍26949809 Ether
0xca07c32de5ce9329d80b4b388bbd6425a1a2a170e7c788135c6716bcd963b73c110393672020-10-12 7:18:08673 days 11 hrs ago 0xda8b21b94668300ddbc0ecbaf57530d3962878480xcbb29bd3021a13a8d5b3bfa676e220b7bcd3e8190.‍093419 Ether
0x20f28b94f505ca6f5ea21ca52acda06ec5f2469e469dfb0d0560dd50584406b4110333822020-10-11 9:29:52674 days 9 hrs ago 0xda8b21b94668300ddbc0ecbaf57530d3962878480xc5717d9e70a66871c166f7f80d69573ddcb183f00.‍2725258 Ether
0xd49b06aff8a19632001c8516d711e05a8acdcb028f06fa2ca124d5707106d175110325652020-10-11 6:31:27674 days 12 hrs ago 0xda8b21b94668300ddbc0ecbaf57530d3962878480xcbb29bd3021a13a8d5b3bfa676e220b7bcd3e8190.‍09489941 Ether
0xd00c9828c0f3c3ea98d18439bbc0b8feafba8fe621af70ed831b9e5ac1de40fd110291252020-10-10 17:49:47675 days 1 hr ago 0xda8b21b94668300ddbc0ecbaf57530d3962878480xcbb29bd3021a13a8d5b3bfa676e220b7bcd3e8190.‍08791982 Ether
0xa46ae7b32105d548fc0dc4efb457e547460aad9629c4590886615a5640424abc110269982020-10-10 9:39:27675 days 9 hrs ago 0xda8b21b94668300ddbc0ecbaf57530d3962878480xcbb29bd3021a13a8d5b3bfa676e220b7bcd3e8190.‍08850694 Ether
0x4df67b62747a3738046e4a74b6e2ce9cf24f82503f74631d7874a8e96fb24137110263122020-10-10 7:14:50675 days 11 hrs ago 0xda8b21b94668300ddbc0ecbaf57530d3962878480x2fecdd410e707bc7cd728ace1d616bcf3bea568e0.‍22928039 Ether
0x57e616ac919f15cc7c817d0b3a33a197419ef56852f49407993b7123c1e52c63110250212020-10-10 2:35:20675 days 16 hrs ago 0xda8b21b94668300ddbc0ecbaf57530d3962878480x2fecdd410e707bc7cd728ace1d616bcf3bea568e0.‍96764326 Ether
0x26872e30dc5b387916555b2f92a09eda0472a85a6c6dfe7fa5b617e311285c44110196302020-10-09 6:18:49676 days 12 hrs ago 0xda8b21b94668300ddbc0ecbaf57530d3962878480xf90b617d994f1dd1985769d1d62ee17b6448c1e70.‍15362444 Ether
0x70a968a43b822f58ea30ae580473e4c24964ad7cab6ccaa406e73b10f324d4d8110184672020-10-09 1:57:25676 days 17 hrs ago 0xda8b21b94668300ddbc0ecbaf57530d3962878480x2fecdd410e707bc7cd728ace1d616bcf3bea568e0.‍17179249 Ether
0x82189c5e3bcf9f50fa7c5dab67d1c54af9bbd7ac1ad2fadec697aa7dddff76c3110122662020-10-08 2:17:31677 days 16 hrs ago 0xda8b21b94668300ddbc0ecbaf57530d3962878480x2fecdd410e707bc7cd728ace1d616bcf3bea568e0.‍14413065 Ether
0x9c827226bff7f0247fea48804a451c2d9ecbf662115b3de1c873a4928e38421d109891262020-10-04 11:36:30681 days 7 hrs ago 0xda8b21b94668300ddbc0ecbaf57530d3962878480xf90b617d994f1dd1985769d1d62ee17b6448c1e70.‍9847138 Ether
0x068af6903dc6bcef894a0e983408efaac3762f3acb7208148c82e706ad6a3764109831302020-10-03 13:07:31682 days 6 hrs ago 0xda8b21b94668300ddbc0ecbaf57530d3962878480x5a7b8974afcb4fd41115ae0e246e7084b4d503e90.‍49736717 Ether
0x49751f649cec95c1801b60560ae9dda45fccf82011b214695bdf97a11f3edcda109802632020-10-03 2:19:27682 days 16 hrs ago 0xda8b21b94668300ddbc0ecbaf57530d3962878480xf90b617d994f1dd1985769d1d62ee17b6448c1e73.‍95013363 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
LocalCoinSwapEthereumEscrow

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2020-05-15
*/

pragma solidity ^0.5.0;

/// @title localcoinswap.com
/// @author localcoinswap.com
contract LocalCoinSwapEthereumEscrow {
    /***********************
    +   Global settings   +
    ***********************/

    // Address of the arbitrator (currently always localcoinswap staff)
    address public arbitrator;
    // Address of the owner (who can withdraw collected fees)
    address public owner;
    // Address of the relayer (who is allowed to forward signed instructions from parties)
    address public relayer;
    uint32 public requestCancellationMinimumTime = 2 hours;
    // Cumulative balance of collected fees
    uint256 public feesAvailableForWithdraw;

    /***********************
    +  Instruction types  +
    ***********************/

    // Called when the buyer marks payment as sent. Locks funds in escrow
    uint8 constant INSTRUCTION_SELLER_CANNOT_CANCEL = 0x01;
    // Buyer cancelling
    uint8 constant INSTRUCTION_BUYER_CANCEL = 0x02;
    // Seller cancelling
    uint8 constant INSTRUCTION_SELLER_CANCEL = 0x03;
    // Seller requesting to cancel. Begins a window for buyer to object
    uint8 constant INSTRUCTION_SELLER_REQUEST_CANCEL = 0x04;
    // Seller releasing funds to the buyer
    uint8 constant INSTRUCTION_RELEASE = 0x05;
    // Either party permitting the arbitrator to resolve a dispute
    uint8 constant INSTRUCTION_RESOLVE = 0x06;


    /***********************
    +       Events        +
    ***********************/

    event Created(bytes32 indexed _tradeHash);
    event SellerCancelDisabled(bytes32 indexed _tradeHash);
    event SellerRequestedCancel(bytes32 indexed _tradeHash);
    event CancelledBySeller(bytes32 indexed _tradeHash);
    event CancelledByBuyer(bytes32 indexed _tradeHash);
    event Released(bytes32 indexed _tradeHash);
    event DisputeResolved(bytes32 indexed _tradeHash);

    struct Escrow {
        // So we know the escrow exists
        bool exists;
        // This is the timestamp in whic hthe seller can cancel the escrow after.
        // It has two special values:
        // 0 : Permanently locked by the buyer (i.e. marked as paid; the seller can never cancel)
        // 1 : The seller can only request to cancel, which will change this value to a timestamp.
        //     This option is avaialble for complex trade terms such as cash-in-person where a
        //     payment window is inappropriate
        uint32 sellerCanCancelAfter;
        // Cumulative cost of gas incurred by the relayer. This amount will be refunded to the owner
        // in the way of fees once the escrow has completed
        uint128 totalGasFeesSpentByRelayer;
    }

    // Mapping of active trades. The key here is a hash of the trade proprties
    mapping (bytes32 => Escrow) public escrows;

    modifier onlyOwner() {
        require(msg.sender == owner, "Must be owner");
        _;
    }

    modifier onlyArbitrator() {
        require(msg.sender == arbitrator, "Must be arbitrator");
        _;
    }

    constructor(address initialAddress) public {
        owner = initialAddress;
        arbitrator = initialAddress;
        relayer = initialAddress;
    }

    /// @notice Create and fund a new escrow.
    /// @param _tradeID The unique ID of the trade, generated by localcoinswap.com
    /// @param _seller The selling party
    /// @param _buyer The buying party
    /// @param _value The amount of the escrow, exclusive of the fee
    /// @param _fee localcoinswap's commission in 1/10000ths
    /// @param _paymentWindowInSeconds The time in seconds from escrow creation that the seller can cancel after
    /// @param _expiry This transaction must be created before this time
    /// @param _v Signature "v" component
    /// @param _r Signature "r" component
    /// @param _s Signature "s" component
    function createEscrow(
        bytes16 _tradeID,
        address _seller,
        address _buyer,
        uint256 _value,
        uint16 _fee,
        uint32 _paymentWindowInSeconds,
        uint32 _expiry,
        uint8 _v,
        bytes32 _r,
        bytes32 _s
    ) external payable {
        // The trade hash is created by tightly-concatenating and hashing properties of the trade.
        // This hash becomes the identifier of the escrow, and hence all these variables must be
        // supplied on future contract calls
        bytes32 _tradeHash = keccak256(abi.encodePacked(_tradeID, _seller, _buyer, _value, _fee));
        // Require that trade does not already exist
        require(!escrows[_tradeHash].exists, "Trade already exists");
        // A signature (v, r and s) must come from localcoinswap to open an escrow
        bytes32 _invitationHash = keccak256(abi.encodePacked(
            _tradeHash,
            _paymentWindowInSeconds,
            _expiry
        ));
        require(recoverAddress(_invitationHash, _v, _r, _s) == relayer, "Must be relayer");
        // These signatures come with an expiry stamp
        require(block.timestamp < _expiry, "Signature has expired"); // solium-disable-line
        // Check transaction value against signed _value and make sure is not 0
        require(msg.value == _value && msg.value > 0, "Incorrect ether sent");
        uint32 _sellerCanCancelAfter = _paymentWindowInSeconds == 0
            ? 1
            : uint32(block.timestamp) + _paymentWindowInSeconds; // solium-disable-line
        // Add the escrow to the public mapping
        escrows[_tradeHash] = Escrow(true, _sellerCanCancelAfter, 0);
        emit Created(_tradeHash);
    }

    uint16 constant GAS_doResolveDispute = 36100;
    /// @notice Called by the arbitrator to resolve a dispute. Requires a signature from either party.
    /// @param _tradeID Escrow "tradeID" parameter
    /// @param _seller Escrow "seller" parameter
    /// @param _buyer Escrow "buyer" parameter
    /// @param _value Escrow "value" parameter
    /// @param _fee Escrow "fee parameter
    /// @param _v Signature "v" component
    /// @param _r Signature "r" component
    /// @param _s Signature "s" component
    /// @param _buyerPercent What % should be distributed to the buyer (this is usually 0 or 100)
    function resolveDispute(
        bytes16 _tradeID,
        address payable _seller,
        address payable _buyer,
        uint256 _value,
        uint16 _fee,
        uint8 _v,
        bytes32 _r,
        bytes32 _s,
        uint8 _buyerPercent
    ) external onlyArbitrator {
        address _signature = recoverAddress(keccak256(abi.encodePacked(
            _tradeID,
            INSTRUCTION_RESOLVE
        )), _v, _r, _s);
        require(_signature == _buyer || _signature == _seller, "Must be buyer or seller");

        Escrow memory _escrow;
        bytes32 _tradeHash;
        (_escrow, _tradeHash) = getEscrowAndHash(_tradeID, _seller, _buyer, _value, _fee);
        require(_escrow.exists, "Escrow does not exist");
        require(_buyerPercent <= 100, "_buyerPercent must be 100 or lower");

        uint256 _totalFees = _escrow.totalGasFeesSpentByRelayer + (GAS_doResolveDispute * uint128(tx.gasprice));
        require(_value - _totalFees <= _value, "Overflow error"); // Prevent underflow
        feesAvailableForWithdraw += _totalFees; // Add the the pot for localcoinswap to withdraw

        delete escrows[_tradeHash];
        emit DisputeResolved(_tradeHash);
        if (_buyerPercent > 0) {
          // Take fees if buyer wins dispute
          uint256 _escrowFees = (_value * _fee / 10000);
          // Prevent underflow
          uint256 _buyerAmount = _value * _buyerPercent / 100 - _totalFees - _escrowFees;
          require(_buyerAmount <= _value, "Overflow error");
          feesAvailableForWithdraw += _escrowFees;
          _buyer.transfer(_buyerAmount);
        }
        if (_buyerPercent < 100) {
          _seller.transfer((_value - _totalFees) * (100 - _buyerPercent) / 100);
        }
    }

    /// @notice Release ether in escrow to the buyer. Direct call option.
    /// @param _tradeID Escrow "tradeID" parameter
    /// @param _seller Escrow "seller" parameter
    /// @param _buyer Escrow "buyer" parameter
    /// @param _value Escrow "value" parameter
    /// @param _fee Escrow "fee parameter
    /// @return bool
    function release(
        bytes16 _tradeID,
        address payable _seller,
        address payable _buyer,
        uint256 _value,
        uint16 _fee
    ) external returns (bool){
        require(msg.sender == _seller, "Must be seller");
        return doRelease(_tradeID, _seller, _buyer, _value, _fee, 0);
    }

    /// @notice Disable the seller from cancelling (i.e. "mark as paid"). Direct call option.
    /// @param _tradeID Escrow "tradeID" parameter
    /// @param _seller Escrow "seller" parameter
    /// @param _buyer Escrow "buyer" parameter
    /// @param _value Escrow "value" parameter
    /// @param _fee Escrow "fee parameter
    /// @return bool
    function disableSellerCancel(
        bytes16 _tradeID,
        address _seller,
        address _buyer,
        uint256 _value,
        uint16 _fee
    ) external returns (bool) {
        require(msg.sender == _buyer, "Must be buyer");
        return doDisableSellerCancel(_tradeID, _seller, _buyer, _value, _fee, 0);
    }

    /// @notice Cancel the escrow as a buyer. Direct call option.
    /// @param _tradeID Escrow "tradeID" parameter
    /// @param _seller Escrow "seller" parameter
    /// @param _buyer Escrow "buyer" parameter
    /// @param _value Escrow "value" parameter
    /// @param _fee Escrow "fee parameter
    /// @return bool
    function buyerCancel(
      bytes16 _tradeID,
      address payable _seller,
      address payable _buyer,
      uint256 _value,
      uint16 _fee
    ) external returns (bool) {
        require(msg.sender == _buyer, "Must be buyer");
        return doBuyerCancel(_tradeID, _seller, _buyer, _value, _fee, 0);
    }

    /// @notice Request to cancel as a seller. Direct call option.
    /// @param _tradeID Escrow "tradeID" parameter
    /// @param _seller Escrow "seller" parameter
    /// @param _buyer Escrow "buyer" parameter
    /// @param _value Escrow "value" parameter
    /// @param _fee Escrow "fee parameter
    /// @return bool
    function sellerRequestCancel(
        bytes16 _tradeID,
        address _seller,
        address _buyer,
        uint256 _value,
        uint16 _fee
    ) external returns (bool) {
        require(msg.sender == _seller, "Must be seller");
        return doSellerRequestCancel(_tradeID, _seller, _buyer, _value, _fee, 0);
    }

    /// @notice Relay multiple signed instructions from parties of escrows.
    /// @param _tradeID List of _tradeID values
    /// @param _seller List of _seller values
    /// @param _buyer List of _buyer values
    /// @param _value List of _value values
    /// @param _fee List of _fee values
    /// @param _maximumGasPrice List of _maximumGasPrice values
    /// @param _v List of signature "v" components
    /// @param _r List of signature "r" components
    /// @param _s List of signature "s" components
    /// @param _instructionByte List of _instructionByte values
    /// @return bool List of results
    uint16 constant GAS_batchRelayBaseCost = 28500;
    function batchRelay(
        bytes16[] memory _tradeID,
        address payable[] memory _seller,
        address payable[] memory _buyer,
        uint256[] memory _value,
        uint16[] memory _fee,
        uint128[] memory _maximumGasPrice,
        uint8[] memory _v,
        bytes32[] memory _r,
        bytes32[] memory _s,
        uint8[] memory _instructionByte
    ) public returns (bool[] memory) {
        bool[] memory _results = new bool[](_tradeID.length);
        uint128 _additionalGas = uint128(msg.sender == relayer ? GAS_batchRelayBaseCost / _tradeID.length : 0);
        for (uint8 i = 0; i < _tradeID.length; i++) {
            _results[i] = relay(
                _tradeID[i],
                _seller[i],
                _buyer[i],
                _value[i],
                _fee[i],
                _maximumGasPrice[i],
                _v[i],
                _r[i],
                _s[i],
                _instructionByte[i],
                _additionalGas
            );
        }
        return _results;
    }

    /// @notice Withdraw fees collected by the contract. Only the owner can call this.
    /// @param _to Address to withdraw fees in to
    /// @param _amount Amount to withdraw
    function withdrawFees(address payable _to, uint256 _amount) external onlyOwner {
        // This check also prevents underflow
        require(_amount <= feesAvailableForWithdraw, "Amount is higher than amount available");
        feesAvailableForWithdraw -= _amount;
        _to.transfer(_amount);
    }

    /// @notice Set the arbitrator to a new address. Only the owner can call this.
    /// @param _newArbitrator Address of the replacement arbitrator
    function setArbitrator(address _newArbitrator) external onlyOwner {
        arbitrator = _newArbitrator;
    }

    /// @notice Change the owner to a new address. Only the owner can call this.
    /// @param _newOwner Address of the replacement owner
    function setOwner(address _newOwner) external onlyOwner {
        owner = _newOwner;
    }

    /// @notice Change the relayer to a new address. Only the owner can call this.
    /// @param _newRelayer Address of the replacement relayer
    function setRelayer(address _newRelayer) external onlyOwner {
        relayer = _newRelayer;
    }

    /// @notice Change the requestCancellationMinimumTime. Only the owner can call this.
    /// @param _newRequestCancellationMinimumTime Replacement
    function setRequestCancellationMinimumTime(
        uint32 _newRequestCancellationMinimumTime
    ) external onlyOwner {
        requestCancellationMinimumTime = _newRequestCancellationMinimumTime;
    }

    /// @notice Send ERC20 tokens away. This function allows the owner to withdraw stuck ERC20 tokens.
    /// @param _tokenContract Token contract
    /// @param _transferTo Recipient
    /// @param _value Value
    function transferToken(
        _Token _tokenContract,
        address _transferTo,
        uint256 _value
    ) external onlyOwner {
        _tokenContract.transfer(_transferTo, _value);
    }

    /// @notice Send ERC20 tokens away. This function allows the owner to withdraw stuck ERC20 tokens.
    /// @param _tokenContract Token contract
    /// @param _transferTo Recipient
    /// @param _transferFrom Sender
    /// @param _value Value
    function transferTokenFrom(
        _Token _tokenContract,
        address _transferTo,
        address _transferFrom,
        uint256 _value
    ) external onlyOwner {
        _tokenContract.transferFrom(_transferTo, _transferFrom, _value);
    }

    /// @notice Send ERC20 tokens away. This function allows the owner to withdraw stuck ERC20 tokens.
    /// @param _tokenContract Token contract
    /// @param _spender Spender address
    /// @param _value Value
    function approveToken(
        _Token _tokenContract,
        address _spender,
        uint256 _value
    ) external onlyOwner {
        _tokenContract.approve(_spender, _value);
    }

    /// @notice Relay a signed instruction from a party of an escrow.
    /// @param _tradeID Escrow "tradeID" parameter
    /// @param _seller Escrow "seller" parameter
    /// @param _buyer Escrow "buyer" parameter
    /// @param _value Escrow "value" parameter
    /// @param _fee Escrow "fee parameter
    /// @param _maximumGasPrice Maximum gas price permitted for the relayer (set by the instructor)
    /// @param _v Signature "v" component
    /// @param _r Signature "r" component
    /// @param _s Signature "s" component
    /// @param _additionalGas Additional gas to be deducted after this operation
    /// @return bool
    function relay(
        bytes16 _tradeID,
        address payable _seller,
        address payable _buyer,
        uint256 _value,
        uint16 _fee,
        uint128 _maximumGasPrice,
        uint8 _v,
        bytes32 _r,
        bytes32 _s,
        uint8 _instructionByte,
        uint128 _additionalGas
    ) private returns (bool) {
        address _relayedSender = getRelayedSender(
            _tradeID,
            _instructionByte,
            _maximumGasPrice,
            _v,
            _r,
            _s
        );
        if (_relayedSender == _buyer) {
            // Buyer's instructions:
            if (_instructionByte == INSTRUCTION_SELLER_CANNOT_CANCEL) {
                // Disable seller from cancelling
                return doDisableSellerCancel(_tradeID, _seller, _buyer, _value, _fee, _additionalGas);
            } else if (_instructionByte == INSTRUCTION_BUYER_CANCEL) {
                // Cancel
                return doBuyerCancel(_tradeID, _seller, _buyer, _value, _fee, _additionalGas);
            }
        } else if (_relayedSender == _seller) {
            // Seller's instructions:
            if (_instructionByte == INSTRUCTION_RELEASE) {
                // Release
                return doRelease(_tradeID, _seller, _buyer, _value, _fee, _additionalGas);
            } else if (_instructionByte == INSTRUCTION_SELLER_CANCEL) {
                // Cancel
                return doSellerCancel(_tradeID, _seller, _buyer, _value, _fee, _additionalGas);
            } else if (_instructionByte == INSTRUCTION_SELLER_REQUEST_CANCEL){
                // Request to cancel
                return doSellerRequestCancel(_tradeID, _seller, _buyer, _value, _fee, _additionalGas);
            }
        } else {
            require(msg.sender == _seller, "Unrecognised party");
            return false;
        }
    }

    /// @notice Increase the amount of gas to be charged later on completion of an escrow
    /// @param _tradeHash Trade hash
    /// @param _gas Gas cost
    function increaseGasSpent(bytes32 _tradeHash, uint128 _gas) private {
        escrows[_tradeHash].totalGasFeesSpentByRelayer += _gas * uint128(tx.gasprice);
    }

    /// @notice Transfer the value of an escrow, minus the fees, minus the gas costs incurred by relay
    /// @param _to Recipient address
    /// @param _value Value of the transfer
    /// @param _totalGasFeesSpentByRelayer Total gas fees spent by the relayer
    /// @param _fee Commission in 1/10000ths
    function transferMinusFees(
        address payable _to,
        uint256 _value,
        uint128 _totalGasFeesSpentByRelayer,
        uint16 _fee
    ) private {
        uint256 _totalFees = (_value * _fee / 10000) + _totalGasFeesSpentByRelayer;
        // Prevent underflow
        if(_value - _totalFees > _value) {
            return;
        }
        // Add fees to the pot for localcoinswap to withdraw
        feesAvailableForWithdraw += _totalFees;
        _to.transfer(_value - _totalFees);
    }

    uint16 constant GAS_doRelease = 46588;
    /// @notice Release escrow to the buyer. This completes it and removes it from the mapping.
    /// @param _tradeID Escrow "tradeID" parameter
    /// @param _seller Escrow "seller" parameter
    /// @param _buyer Escrow "buyer" parameter
    /// @param _value Escrow "value" parameter
    /// @param _fee Escrow "fee parameter
    /// @param _additionalGas Additional gas to be deducted after this operation
    /// @return bool
    function doRelease(
        bytes16 _tradeID,
        address payable _seller,
        address payable _buyer,
        uint256 _value,
        uint16 _fee,
        uint128 _additionalGas
    ) private returns (bool) {
        Escrow memory _escrow;
        bytes32 _tradeHash;
        (_escrow, _tradeHash) = getEscrowAndHash(_tradeID, _seller, _buyer, _value, _fee);
        if (!_escrow.exists) return false;
        uint128 _gasFees = _escrow.totalGasFeesSpentByRelayer + (msg.sender == relayer
                ? (GAS_doRelease + _additionalGas ) * uint128(tx.gasprice)
                : 0
            );
        delete escrows[_tradeHash];
        emit Released(_tradeHash);
        transferMinusFees(_buyer, _value, _gasFees, _fee);
        return true;
    }

    uint16 constant GAS_doDisableSellerCancel = 28944;
    /// @notice Prevents the seller from cancelling an escrow. Used to "mark as paid" by the buyer.
    /// @param _tradeID Escrow "tradeID" parameter
    /// @param _seller Escrow "seller" parameter
    /// @param _buyer Escrow "buyer" parameter
    /// @param _value Escrow "value" parameter
    /// @param _fee Escrow "fee parameter
    /// @param _additionalGas Additional gas to be deducted after this operation
    /// @return bool
    function doDisableSellerCancel(
        bytes16 _tradeID,
        address _seller,
        address _buyer,
        uint256 _value,
        uint16 _fee,
        uint128 _additionalGas
    ) private returns (bool) {
        Escrow memory _escrow;
        bytes32 _tradeHash;
        (_escrow, _tradeHash) = getEscrowAndHash(_tradeID, _seller, _buyer, _value, _fee);
        if (!_escrow.exists) return false;
        if(_escrow.sellerCanCancelAfter == 0) return false;
        escrows[_tradeHash].sellerCanCancelAfter = 0;
        emit SellerCancelDisabled(_tradeHash);
        if (msg.sender == relayer) {
          increaseGasSpent(_tradeHash, GAS_doDisableSellerCancel + _additionalGas);
        }
        return true;
    }

    uint16 constant GAS_doBuyerCancel = 46255;
    /// @notice Cancels the trade and returns the ether to the seller. Can only be called the buyer.
    /// @param _tradeID Escrow "tradeID" parameter
    /// @param _seller Escrow "seller" parameter
    /// @param _buyer Escrow "buyer" parameter
    /// @param _value Escrow "value" parameter
    /// @param _fee Escrow "fee parameter
    /// @param _additionalGas Additional gas to be deducted after this operation
    /// @return bool
    function doBuyerCancel(
        bytes16 _tradeID,
        address payable _seller,
        address payable _buyer,
        uint256 _value,
        uint16 _fee,
        uint128 _additionalGas
    ) private returns (bool) {
        Escrow memory _escrow;
        bytes32 _tradeHash;
        (_escrow, _tradeHash) = getEscrowAndHash(_tradeID, _seller, _buyer, _value, _fee);
        if (!_escrow.exists) {
            return false;
        }
        uint128 _gasFees = _escrow.totalGasFeesSpentByRelayer + (msg.sender == relayer
                ? (GAS_doBuyerCancel + _additionalGas ) * uint128(tx.gasprice)
                : 0
            );
        delete escrows[_tradeHash];
        emit CancelledByBuyer(_tradeHash);
        transferMinusFees(_seller, _value, _gasFees, 0);
        return true;
    }

    uint16 constant GAS_doSellerCancel = 46815;
    /// @notice Returns the ether in escrow to the seller. Called by the seller. Sometimes unavailable.
    /// @param _tradeID Escrow "tradeID" parameter
    /// @param _seller Escrow "seller" parameter
    /// @param _buyer Escrow "buyer" parameter
    /// @param _value Escrow "value" parameter
    /// @param _fee Escrow "fee parameter
    /// @param _additionalGas Additional gas to be deducted after this operation
    /// @return bool
    function doSellerCancel(
        bytes16 _tradeID,
        address payable _seller,
        address payable _buyer,
        uint256 _value,
        uint16 _fee,
        uint128 _additionalGas
    ) private returns (bool) {
        Escrow memory _escrow;
        bytes32 _tradeHash;
        (_escrow, _tradeHash) = getEscrowAndHash(_tradeID, _seller, _buyer, _value, _fee);
        if (!_escrow.exists) {
            return false;
        }
        if(_escrow.sellerCanCancelAfter <= 1 || _escrow.sellerCanCancelAfter > block.timestamp) { // solium-disable-line
            return false;
        }
        uint128 _gasFees = _escrow.totalGasFeesSpentByRelayer + (msg.sender == relayer
                ? (GAS_doSellerCancel + _additionalGas ) * uint128(tx.gasprice)
                : 0
            );
        delete escrows[_tradeHash];
        emit CancelledBySeller(_tradeHash);
        transferMinusFees(_seller, _value, _gasFees, 0);
        return true;
    }

    uint16 constant GAS_doSellerRequestCancel = 29507;
    /// @notice Request to cancel. Used if the buyer is unresponsive. Begins a countdown timer.
    /// @param _tradeID Escrow "tradeID" parameter
    /// @param _seller Escrow "seller" parameter
    /// @param _buyer Escrow "buyer" parameter
    /// @param _value Escrow "value" parameter
    /// @param _fee Escrow "fee parameter
    /// @param _additionalGas Additional gas to be deducted after this operation
    /// @return bool
    function doSellerRequestCancel(
        bytes16 _tradeID,
        address _seller,
        address _buyer,
        uint256 _value,
        uint16 _fee,
        uint128 _additionalGas
    ) private returns (bool) {
        // Called on unlimited payment window trades where the buyer is not responding
        Escrow memory _escrow;
        bytes32 _tradeHash;
        (_escrow, _tradeHash) = getEscrowAndHash(_tradeID, _seller, _buyer, _value, _fee);
        if (!_escrow.exists) {
            return false;
        }
        if(_escrow.sellerCanCancelAfter != 1) {
            return false;
        }
        escrows[_tradeHash].sellerCanCancelAfter = uint32(block.timestamp) // solium-disable-line
            + requestCancellationMinimumTime;
        emit SellerRequestedCancel(_tradeHash);
        if (msg.sender == relayer) {
          increaseGasSpent(_tradeHash, GAS_doSellerRequestCancel + _additionalGas);
        }
        return true;
    }

    /// @notice Get the sender of the signed instruction.
    /// @param _tradeID Identifier of the trade
    /// @param _instructionByte Identifier of the instruction
    /// @param _maximumGasPrice Maximum gas price permitted by the sender
    /// @param _v Signature "v" component
    /// @param _r Signature "r" component
    /// @param _s Signature "s" component
    /// @return address
    function getRelayedSender(
      bytes16 _tradeID,
      uint8 _instructionByte,
      uint128 _maximumGasPrice,
      uint8 _v,
      bytes32 _r,
      bytes32 _s
    ) private view returns (address) {
        bytes32 _hash = keccak256(abi.encodePacked(
            _tradeID,
            _instructionByte,
            _maximumGasPrice
        ));
        return recoverAddress(_hash, _v, _r, _s);
    }

    /// @notice Hashes the values and returns the matching escrow object and trade hash.
    /// @dev Returns an empty escrow struct and 0 _tradeHash if not found.
    /// @param _tradeID Escrow "tradeID" parameter
    /// @param _seller Escrow "seller" parameter
    /// @param _buyer Escrow "buyer" parameter
    /// @param _value Escrow "value" parameter
    /// @param _fee Escrow "fee parameter
    /// @return Escrow
    function getEscrowAndHash(
        bytes16 _tradeID,
        address _seller,
        address _buyer,
        uint256 _value,
        uint16 _fee
    ) private view returns (Escrow storage, bytes32) {
        bytes32 _tradeHash = keccak256(abi.encodePacked(
            _tradeID,
            _seller,
            _buyer,
            _value,
            _fee
        ));
        return (escrows[_tradeHash], _tradeHash);
    }

    /// @notice Returns an empty escrow struct and 0 _tradeHash if not found.
    /// @param _h Data to be hashed
    /// @param _v Signature "v" component
    /// @param _r Signature "r" component
    /// @param _s Signature "s" component
    /// @return address
    function recoverAddress(
        bytes32 _h,
        uint8 _v,
        bytes32 _r,
        bytes32 _s
    ) private pure returns (address) {
        bytes memory _prefix = "\x19Ethereum Signed Message:\n32";
        bytes32 _prefixedHash = keccak256(abi.encodePacked(_prefix, _h));
        return ecrecover(_prefixedHash, _v, _r, _s);
    }
}

contract _Token {
    function transfer(address _to, uint _value) public returns (bool success);
    function transferFrom(address _from, address _to, uint _value) public returns (bool success);
    function approve(address _spender, uint _value) public returns (bool success);
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"initialAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"_tradeHash","type":"bytes32"}],"name":"CancelledByBuyer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"_tradeHash","type":"bytes32"}],"name":"CancelledBySeller","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"_tradeHash","type":"bytes32"}],"name":"Created","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"_tradeHash","type":"bytes32"}],"name":"DisputeResolved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"_tradeHash","type":"bytes32"}],"name":"Released","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"_tradeHash","type":"bytes32"}],"name":"SellerCancelDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"_tradeHash","type":"bytes32"}],"name":"SellerRequestedCancel","type":"event"},{"constant":false,"inputs":[{"internalType":"contract _Token","name":"_tokenContract","type":"address"},{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approveToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"arbitrator","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes16[]","name":"_tradeID","type":"bytes16[]"},{"internalType":"address payable[]","name":"_seller","type":"address[]"},{"internalType":"address payable[]","name":"_buyer","type":"address[]"},{"internalType":"uint256[]","name":"_value","type":"uint256[]"},{"internalType":"uint16[]","name":"_fee","type":"uint16[]"},{"internalType":"uint128[]","name":"_maximumGasPrice","type":"uint128[]"},{"internalType":"uint8[]","name":"_v","type":"uint8[]"},{"internalType":"bytes32[]","name":"_r","type":"bytes32[]"},{"internalType":"bytes32[]","name":"_s","type":"bytes32[]"},{"internalType":"uint8[]","name":"_instructionByte","type":"uint8[]"}],"name":"batchRelay","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes16","name":"_tradeID","type":"bytes16"},{"internalType":"address payable","name":"_seller","type":"address"},{"internalType":"address payable","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint16","name":"_fee","type":"uint16"}],"name":"buyerCancel","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes16","name":"_tradeID","type":"bytes16"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint16","name":"_fee","type":"uint16"},{"internalType":"uint32","name":"_paymentWindowInSeconds","type":"uint32"},{"internalType":"uint32","name":"_expiry","type":"uint32"},{"internalType":"uint8","name":"_v","type":"uint8"},{"internalType":"bytes32","name":"_r","type":"bytes32"},{"internalType":"bytes32","name":"_s","type":"bytes32"}],"name":"createEscrow","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes16","name":"_tradeID","type":"bytes16"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint16","name":"_fee","type":"uint16"}],"name":"disableSellerCancel","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"escrows","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"uint32","name":"sellerCanCancelAfter","type":"uint32"},{"internalType":"uint128","name":"totalGasFeesSpentByRelayer","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"feesAvailableForWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"relayer","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes16","name":"_tradeID","type":"bytes16"},{"internalType":"address payable","name":"_seller","type":"address"},{"internalType":"address payable","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint16","name":"_fee","type":"uint16"}],"name":"release","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"requestCancellationMinimumTime","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes16","name":"_tradeID","type":"bytes16"},{"internalType":"address payable","name":"_seller","type":"address"},{"internalType":"address payable","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint16","name":"_fee","type":"uint16"},{"internalType":"uint8","name":"_v","type":"uint8"},{"internalType":"bytes32","name":"_r","type":"bytes32"},{"internalType":"bytes32","name":"_s","type":"bytes32"},{"internalType":"uint8","name":"_buyerPercent","type":"uint8"}],"name":"resolveDispute","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes16","name":"_tradeID","type":"bytes16"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint16","name":"_fee","type":"uint16"}],"name":"sellerRequestCancel","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newArbitrator","type":"address"}],"name":"setArbitrator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newRelayer","type":"address"}],"name":"setRelayer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint32","name":"_newRequestCancellationMinimumTime","type":"uint32"}],"name":"setRequestCancellationMinimumTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract _Token","name":"_tokenContract","type":"address"},{"internalType":"address","name":"_transferTo","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract _Token","name":"_tokenContract","type":"address"},{"internalType":"address","name":"_transferTo","type":"address"},{"internalType":"address","name":"_transferFrom","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferTokenFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawFees","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

6080604052611c20600260146101000a81548163ffffffff021916908363ffffffff16021790555034801561003357600080fd5b50604051613de4380380613de48339818101604052602081101561005657600080fd5b810190808051906020019092919050505080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050613cab806101396000396000f3fe60806040526004361061012a5760003560e01c80638406c079116100ab578063da3e33971161006f578063da3e339714610de9578063de5785d514610e64578063e599490514610e8f578063e9600f1214610f2a578063f1e03d6714610fe8578063f5537ede146110c35761012a565b80638406c079146106405780638da5cb5b146106975780638eb4e0ad146106ee578063ad3b1b4714610d3d578063b0eefabe14610d985761012a565b806357938b2a116100f257806357938b2a146103e55780635c810f091461041c5780636548e9bc146104da5780636b4078371461052b5780636cc6cde1146105e95761012a565b806305b649931461012f57806313af40351461017057806324943c7d146101c15780632cc9636c146102965780632d83549c14610354575b600080fd5b34801561013b57600080fd5b5061016e6004803603602081101561015257600080fd5b81019080803563ffffffff16906020019092919050505061113e565b005b34801561017c57600080fd5b506101bf6004803603602081101561019357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611225565b005b3480156101cd57600080fd5b5061029460048036036101208110156101e557600080fd5b8101908080356fffffffffffffffffffffffffffffffff19169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803561ffff169060200190929190803560ff1690602001909291908035906020019092919080359060200190929190803560ff16906020019092919050505061132c565b005b3480156102a257600080fd5b5061033a600480360360a08110156102b957600080fd5b8101908080356fffffffffffffffffffffffffffffffff19169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803561ffff16906020019092919050505061197e565b604051808215151515815260200191505060405180910390f35b34801561036057600080fd5b5061038d6004803603602081101561037757600080fd5b8101908080359060200190929190505050611a3b565b60405180841515151581526020018363ffffffff1663ffffffff168152602001826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152602001935050505060405180910390f35b3480156103f157600080fd5b506103fa611a9e565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b34801561042857600080fd5b506104c0600480360360a081101561043f57600080fd5b8101908080356fffffffffffffffffffffffffffffffff19169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803561ffff169060200190929190505050611ab4565b604051808215151515815260200191505060405180910390f35b3480156104e657600080fd5b50610529600480360360208110156104fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b71565b005b34801561053757600080fd5b506105cf600480360360a081101561054e57600080fd5b8101908080356fffffffffffffffffffffffffffffffff19169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803561ffff169060200190929190505050611c78565b604051808215151515815260200191505060405180910390f35b3480156105f557600080fd5b506105fe611d35565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561064c57600080fd5b50610655611d5a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106a357600080fd5b506106ac611d80565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106fa57600080fd5b50610ce6600480360361014081101561071257600080fd5b810190808035906020019064010000000081111561072f57600080fd5b82018360208201111561074157600080fd5b8035906020019184602083028401116401000000008311171561076357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156107c357600080fd5b8201836020820111156107d557600080fd5b803590602001918460208302840111640100000000831117156107f757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561085757600080fd5b82018360208201111561086957600080fd5b8035906020019184602083028401116401000000008311171561088b57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156108eb57600080fd5b8201836020820111156108fd57600080fd5b8035906020019184602083028401116401000000008311171561091f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561097f57600080fd5b82018360208201111561099157600080fd5b803590602001918460208302840111640100000000831117156109b357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610a1357600080fd5b820183602082011115610a2557600080fd5b80359060200191846020830284011164010000000083111715610a4757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610aa757600080fd5b820183602082011115610ab957600080fd5b80359060200191846020830284011164010000000083111715610adb57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610b3b57600080fd5b820183602082011115610b4d57600080fd5b80359060200191846020830284011164010000000083111715610b6f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610bcf57600080fd5b820183602082011115610be157600080fd5b80359060200191846020830284011164010000000083111715610c0357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610c6357600080fd5b820183602082011115610c7557600080fd5b80359060200191846020830284011164010000000083111715610c9757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611da6565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610d29578082015181840152602081019050610d0e565b505050509050019250505060405180910390f35b348015610d4957600080fd5b50610d9660048036036040811015610d6057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f91565b005b348015610da457600080fd5b50610de760048036036020811015610dbb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061210a565b005b348015610df557600080fd5b50610e6260048036036060811015610e0c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612210565b005b348015610e7057600080fd5b50610e7961239b565b6040518082815260200191505060405180910390f35b348015610e9b57600080fd5b50610f2860048036036080811015610eb257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506123a1565b005b348015610f3657600080fd5b50610fce600480360360a0811015610f4d57600080fd5b8101908080356fffffffffffffffffffffffffffffffff19169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803561ffff169060200190929190505050612561565b604051808215151515815260200191505060405180910390f35b6110c16004803603610140811015610fff57600080fd5b8101908080356fffffffffffffffffffffffffffffffff19169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803561ffff169060200190929190803563ffffffff169060200190929190803563ffffffff169060200190929190803560ff169060200190929190803590602001909291908035906020019092919050505061261e565b005b3480156110cf57600080fd5b5061113c600480360360608110156110e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612add565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d757374206265206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b80600260146101000a81548163ffffffff021916908363ffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d757374206265206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4d7573742062652061726269747261746f72000000000000000000000000000081525060200191505060405180910390fd5b600061145a8a600660405160200180836fffffffffffffffffffffffffffffffff19166fffffffffffffffffffffffffffffffff191681526010018260ff1660ff1660f81b81526001019250505060405160208183030381529060405280519060200120868686612c68565b90508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806114c157508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611533576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4d757374206265206275796572206f722073656c6c657200000000000000000081525060200191505060405180910390fd5b61153b613bf3565b600061154a8c8c8c8c8c612d95565b816040518060600160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160059054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681525050915080925081935050508160000151611662576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f457363726f7720646f6573206e6f74206578697374000000000000000000000081525060200191505060405180910390fd5b60648460ff1611156116bf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613c2f6022913960400191505060405180910390fd5b60003a618d0461ffff16028360400151016fffffffffffffffffffffffffffffffff16905089818b03111561175c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4f766572666c6f77206572726f7200000000000000000000000000000000000081525060200191505060405180910390fd5b8060036000828254019250508190555060046000838152602001908152602001600020600080820160006101000a81549060ff02191690556000820160016101000a81549063ffffffff02191690556000820160056101000a8154906fffffffffffffffffffffffffffffffff02191690555050817f65e0c7182ce84cd9087c1b07dc4b65875578877b885848e4be19ee312f2c3d3160405160405180910390a260008560ff1611156119075760006127108a61ffff168c028161181c57fe5b0490506000818360648960ff168f028161183257fe5b04030390508b8111156118ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4f766572666c6f77206572726f7200000000000000000000000000000000000081525060200191505060405180910390fd5b816003600082825401925050819055508c73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611903573d6000803e3d6000fd5b5050505b60648560ff16101561196f578b73ffffffffffffffffffffffffffffffffffffffff166108fc60648760640360ff16848e03028161194157fe5b049081150290604051600060405180830381858888f1935050505015801561196d573d6000803e3d6000fd5b505b50505050505050505050505050565b60008373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d7573742062652062757965720000000000000000000000000000000000000081525060200191505060405180910390fd5b611a3086868686866000612e98565b905095945050505050565b60046020528060005260406000206000915090508060000160009054906101000a900460ff16908060000160019054906101000a900463ffffffff16908060000160059054906101000a90046fffffffffffffffffffffffffffffffff16905083565b600260149054906101000a900463ffffffff1681565b60008373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d7573742062652062757965720000000000000000000000000000000000000081525060200191505060405180910390fd5b611b6686868686866000613088565b905095945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d757374206265206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4d7573742062652073656c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b611d2a86868686866000613251565b905095945050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060808b51604051908082528060200260200182016040528015611dd95781602001602082028038833980820191505090505b5090506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e3a576000611e4c565b8c51616f5461ffff1681611e4a57fe5b045b905060008090505b8d518160ff161015611f7d57611f4f8e8260ff1681518110611e7257fe5b60200260200101518e8360ff1681518110611e8957fe5b60200260200101518e8460ff1681518110611ea057fe5b60200260200101518e8560ff1681518110611eb757fe5b60200260200101518e8660ff1681518110611ece57fe5b60200260200101518e8760ff1681518110611ee557fe5b60200260200101518e8860ff1681518110611efc57fe5b60200260200101518e8960ff1681518110611f1357fe5b60200260200101518e8a60ff1681518110611f2a57fe5b60200260200101518e8b60ff1681518110611f4157fe5b60200260200101518c61342c565b838260ff1681518110611f5e57fe5b6020026020010190151590811515815250508080600101915050611e54565b5081925050509a9950505050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d757374206265206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b6003548111156120af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613c516026913960400191505060405180910390fd5b806003600082825403925050819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612105573d6000803e3d6000fd5b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d757374206265206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146122d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d757374206265206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663095ea7b383836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561235a57600080fd5b505af115801561236e573d6000803e3d6000fd5b505050506040513d602081101561238457600080fd5b810190808051906020019092919050505050505050565b60035481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d757374206265206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd8484846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561251f57600080fd5b505af1158015612533573d6000803e3d6000fd5b505050506040513d602081101561254957600080fd5b81019080805190602001909291905050505050505050565b60008473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612604576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4d7573742062652073656c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b61261386868686866000613627565b905095945050505050565b60008a8a8a8a8a60405160200180866fffffffffffffffffffffffffffffffff19166fffffffffffffffffffffffffffffffff191681526010018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018381526020018261ffff1661ffff1660f01b8152600201955050505050506040516020818303038152906040528051906020012090506004600082815260200190815260200160002060000160009054906101000a900460ff161561278f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f547261646520616c72656164792065786973747300000000000000000000000081525060200191505060405180910390fd5b6000818787604051602001808481526020018363ffffffff1663ffffffff1660e01b81526004018263ffffffff1663ffffffff1660e01b81526004019350505050604051602081830303815290604052805190602001209050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661282d82878787612c68565b73ffffffffffffffffffffffffffffffffffffffff16146128b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f4d7573742062652072656c61796572000000000000000000000000000000000081525060200191505060405180910390fd5b8563ffffffff164210612931576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f5369676e6174757265206861732065787069726564000000000000000000000081525060200191505060405180910390fd5b88341480156129405750600034115b6129b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f496e636f72726563742065746865722073656e7400000000000000000000000081525060200191505060405180910390fd5b6000808863ffffffff16146129c9578742016129cc565b60015b905060405180606001604052806001151581526020018263ffffffff16815260200160006fffffffffffffffffffffffffffffffff168152506004600085815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160056101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550905050827f102d25c49d33fcdb8976a3f2744e0785c98d9e43b88364859e6aec4ae82eff5c60405160405180910390a250505050505050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612ba0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d757374206265206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612c2757600080fd5b505af1158015612c3b573d6000803e3d6000fd5b505050506040513d6020811015612c5157600080fd5b810190808051906020019092919050505050505050565b600060606040518060400160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152509050600081876040516020018083805190602001908083835b60208310612cde5780518252602082019150602081019050602083039250612cbb565b6001836020036101000a0380198251168184511680821785525050505050509050018281526020019250505060405160208183030381529060405280519060200120905060018187878760405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015612d7f573d6000803e3d6000fd5b5050506020604051035192505050949350505050565b6000806000878787878760405160200180866fffffffffffffffffffffffffffffffff19166fffffffffffffffffffffffffffffffff191681526010018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018381526020018261ffff1661ffff1660f01b815260020195505050505050604051602081830303815290604052805190602001209050600460008281526020019081526020016000208181915092509250509550959350505050565b6000612ea2613bf3565b6000612eb18989898989612d95565b816040518060600160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160059054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681525050915080925081935050508160000151612f665760009250505061307e565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612fc4576000612fd0565b3a8561b4af61ffff1601025b836040015101905060046000838152602001908152602001600020600080820160006101000a81549060ff02191690556000820160016101000a81549063ffffffff02191690556000820160056101000a8154906fffffffffffffffffffffffffffffffff02191690555050817fd9b627ddaa414e8e6c82366cc9c179f6281d73968827cc17038a56852e28ac8b60405160405180910390a26130768988836000613816565b600193505050505b9695505050505050565b6000613092613bf3565b60006130a18989898989612d95565b816040518060600160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160059054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505091508092508193505050816000015161315657600092505050613247565b6000826020015163ffffffff16141561317457600092505050613247565b60006004600083815260200190815260200160002060000160016101000a81548163ffffffff021916908363ffffffff160217905550807fe95fa7985c7585e90dab2dc46470726468662be06f67d79a31a5012e4bc0edeb60405160405180910390a2600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156132405761323f818561711061ffff16016138b1565b5b6001925050505b9695505050505050565b600061325b613bf3565b600061326a8989898989612d95565b816040518060600160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160059054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505091508092508193505050816000015161331f57600092505050613422565b6001826020015163ffffffff161461333c57600092505050613422565b600260149054906101000a900463ffffffff1642016004600083815260200190815260200160002060000160016101000a81548163ffffffff021916908363ffffffff160217905550807f43e76a2687c7b12792086e4c776772be26c4d6a7041115f446cbc22ccada08ab60405160405180910390a2600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561341b5761341a818561734361ffff16016138b1565b5b6001925050505b9695505050505050565b60008061343d8d858a8a8a8a613925565b90508a73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156134c257600160ff168460ff161415613498576134908d8d8d8d8d88613088565b915050613618565b600260ff168460ff1614156134bd576134b58d8d8d8d8d88612e98565b915050613618565b613616565b8b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561356a57600560ff168460ff16141561351b576135138d8d8d8d8d88613627565b915050613618565b600360ff168460ff161415613540576135388d8d8d8d8d886139d0565b915050613618565b600460ff168460ff1614156135655761355d8d8d8d8d8d88613251565b915050613618565b613615565b8b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461360b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f556e7265636f676e69736564207061727479000000000000000000000000000081525060200191505060405180910390fd5b6000915050613618565b5b505b9b9a5050505050505050505050565b6000613631613bf3565b60006136408989898989612d95565b816040518060600160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160059054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815250509150809250819350505081600001516136f55760009250505061380c565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461375357600061375f565b3a8561b5fc61ffff1601025b836040015101905060046000838152602001908152602001600020600080820160006101000a81549060ff02191690556000820160016101000a81549063ffffffff02191690556000820160056101000a8154906fffffffffffffffffffffffffffffffff02191690555050817f6eec2dd2382427616d4ea7ef183b16091feac4e2e63c8b55f25215f132df8d1460405160405180910390a261380488888389613816565b600193505050505b9695505050505050565b6000826fffffffffffffffffffffffffffffffff166127108361ffff1686028161383c57fe5b0401905083818503111561385057506138ab565b806003600082825401925050819055508473ffffffffffffffffffffffffffffffffffffffff166108fc8286039081150290604051600060405180830381858888f193505050501580156138a8573d6000803e3d6000fd5b50505b50505050565b3a81026004600084815260200190815260200160002060000160058282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505050565b60008087878760405160200180846fffffffffffffffffffffffffffffffff19166fffffffffffffffffffffffffffffffff191681526010018360ff1660ff1660f81b8152600101826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1660801b815260100193505050506040516020818303038152906040528051906020012090506139c381868686612c68565b9150509695505050505050565b60006139da613bf3565b60006139e98989898989612d95565b816040518060600160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160059054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681525050915080925081935050508160000151613a9e57600092505050613be9565b6001826020015163ffffffff16111580613ac1575042826020015163ffffffff16115b15613ad157600092505050613be9565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613b2f576000613b3b565b3a8561b6df61ffff1601025b836040015101905060046000838152602001908152602001600020600080820160006101000a81549060ff02191690556000820160016101000a81549063ffffffff02191690556000820160056101000a8154906fffffffffffffffffffffffffffffffff02191690555050817f366d2b4e6cc37ecebb3d7d41df6d581634fd8137412710a1e086e4ca4656bb5860405160405180910390a2613be18988836000613816565b600193505050505b9695505050505050565b6040518060600160405280600015158152602001600063ffffffff16815260200160006fffffffffffffffffffffffffffffffff168152509056fe5f627579657250657263656e74206d75737420626520313030206f72206c6f776572416d6f756e7420697320686967686572207468616e20616d6f756e7420617661696c61626c65a265627a7a72315820619413efc9f1bfc075ff600f5996975b820abf42bd0dd18fb303b23649b2993c64736f6c63430005110032000000000000000000000000877cf5f02497607e0b4e4e6aaf6c275648cd5ce5

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

000000000000000000000000877cf5f02497607e0b4e4e6aaf6c275648cd5ce5

-----Decoded View---------------
Arg [0] : initialAddress (address): 0x877cf5f02497607e0b4e4e6aaf6c275648cd5ce5

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000877cf5f02497607e0b4e4e6aaf6c275648cd5ce5


Deployed ByteCode Sourcemap

88:28312:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13943:207;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13943:207:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13943:207:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;13435:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13435:92:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13435:92:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;6279:1775;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6279:1775:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6279:1775:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9763:323;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9763:323:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;9763:323:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2793:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2793:42:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2793:42:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;539:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;539:54:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9092:333;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9092:333:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;9092:333:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13682:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13682:100:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13682:100:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;10425:335;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10425:335:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;10425:335:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;296:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;296:25:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;510:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;510:22:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;391:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;391:20:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11449:1065;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11449:1065:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;11449:1065:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;11449:1065:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11449:1065:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11449:1065:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;11449:1065:0;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;11449:1065:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11449:1065:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11449:1065:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;11449:1065:0;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;11449:1065:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11449:1065:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11449:1065:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;11449:1065:0;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;11449:1065:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11449:1065:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11449:1065:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;11449:1065:0;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;11449:1065:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11449:1065:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11449:1065:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;11449:1065:0;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;11449:1065:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11449:1065:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11449:1065:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;11449:1065:0;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;11449:1065:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11449:1065:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11449:1065:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;11449:1065:0;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;11449:1065:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11449:1065:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11449:1065:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;11449:1065:0;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;11449:1065:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11449:1065:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11449:1065:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;11449:1065:0;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;11449:1065:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11449:1065:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11449:1065:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;11449:1065:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;11449:1065:0;;;;;;;;;;;;;;;;;12704:309;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12704:309:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12704:309:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13174:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13174:112:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13174:112:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;15318:191;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15318:191:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15318:191:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;645:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;645:39:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14836:254;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14836:254:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;14836:254:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8400:326;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8400:326:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;8400:326:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3896:1751;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;3896:1751:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14375:199;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14375:199:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14375:199:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13943:207;2898:5;;;;;;;;;;;2884:19;;:10;:19;;;2876:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14108:34;14075:30;;:67;;;;;;;;;;;;;;;;;;13943:207;:::o;13435:92::-;2898:5;;;;;;;;;;;2884:19;;:10;:19;;;2876:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13510:9;13502:5;;:17;;;;;;;;;;;;;;;;;;13435:92;:::o;6279:1775::-;3008:10;;;;;;;;;;;2994:24;;:10;:24;;;2986:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6577:18;6598:123;6654:8;1410:4;6623:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6623:84:0;;;6613:95;;;;;;6710:2;6714;6718;6598:14;:123::i;:::-;6577:144;;6754:6;6740:20;;:10;:20;;;:45;;;;6778:7;6764:21;;:10;:21;;;6740:45;6732:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6826:21;;:::i;:::-;6858:18;6911:57;6928:8;6938:7;6947:6;6955;6963:4;6911:16;:57::i;:::-;6887:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6987:7;:14;;;6979:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7063:3;7046:13;:20;;;;7038:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7118:18;7208:11;5694:5;7177:43;;;7139:7;:34;;;:82;7118:103;;;;7263:6;7249:10;7240:6;:19;:29;;7232:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7348:10;7320:24;;:38;;;;;;;;;;;7427:7;:19;7435:10;7427:19;;;;;;;;;;;;7420:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7478:10;7462:27;;;;;;;;;;7520:1;7504:13;:17;;;7500:418;;;7582:19;7621:5;7614:4;7605:13;;:6;:13;:21;;;;;;7582:45;;7672:20;7739:11;7726:10;7720:3;7704:13;7695:22;;:6;:22;:28;;;;;;:41;:55;7672:78;;7787:6;7771:12;:22;;7763:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7853:11;7825:24;;:39;;;;;;;;;;;7877:6;:15;;:29;7893:12;7877:29;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7877:29:0;7500:418;;;7948:3;7932:13;:19;;;7928:119;;;7966:7;:16;;:69;8031:3;8014:13;8008:3;:19;7983:45;;7993:10;7984:6;:19;7983:45;:51;;;;;;7966:69;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7966:69:0;7928:119;3052:1;;;;6279:1775;;;;;;;;;:::o;9763:323::-;9940:4;9979:6;9965:20;;:10;:20;;;9957:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10021:57;10035:8;10045:7;10054:6;10062;10070:4;10076:1;10021:13;:57::i;:::-;10014:64;;9763:323;;;;;;;:::o;2793:42::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;539:54::-;;;;;;;;;;;;;:::o;9092:333::-;9271:4;9310:6;9296:20;;:10;:20;;;9288:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9352:65;9374:8;9384:7;9393:6;9401;9409:4;9415:1;9352:21;:65::i;:::-;9345:72;;9092:333;;;;;;;:::o;13682:100::-;2898:5;;;;;;;;;;;2884:19;;:10;:19;;;2876:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13763:11;13753:7;;:21;;;;;;;;;;;;;;;;;;13682:100;:::o;10425:335::-;10604:4;10643:7;10629:21;;:10;:21;;;10621:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10687:65;10709:8;10719:7;10728:6;10736;10744:4;10750:1;10687:21;:65::i;:::-;10680:72;;10425:335;;;;;;;:::o;296:25::-;;;;;;;;;;;;;:::o;510:22::-;;;;;;;;;;;;;:::o;391:20::-;;;;;;;;;;;;;:::o;11449:1065::-;11852:13;11878:22;11914:8;:15;11903:27;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;11903:27:0;;;;11878:52;;11941:22;11988:7;;;;;;;;;;;11974:21;;:10;:21;;;:68;;12041:1;11974:68;;;12023:8;:15;11437:5;11998:40;;;;;;;;11974:68;11941:102;;12059:7;12069:1;12059:11;;12054:427;12076:8;:15;12072:1;:19;;;12054:427;;;12127:342;12151:8;12160:1;12151:11;;;;;;;;;;;;;;;;12181:7;12189:1;12181:10;;;;;;;;;;;;;;;;12210:6;12217:1;12210:9;;;;;;;;;;;;;;;;12238:6;12245:1;12238:9;;;;;;;;;;;;;;;;12266:4;12271:1;12266:7;;;;;;;;;;;;;;;;12292:16;12309:1;12292:19;;;;;;;;;;;;;;;;12330:2;12333:1;12330:5;;;;;;;;;;;;;;;;12354:2;12357:1;12354:5;;;;;;;;;;;;;;;;12378:2;12381:1;12378:5;;;;;;;;;;;;;;;;12402:16;12419:1;12402:19;;;;;;;;;;;;;;;;12440:14;12127:5;:342::i;:::-;12113:8;12122:1;12113:11;;;;;;;;;;;;;;;:356;;;;;;;;;;;12093:3;;;;;;;12054:427;;;;12498:8;12491:15;;;;11449:1065;;;;;;;;;;;;:::o;12704:309::-;2898:5;;;;;;;;;;;2884:19;;:10;:19;;;2876:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12860:24;;12849:7;:35;;12841:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12966:7;12938:24;;:35;;;;;;;;;;;12984:3;:12;;:21;12997:7;12984:21;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12984:21:0;12704:309;;:::o;13174:112::-;2898:5;;;;;;;;;;;2884:19;;:10;:19;;;2876:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13264:14;13251:10;;:27;;;;;;;;;;;;;;;;;;13174:112;:::o;15318:191::-;2898:5;;;;;;;;;;;2884:19;;:10;:19;;;2876:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15461:14;:22;;;15484:8;15494:6;15461:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15461:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15461:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15461:40:0;;;;;;;;;;;;;;;;;15318:191;;;:::o;645:39::-;;;;:::o;14836:254::-;2898:5;;;;;;;;;;;2884:19;;:10;:19;;;2876:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15019:14;:27;;;15047:11;15060:13;15075:6;15019:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15019:63:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15019:63:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15019:63:0;;;;;;;;;;;;;;;;;14836:254;;;;:::o;8400:326::-;8583:4;8621:7;8607:21;;:10;:21;;;8599:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8665:53;8675:8;8685:7;8694:6;8702;8710:4;8716:1;8665:9;:53::i;:::-;8658:60;;8400:326;;;;;;;:::o;3896:1751::-;4449:18;4497:8;4507:7;4516:6;4524;4532:4;4480:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4480:57:0;;;4470:68;;;;;;4449:89;;4612:7;:19;4620:10;4612:19;;;;;;;;;;;:26;;;;;;;;;;;;4611:27;4603:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4758:23;4825:10;4850:23;4888:7;4794:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4794:112:0;;;4784:123;;;;;;4758:149;;4973:7;;;;;;;;;;;4926:54;;:43;4941:15;4958:2;4962;4966;4926:14;:43::i;:::-;:54;;;4918:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5092:7;5074:25;;:15;:25;5066:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5261:6;5248:9;:19;:36;;;;;5283:1;5271:9;:13;5248:36;5240:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5320:28;5378:1;5351:23;:28;;;:110;;5438:23;5419:15;5412:49;5351:110;;;5395:1;5351:110;5320:141;;5566:38;;;;;;;;5573:4;5566:38;;;;;;5579:21;5566:38;;;;;;5602:1;5566:38;;;;;5544:7;:19;5552:10;5544:19;;;;;;;;;;;:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5628:10;5620:19;;;;;;;;;;3896:1751;;;;;;;;;;;;;:::o;14375:199::-;2898:5;;;;;;;;;;;2884:19;;:10;:19;;;2876:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14522:14;:23;;;14546:11;14559:6;14522:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14522:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14522:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14522:44:0;;;;;;;;;;;;;;;;;14375:199;;;:::o;28048:349::-;28183:7;28203:20;:57;;;;;;;;;;;;;;;;;;;28271:21;28322:7;28331:2;28305:29;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;28305:29:0;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;28305:29:0;;;28295:40;;;;;;28271:64;;28353:36;28363:13;28378:2;28382;28386;28353:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28353:36:0;;;;;;;;28346:43;;;;28048:349;;;;;;:::o;27330:440::-;27510:14;27526:7;27546:18;27608:8;27631:7;27653:6;27674;27695:4;27577:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;27577:133:0;;;27567:144;;;;;;27546:165;;27730:7;:19;27738:10;27730:19;;;;;;;;;;;27751:10;27722:40;;;;;;;;27330:440;;;;;;;;:::o;22266:824::-;22487:4;22504:21;;:::i;:::-;22536:18;22589:57;22606:8;22616:7;22625:6;22633;22641:4;22589:16;:57::i;:::-;22565:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22662:7;:14;;;22657:60;;22700:5;22693:12;;;;;;22657:60;22727:16;22798:7;;;;;;;;;;;22784:21;;:10;:21;;;:122;;22905:1;22784:122;;;22873:11;22846:14;21807:5;22826:34;;;22825:60;22784:122;22746:7;:34;;;:175;22727:194;;22939:7;:19;22947:10;22939:19;;;;;;;;;;;;22932:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22991:10;22974:28;;;;;;;;;;23013:47;23031:7;23040:6;23048:8;23058:1;23013:17;:47::i;:::-;23078:4;23071:11;;;;;22266:824;;;;;;;;;:::o;21019:744::-;21232:4;21249:21;;:::i;:::-;21281:18;21334:57;21351:8;21361:7;21370:6;21378;21386:4;21334:16;:57::i;:::-;21310:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21407:7;:14;;;21402:33;;21430:5;21423:12;;;;;;21402:33;21481:1;21449:7;:28;;;:33;;;21446:50;;;21491:5;21484:12;;;;;;21446:50;21550:1;21507:7;:19;21515:10;21507:19;;;;;;;;;;;:40;;;:44;;;;;;;;;;;;;;;;;;21588:10;21567:32;;;;;;;;;;21628:7;;;;;;;;;;;21614:21;;:10;:21;;;21610:124;;;21650:72;21667:10;21707:14;20561:5;21679:42;;;21650:16;:72::i;:::-;21610:124;21751:4;21744:11;;;;21019:744;;;;;;;;;:::o;25090:976::-;25303:4;25408:21;;:::i;:::-;25440:18;25493:57;25510:8;25520:7;25529:6;25537;25545:4;25493:16;:57::i;:::-;25469:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25566:7;:14;;;25561:60;;25604:5;25597:12;;;;;;25561:60;25666:1;25634:7;:28;;;:33;;;25631:77;;25691:5;25684:12;;;;;;25631:77;25823:30;;;;;;;;;;;25768:15;25761:92;25718:7;:19;25726:10;25718:19;;;;;;;;;;;:40;;;:135;;;;;;;;;;;;;;;;;;25891:10;25869:33;;;;;;;;;;25931:7;;;;;;;;;;;25917:21;;:10;:21;;;25913:124;;;25953:72;25970:10;26010:14;24636:5;25982:42;;;25953:16;:72::i;:::-;25913:124;26054:4;26047:11;;;;25090:976;;;;;;;;;:::o;16163:1897::-;16505:4;16522:22;16547:163;16578:8;16601:16;16632;16663:2;16680;16697;16547:16;:163::i;:::-;16522:188;;16743:6;16725:24;;:14;:24;;;16721:1332;;;909:4;16808:52;;:16;:52;;;16804:424;;;16939:78;16961:8;16971:7;16980:6;16988;16996:4;17002:14;16939:21;:78::i;:::-;16932:85;;;;;16804:424;987:4;17043:44;;:16;:44;;;17039:189;;;17142:70;17156:8;17166:7;17175:6;17183;17191:4;17197:14;17142:13;:70::i;:::-;17135:77;;;;;17039:189;16721:1332;;;17267:7;17249:25;;:14;:25;;;17245:808;;;1294:4;17334:39;;:16;:39;;;17330:600;;;17429:66;17439:8;17449:7;17458:6;17466;17474:4;17480:14;17429:9;:66::i;:::-;17422:73;;;;;17330:600;1067:4;17521:45;;:16;:45;;;17517:413;;;17621:71;17636:8;17646:7;17655:6;17663;17671:4;17677:14;17621;:71::i;:::-;17614:78;;;;;17517:413;1202:4;17718:53;;:16;:53;;;17714:216;;;17836:78;17858:8;17868:7;17877:6;17885;17893:4;17899:14;17836:21;:78::i;:::-;17829:85;;;;;17714:216;17245:808;;;17984:7;17970:21;;:10;:21;;;17962:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18036:5;18029:12;;;;;17245:808;16721:1332;16163:1897;;;;;;;;;;;;;;;:::o;19725:784::-;19942:4;19959:21;;:::i;:::-;19991:18;20044:57;20061:8;20071:7;20080:6;20088;20096:4;20044:16;:57::i;:::-;20020:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20117:7;:14;;;20112:33;;20140:5;20133:12;;;;;;20112:33;20156:16;20227:7;;;;;;;;;;;20213:21;;:10;:21;;;:118;;20330:1;20213:118;;;20298:11;20271:14;19271:5;20255:30;;;20254:56;20213:118;20175:7;:34;;;:171;20156:190;;20364:7;:19;20372:10;20364:19;;;;;;;;;;;;20357:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20408:10;20399:20;;;;;;;;;;20430:49;20448:6;20456;20464:8;20474:4;20430:17;:49::i;:::-;20497:4;20490:11;;;;;19725:784;;;;;;;;;:::o;18712:519::-;18888:18;18935:27;18909:53;;18926:5;18919:4;18910:13;;:6;:13;:21;;;;;;18909:53;18888:74;;19028:6;19015:10;19006:6;:19;:28;19003:66;;;19051:7;;;19003:66;19169:10;19141:24;;:38;;;;;;;;;;;19190:3;:12;;:33;19212:10;19203:6;:19;19190:33;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19190:33:0;18712:519;;;;;;:::o;18227:164::-;18371:11;18356:4;:27;18306:7;:19;18314:10;18306:19;;;;;;;;;;;:46;;;:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18227:164;;:::o;26474:417::-;26673:7;26693:13;26750:8;26773:16;26804;26719:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;26719:112:0;;;26709:123;;;;;;26693:139;;26850:33;26865:5;26872:2;26876;26880;26850:14;:33::i;:::-;26843:40;;;26474:417;;;;;;;;:::o;23597:987::-;23819:4;23836:21;;:::i;:::-;23868:18;23921:57;23938:8;23948:7;23957:6;23965;23973:4;23921:16;:57::i;:::-;23897:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23994:7;:14;;;23989:60;;24032:5;24025:12;;;;;;23989:60;24094:1;24062:7;:28;;;:33;;;;:83;;;;24130:15;24099:7;:28;;;:46;;;24062:83;24059:150;;;24192:5;24185:12;;;;;;24059:150;24219:16;24290:7;;;;;;;;;;;24276:21;;:10;:21;;;:123;;24398:1;24276:123;;;24366:11;24339:14;23135:5;24318:35;;;24317:61;24276:123;24238:7;:34;;;:176;24219:195;;24432:7;:19;24440:10;24432:19;;;;;;;;;;;;24425:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24485:10;24467:29;;;;;;;;;;24507:47;24525:7;24534:6;24542:8;24552:1;24507:17;:47::i;:::-;24572:4;24565:11;;;;;23597:987;;;;;;;;;:::o;88:28312::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

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

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.