ETH Price: $3,453.54 (-1.12%)
Gas: 10 Gwei

Contract

0xe5bcEa6F87aAEe4a81f64dfDB4d30d400e0e5cf4
 

Overview

ETH Balance

2.323 ETH

Eth Value

$8,022.57 (@ $3,453.54/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Execute Transact...200273112024-06-05 18:06:3542 days ago1717610795IN
0xe5bcEa6F...00e0e5cf4
0 ETH0.0029106430.12062641
Execute Transact...200272722024-06-05 17:58:3542 days ago1717610315IN
0xe5bcEa6F...00e0e5cf4
0 ETH0.0076154726.9210365
Execute Transact...200272672024-06-05 17:57:3542 days ago1717610255IN
0xe5bcEa6F...00e0e5cf4
0 ETH0.0052657327.51715279
Execute Transact...200272552024-06-05 17:55:1142 days ago1717610111IN
0xe5bcEa6F...00e0e5cf4
0 ETH0.003480427.40501541
Execute Transact...200272512024-06-05 17:54:2342 days ago1717610063IN
0xe5bcEa6F...00e0e5cf4
0 ETH0.0031891425.11594081
Execute Transact...200272452024-06-05 17:53:1142 days ago1717609991IN
0xe5bcEa6F...00e0e5cf4
0 ETH0.0070899327.75437258
Execute Submissi...200260052024-06-05 13:44:1142 days ago1717595051IN
0xe5bcEa6F...00e0e5cf4
0 ETH0.0033781528.24167032
Submit List199694232024-05-28 16:01:1150 days ago1716912071IN
0xe5bcEa6F...00e0e5cf4
4.44 ETH0.0555966220.96347534
Execute Submissi...199693802024-05-28 15:52:3550 days ago1716911555IN
0xe5bcEa6F...00e0e5cf4
0 ETH0.0011707519.13805443
Execute Transact...192834722024-02-22 13:33:47146 days ago1708608827IN
0xe5bcEa6F...00e0e5cf4
0 ETH0.0063650838.83825583
Execute Transact...192833502024-02-22 13:08:59146 days ago1708607339IN
0xe5bcEa6F...00e0e5cf4
0 ETH0.0049712136.96925826
Execute Transact...192833302024-02-22 13:04:59146 days ago1708607099IN
0xe5bcEa6F...00e0e5cf4
0 ETH0.0030766636.56692831
Execute Transact...192833132024-02-22 13:01:35146 days ago1708606895IN
0xe5bcEa6F...00e0e5cf4
0 ETH0.003629535.59380556
Execute Transact...192832892024-02-22 12:56:47146 days ago1708606607IN
0xe5bcEa6F...00e0e5cf4
0 ETH0.0033382839.6762778
Execute Transact...192832862024-02-22 12:56:11146 days ago1708606571IN
0xe5bcEa6F...00e0e5cf4
0 ETH0.0035795837.05420007
Execute Transact...192832822024-02-22 12:55:23146 days ago1708606523IN
0xe5bcEa6F...00e0e5cf4
0 ETH0.0031854237.85957664
Execute Transact...192832792024-02-22 12:54:47146 days ago1708606487IN
0xe5bcEa6F...00e0e5cf4
0 ETH0.0031953234.99044929
Execute Transact...192832742024-02-22 12:53:47146 days ago1708606427IN
0xe5bcEa6F...00e0e5cf4
0 ETH0.0030830136.64234499
Execute Transact...192832682024-02-22 12:52:35146 days ago1708606355IN
0xe5bcEa6F...00e0e5cf4
0 ETH0.0031303637.20072824
Execute Transact...192832252024-02-22 12:43:35146 days ago1708605815IN
0xe5bcEa6F...00e0e5cf4
0 ETH0.0030403633.29356116
Execute Transact...192832062024-02-22 12:39:47146 days ago1708605587IN
0xe5bcEa6F...00e0e5cf4
0 ETH0.0031549937.49780487
Execute Transact...192831232024-02-22 12:22:59146 days ago1708604579IN
0xe5bcEa6F...00e0e5cf4
0 ETH0.0030990733.93639454
Execute Transact...192831122024-02-22 12:20:47146 days ago1708604447IN
0xe5bcEa6F...00e0e5cf4
0 ETH0.0029896935.53319722
Execute Transact...192831092024-02-22 12:20:11146 days ago1708604411IN
0xe5bcEa6F...00e0e5cf4
0 ETH0.0034000238.40970036
Execute Transact...192830862024-02-22 12:15:35146 days ago1708604135IN
0xe5bcEa6F...00e0e5cf4
0 ETH0.0032464538.58490193
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
200260052024-06-05 13:44:1142 days ago1717595051
0xe5bcEa6F...00e0e5cf4
4.44 ETH
197823022024-05-02 12:00:5976 days ago1714651259
0xe5bcEa6F...00e0e5cf4
0.026 ETH
197151182024-04-23 2:29:4786 days ago1713839387
0xe5bcEa6F...00e0e5cf4
0.026 ETH
195084822024-03-25 2:15:35115 days ago1711332935
0xe5bcEa6F...00e0e5cf4
0.026 ETH
192830692024-02-22 12:11:59146 days ago1708603919
0xe5bcEa6F...00e0e5cf4
4.495 ETH
192078632024-02-11 22:43:47157 days ago1707691427
0xe5bcEa6F...00e0e5cf4
0.025 ETH
191434712024-02-02 21:44:35166 days ago1706910275
0xe5bcEa6F...00e0e5cf4
0.025 ETH
191257662024-01-31 10:07:35168 days ago1706695655
0xe5bcEa6F...00e0e5cf4
4.495 ETH
188565372023-12-24 15:32:35206 days ago1703431955
0xe5bcEa6F...00e0e5cf4
0.025 ETH
183527632023-10-15 2:22:11277 days ago1697336531
0xe5bcEa6F...00e0e5cf4
0.025 ETH
181628672023-09-18 12:37:35303 days ago1695040655
0xe5bcEa6F...00e0e5cf4
0.025 ETH
181024392023-09-10 0:35:59312 days ago1694306159
0xe5bcEa6F...00e0e5cf4
0.025 ETH
179537302023-08-20 4:58:35333 days ago1692507515
0xe5bcEa6F...00e0e5cf4
0.025 ETH
175254972023-06-21 3:55:11393 days ago1687319711
0xe5bcEa6F...00e0e5cf4
0.025 ETH
175079932023-06-18 16:57:11395 days ago1687107431
0xe5bcEa6F...00e0e5cf4
0.025 ETH
173723392023-05-30 14:28:59414 days ago1685456939
0xe5bcEa6F...00e0e5cf4
0.025 ETH
172375642023-05-11 14:00:11433 days ago1683813611
0xe5bcEa6F...00e0e5cf4
0.025 ETH
171962582023-05-05 18:36:59439 days ago1683311819
0xe5bcEa6F...00e0e5cf4
0.025 ETH
169219572023-03-27 23:23:11478 days ago1679959391
0xe5bcEa6F...00e0e5cf4
0.011 ETH
168976392023-03-24 13:24:59481 days ago1679664299
0xe5bcEa6F...00e0e5cf4
0.011 ETH
168934792023-03-23 23:23:47482 days ago1679613827
0xe5bcEa6F...00e0e5cf4
0.011 ETH
168830512023-03-22 12:11:47483 days ago1679487107
0xe5bcEa6F...00e0e5cf4
4.495 ETH
168812972023-03-22 6:16:47484 days ago1679465807
0xe5bcEa6F...00e0e5cf4
0.011 ETH
168137092023-03-12 18:24:23493 days ago1678645463
0xe5bcEa6F...00e0e5cf4
0.011 ETH
167621352023-03-05 12:15:59500 days ago1678018559
0xe5bcEa6F...00e0e5cf4
0.011 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
KlerosGovernor

Compiler Version
v0.4.26+commit.4563c3fc

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-10-16
*/

pragma solidity ^0.4.26;

library CappedMath {
    uint constant private UINT_MAX = 2**256 - 1;

    /**
     * @dev Adds two unsigned integers, returns 2^256 - 1 on overflow.
     */
    function addCap(uint _a, uint _b) internal pure returns (uint) {
        uint c = _a + _b;
        return c >= _a ? c : UINT_MAX;
    }

    /**
     * @dev Subtracts two integers, returns 0 on underflow.
     */
    function subCap(uint _a, uint _b) internal pure returns (uint) {
        if (_b > _a)
            return 0;
        else
            return _a - _b;
    }

    /**
     * @dev Multiplies two unsigned integers, returns 2^256 - 1 on overflow.
     */
    function mulCap(uint _a, uint _b) internal pure returns (uint) {
        // Gas optimization: this is cheaper than requiring '_a' not being zero, but the
        // benefit is lost if '_b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
        if (_a == 0)
            return 0;

        uint c = _a * _b;
        return c / _a == _b ? c : UINT_MAX;
    }
}

/** @title Arbitrator
 *  Arbitrator abstract contract.
 *  When developing arbitrator contracts we need to:
 *  -Define the functions for dispute creation (createDispute) and appeal (appeal). Don't forget to store the arbitrated contract and the disputeID (which should be unique, use nbDisputes).
 *  -Define the functions for cost display (arbitrationCost and appealCost).
 *  -Allow giving rulings. For this a function must call arbitrable.rule(disputeID, ruling).
 */
contract Arbitrator {

    enum DisputeStatus {Waiting, Appealable, Solved}

    modifier requireArbitrationFee(bytes _extraData) {
        require(msg.value >= arbitrationCost(_extraData), "Not enough ETH to cover arbitration costs.");
        _;
    }
    modifier requireAppealFee(uint _disputeID, bytes _extraData) {
        require(msg.value >= appealCost(_disputeID, _extraData), "Not enough ETH to cover appeal costs.");
        _;
    }

    /** @dev To be raised when a dispute is created.
     *  @param _disputeID ID of the dispute.
     *  @param _arbitrable The contract which created the dispute.
     */
    event DisputeCreation(uint indexed _disputeID, Arbitrable indexed _arbitrable);

    /** @dev To be raised when a dispute can be appealed.
     *  @param _disputeID ID of the dispute.
     */
    event AppealPossible(uint indexed _disputeID, Arbitrable indexed _arbitrable);

    /** @dev To be raised when the current ruling is appealed.
     *  @param _disputeID ID of the dispute.
     *  @param _arbitrable The contract which created the dispute.
     */
    event AppealDecision(uint indexed _disputeID, Arbitrable indexed _arbitrable);

    /** @dev Create a dispute. Must be called by the arbitrable contract.
     *  Must be paid at least arbitrationCost(_extraData).
     *  @param _choices Amount of choices the arbitrator can make in this dispute.
     *  @param _extraData Can be used to give additional info on the dispute to be created.
     *  @return disputeID ID of the dispute created.
     */
    function createDispute(uint _choices, bytes _extraData) public requireArbitrationFee(_extraData) payable returns(uint disputeID) {}

    /** @dev Compute the cost of arbitration. It is recommended not to increase it often, as it can be highly time and gas consuming for the arbitrated contracts to cope with fee augmentation.
     *  @param _extraData Can be used to give additional info on the dispute to be created.
     *  @return fee Amount to be paid.
     */
    function arbitrationCost(bytes _extraData) public view returns(uint fee);

    /** @dev Appeal a ruling. Note that it has to be called before the arbitrator contract calls rule.
     *  @param _disputeID ID of the dispute to be appealed.
     *  @param _extraData Can be used to give extra info on the appeal.
     */
    function appeal(uint _disputeID, bytes _extraData) public requireAppealFee(_disputeID,_extraData) payable {
        emit AppealDecision(_disputeID, Arbitrable(msg.sender));
    }

    /** @dev Compute the cost of appeal. It is recommended not to increase it often, as it can be higly time and gas consuming for the arbitrated contracts to cope with fee augmentation.
     *  @param _disputeID ID of the dispute to be appealed.
     *  @param _extraData Can be used to give additional info on the dispute to be created.
     *  @return fee Amount to be paid.
     */
    function appealCost(uint _disputeID, bytes _extraData) public view returns(uint fee);

    /** @dev Compute the start and end of the dispute's current or next appeal period, if possible.
     *  @param _disputeID ID of the dispute.
     *  @return The start and end of the period.
     */
    function appealPeriod(uint _disputeID) public view returns(uint start, uint end) {}

    /** @dev Return the status of a dispute.
     *  @param _disputeID ID of the dispute to rule.
     *  @return status The status of the dispute.
     */
    function disputeStatus(uint _disputeID) public view returns(DisputeStatus status);

    /** @dev Return the current ruling of a dispute. This is useful for parties to know if they should appeal.
     *  @param _disputeID ID of the dispute.
     *  @return ruling The ruling which has been given or the one which will be given if there is no appeal.
     */
    function currentRuling(uint _disputeID) public view returns(uint ruling);
}

/** @title IArbitrable
 *  Arbitrable interface.
 *  When developing arbitrable contracts, we need to:
 *  -Define the action taken when a ruling is received by the contract. We should do so in executeRuling.
 *  -Allow dispute creation. For this a function must:
 *      -Call arbitrator.createDispute.value(_fee)(_choices,_extraData);
 *      -Create the event Dispute(_arbitrator,_disputeID,_rulingOptions);
 */
interface IArbitrable {
    /** @dev To be emmited when meta-evidence is submitted.
     *  @param _metaEvidenceID Unique identifier of meta-evidence.
     *  @param _evidence A link to the meta-evidence JSON.
     */
    event MetaEvidence(uint indexed _metaEvidenceID, string _evidence);

    /** @dev To be emmited when a dispute is created to link the correct meta-evidence to the disputeID
     *  @param _arbitrator The arbitrator of the contract.
     *  @param _disputeID ID of the dispute in the Arbitrator contract.
     *  @param _metaEvidenceID Unique identifier of meta-evidence.
     *  @param _evidenceGroupID Unique identifier of the evidence group that is linked to this dispute.
     */
    event Dispute(Arbitrator indexed _arbitrator, uint indexed _disputeID, uint _metaEvidenceID, uint _evidenceGroupID);

    /** @dev To be raised when evidence are submitted. Should point to the ressource (evidences are not to be stored on chain due to gas considerations).
     *  @param _arbitrator The arbitrator of the contract.
     *  @param _evidenceGroupID Unique identifier of the evidence group the evidence belongs to.
     *  @param _party The address of the party submiting the evidence. Note that 0x0 refers to evidence not submitted by any party.
     *  @param _evidence A URI to the evidence JSON file whose name should be its keccak256 hash followed by .json.
     */
    event Evidence(Arbitrator indexed _arbitrator, uint indexed _evidenceGroupID, address indexed _party, string _evidence);

    /** @dev To be raised when a ruling is given.
     *  @param _arbitrator The arbitrator giving the ruling.
     *  @param _disputeID ID of the dispute in the Arbitrator contract.
     *  @param _ruling The ruling which was given.
     */
    event Ruling(Arbitrator indexed _arbitrator, uint indexed _disputeID, uint _ruling);

    /** @dev Give a ruling for a dispute. Must be called by the arbitrator.
     *  The purpose of this function is to ensure that the address calling it has the right to rule on the contract.
     *  @param _disputeID ID of the dispute in the Arbitrator contract.
     *  @param _ruling Ruling given by the arbitrator. Note that 0 is reserved for "Not able/wanting to make a decision".
     */
    function rule(uint _disputeID, uint _ruling) public;
}

/** @title Arbitrable
 *  Arbitrable abstract contract.
 *  When developing arbitrable contracts, we need to:
 *  -Define the action taken when a ruling is received by the contract. We should do so in executeRuling.
 *  -Allow dispute creation. For this a function must:
 *      -Call arbitrator.createDispute.value(_fee)(_choices,_extraData);
 *      -Create the event Dispute(_arbitrator,_disputeID,_rulingOptions);
 */
contract Arbitrable is IArbitrable {
    Arbitrator public arbitrator;
    bytes public arbitratorExtraData; // Extra data to require particular dispute and appeal behaviour.

    modifier onlyArbitrator {require(msg.sender == address(arbitrator), "Can only be called by the arbitrator."); _;}

    /** @dev Constructor. Choose the arbitrator.
     *  @param _arbitrator The arbitrator of the contract.
     *  @param _arbitratorExtraData Extra data for the arbitrator.
     */
    constructor(Arbitrator _arbitrator, bytes _arbitratorExtraData) public {
        arbitrator = _arbitrator;
        arbitratorExtraData = _arbitratorExtraData;
    }

    /** @dev Give a ruling for a dispute. Must be called by the arbitrator.
     *  The purpose of this function is to ensure that the address calling it has the right to rule on the contract.
     *  @param _disputeID ID of the dispute in the Arbitrator contract.
     *  @param _ruling Ruling given by the arbitrator. Note that 0 is reserved for "Not able/wanting to make a decision".
     */
    function rule(uint _disputeID, uint _ruling) public onlyArbitrator {
        emit Ruling(Arbitrator(msg.sender),_disputeID,_ruling);

        executeRuling(_disputeID,_ruling);
    }


    /** @dev Execute a ruling of a dispute.
     *  @param _disputeID ID of the dispute in the Arbitrator contract.
     *  @param _ruling Ruling given by the arbitrator. Note that 0 is reserved for "Not able/wanting to make a decision".
     */
    function executeRuling(uint _disputeID, uint _ruling) internal;
}

/** @title KlerosGovernor
 *  Note that this contract trusts that the Arbitrator is honest and will not re-enter or modify its costs during a call.
 *  Also note that tx.origin should not matter in contracts called by the governor.
 */
contract KlerosGovernor is Arbitrable {
    using CappedMath for uint;

    /* *** Contract variables *** */
    enum Status { NoDispute, DisputeCreated, Resolved }

    struct Session {
        Round[] rounds; // Tracks each appeal round of the dispute in the session in the form rounds[appeal].
        uint ruling; // The ruling that was given in this session, if any.
        uint disputeID; // ID given to the dispute of the session, if any.
        uint[] submittedLists; // Tracks all lists that were submitted in a session in the form submittedLists[submissionID].
        uint sumDeposit; // Sum of all submission deposits in a session (minus arbitration fees). This is used to calculate the reward.
        Status status; // Status of a session.
        mapping(bytes32 => bool) alreadySubmitted; // Indicates whether or not the transaction list was already submitted in order to catch duplicates in the form alreadySubmitted[listHash].
        uint durationOffset; // Time in seconds that prolongs the submission period after the first submission, to give other submitters time to react.
    }

    struct Transaction {
        address target; // The address to call.
        uint value; // Value paid by governor contract that will be used as msg.value in the execution.
        bytes data; // Calldata of the transaction.
        bool executed; // Whether the transaction was already executed or not.
    }

    struct Submission {
        address submitter; // The one who submits the list.
        uint deposit; // Value of the deposit paid upon submission of the list.
        Transaction[] txs; // Transactions stored in the list in the form txs[_transactionIndex].
        bytes32 listHash; // A hash chain of all transactions stored in the list. This is used as a unique identifier within a session.
        uint submissionTime; // The time when the list was submitted.
        bool approved; // Whether the list was approved for execution or not.
        uint approvalTime; // The time when the list was approved.
    }

    struct Round {
        mapping (uint => uint) paidFees; // Tracks the fees paid by each side in this round in the form paidFees[submissionID].
        mapping (uint => bool) hasPaid; // True when the side has fully paid its fees, false otherwise in the form hasPaid[submissionID].
        uint feeRewards; // Sum of reimbursable fees and stake rewards available to the parties that made contributions to the side that ultimately wins a dispute.
        mapping(address => mapping (uint => uint)) contributions; // Maps contributors to their contributions for each side in the form contributions[address][submissionID].
        uint successfullyPaid; // Sum of all successfully paid fees paid by all sides.
    }

    uint constant NO_SHADOW_WINNER = uint(-1); // The value that indicates that no one has successfully paid appeal fees in a current round. It's the largest integer and not 0, because 0 can be a valid submission index.

    address public deployer; // The address of the deployer of the contract.

    uint public reservedETH; // Sum of contract's submission deposits and appeal fees. These funds are not to be used in the execution of transactions.

    uint public submissionBaseDeposit; // The base deposit in wei that needs to be paid in order to submit the list.
    uint public submissionTimeout; // Time in seconds allowed for submitting the lists. Once it's passed the contract enters the approval period.
    uint public executionTimeout; // Time in seconds allowed for the execution of approved lists.
    uint public withdrawTimeout; // Time in seconds allowed to withdraw a submitted list.
    uint public sharedMultiplier; // Multiplier for calculating the appeal fee that must be paid by each side in the case where there is no winner/loser (e.g. when the arbitrator ruled "refuse to arbitrate").
    uint public winnerMultiplier; // Multiplier for calculating the appeal fee of the party that won the previous round.
    uint public loserMultiplier; // Multiplier for calculating the appeal fee of the party that lost the previous round.
    uint public constant MULTIPLIER_DIVISOR = 10000; // Divisor parameter for multipliers.

    uint public lastApprovalTime; // The time of the last approval of a transaction list.
    uint public shadowWinner; // Submission index of the first list that paid appeal fees. If it stays the only list that paid appeal fees, it will win regardless of the final ruling.
    uint public metaEvidenceUpdates; // The number of times the meta evidence has been updated. Used to track the latest meta evidence ID.

    Submission[] public submissions; // Stores all created transaction lists. submissions[_listID].
    Session[] public sessions; // Stores all submitting sessions. sessions[_session].

    /* *** Modifiers *** */
    modifier duringSubmissionPeriod() {
        uint offset = sessions[sessions.length - 1].durationOffset;
        require(now - lastApprovalTime <= submissionTimeout.addCap(offset), "Submission time has ended.");
        _;
    }
    modifier duringApprovalPeriod() {
        uint offset = sessions[sessions.length - 1].durationOffset;
        require(now - lastApprovalTime > submissionTimeout.addCap(offset), "Approval time has not started yet.");
        _;
    }
    modifier onlyByGovernor() {require(address(this) == msg.sender, "Only the governor can execute this."); _;}

    /* *** Events *** */
    /** @dev Emitted when a new list is submitted.
     *  @param _listID The index of the transaction list in the array of lists.
     *  @param _submitter The address that submitted the list.
     *  @param _session The number of the current session.
     *  @param _description The string in CSV format that contains labels of list's transactions.
     *  Note that the submitter may give bad descriptions of correct actions, but this is to be seen as UI enhancement, not a critical feature and that would play against him in case of dispute.
     */
    event ListSubmitted(uint indexed _listID, address indexed _submitter, uint indexed _session, string _description);

    /** @dev Constructor.
     *  @param _arbitrator The arbitrator of the contract. It must support appealPeriod.
     *  @param _extraData Extra data for the arbitrator.
     *  @param _submissionBaseDeposit The base deposit required for submission.
     *  @param _submissionTimeout Time in seconds allocated for submitting transaction list.
     *  @param _executionTimeout Time in seconds after approval that allows to execute transactions of the approved list.
     *  @param _withdrawTimeout Time in seconds after submission that allows to withdraw submitted list.
     *  @param _sharedMultiplier Multiplier of the appeal cost that submitters has to pay for a round when there is no winner/loser in the previous round (e.g. when it's the very first round). In basis points.
     *  @param _winnerMultiplier Multiplier of the appeal cost that the winner has to pay for a round. In basis points.
     *  @param _loserMultiplier Multiplier of the appeal cost that the loser has to pay for a round. In basis points.
     */
    constructor (
        Arbitrator _arbitrator,
        bytes _extraData,
        uint _submissionBaseDeposit,
        uint _submissionTimeout,
        uint _executionTimeout,
        uint _withdrawTimeout,
        uint _sharedMultiplier,
        uint _winnerMultiplier,
        uint _loserMultiplier
    ) public Arbitrable(_arbitrator, _extraData) {
        lastApprovalTime = now;
        submissionBaseDeposit = _submissionBaseDeposit;
        submissionTimeout = _submissionTimeout;
        executionTimeout = _executionTimeout;
        withdrawTimeout = _withdrawTimeout;
        sharedMultiplier = _sharedMultiplier;
        winnerMultiplier = _winnerMultiplier;
        loserMultiplier = _loserMultiplier;
        shadowWinner = NO_SHADOW_WINNER;
        sessions.length++;
        deployer = msg.sender;
    }

    /** @dev Sets the meta evidence. Can only be called once.
     *  Convenience function that removes the need to precompute the deployed contract address for the metaevidence data.
     *  @param _metaEvidence The URI of the meta evidence file.
     */
    function setMetaEvidence(string _metaEvidence) external {
        require(msg.sender == deployer, "Can only be called once by the deployer of the contract.");
        deployer = address(0);
        emit MetaEvidence(metaEvidenceUpdates, _metaEvidence);
    }

    /** @dev Changes the value of the base deposit required for submitting a list.
     *  @param _submissionBaseDeposit The new value of the base deposit, in wei.
     */
    function changeSubmissionDeposit(uint _submissionBaseDeposit) public onlyByGovernor {
        submissionBaseDeposit = _submissionBaseDeposit;
    }

    /** @dev Changes the time allocated for submission.
     *  @param _submissionTimeout The new duration of the submission period, in seconds.
     */
    function changeSubmissionTimeout(uint _submissionTimeout) public onlyByGovernor duringSubmissionPeriod {
        submissionTimeout = _submissionTimeout;
    }

    /** @dev Changes the time allocated for list's execution.
     *  @param _executionTimeout The new duration of the execution timeout, in seconds.
     */
    function changeExecutionTimeout(uint _executionTimeout) public onlyByGovernor {
        executionTimeout = _executionTimeout;
    }

    /** @dev Changes list withdrawal timeout. Note that withdrawals are only possible in the first half of the submission period.
     *  @param _withdrawTimeout The new duration of withdraw period, in seconds.
     */
    function changeWithdrawTimeout(uint _withdrawTimeout) public onlyByGovernor {
        withdrawTimeout = _withdrawTimeout;
    }

    /** @dev Changes the proportion of appeal fees that must be added to appeal cost when there is no winner or loser.
     *  @param _sharedMultiplier The new shared multiplier value in basis points.
     */
    function changeSharedMultiplier(uint _sharedMultiplier) public onlyByGovernor {
        sharedMultiplier = _sharedMultiplier;
    }

    /** @dev Changes the proportion of appeal fees that must be added to appeal cost for the winning party.
     *  @param _winnerMultiplier The new winner multiplier value in basis points.
     */
    function changeWinnerMultiplier(uint _winnerMultiplier) public onlyByGovernor {
        winnerMultiplier = _winnerMultiplier;
    }

    /** @dev Changes the proportion of appeal fees that must be added to appeal cost for the losing party.
     *  @param _loserMultiplier The new loser multiplier value in basis points.
     */
    function changeLoserMultiplier(uint _loserMultiplier) public onlyByGovernor {
        loserMultiplier = _loserMultiplier;
    }

    /** @dev Changes the arbitrator of the contract.
     *  @param _arbitrator The new trusted arbitrator.
     *  @param _arbitratorExtraData The extra data used by the new arbitrator.
     */
    function changeArbitrator(Arbitrator _arbitrator, bytes _arbitratorExtraData) public onlyByGovernor duringSubmissionPeriod {
        arbitrator = _arbitrator;
        arbitratorExtraData = _arbitratorExtraData;
    }

    /** @dev Update the meta evidence used for disputes.
     *  @param _metaEvidence URI to the new meta evidence file.
     */
    function changeMetaEvidence(string _metaEvidence) public onlyByGovernor {
        require(deployer == address(0), "Metaevidence was not set.");
        metaEvidenceUpdates++;
        emit MetaEvidence(metaEvidenceUpdates, _metaEvidence);
    }

    /** @dev Creates transaction list based on input parameters and submits it for potential approval and execution.
     *  Transactions must be ordered by their hash.
     *  @param _target List of addresses to call.
     *  @param _value List of values required for respective addresses.
     *  @param _data Concatenated calldata of all transactions of this list.
     *  @param _dataSize List of lengths in bytes required to split calldata for its respective targets.
     *  @param _description String in CSV format that describes list's transactions.
     */
    function submitList (address[] _target, uint[] _value, bytes _data, uint[] _dataSize, string _description) public payable duringSubmissionPeriod {
        require(_target.length == _value.length, "Incorrect input. Target and value arrays must be of the same length.");
        require(_target.length == _dataSize.length, "Incorrect input. Target and datasize arrays must be of the same length.");
        Session storage session = sessions[sessions.length - 1];
        Submission storage submission = submissions[submissions.length++];
        submission.submitter = msg.sender;
        // Do the assignment first to avoid creating a new variable and bypass a 'stack too deep' error.
        submission.deposit = submissionBaseDeposit + arbitrator.arbitrationCost(arbitratorExtraData);
        require(msg.value >= submission.deposit, "Submission deposit must be paid in full.");
        // Using an array to get around the stack limit.
        // 0 - List hash.
        // 1 - Previous transaction hash.
        // 2 - Current transaction hash.
        bytes32[3] memory hashes;
        uint readingPosition;
        for (uint i = 0; i < _target.length; i++) {
            bytes memory readData = new bytes(_dataSize[i]);
            Transaction storage transaction = submission.txs[submission.txs.length++];
            transaction.target = _target[i];
            transaction.value = _value[i];
            for (uint j = 0; j < _dataSize[i]; j++) {
                readData[j] = _data[readingPosition + j];
            }
            transaction.data = readData;
            readingPosition += _dataSize[i];
            hashes[2] = keccak256(abi.encodePacked(transaction.target, transaction.value, transaction.data));
            require(uint(hashes[2]) >= uint(hashes[1]), "The transactions are in incorrect order.");
            hashes[0] = keccak256(abi.encodePacked(hashes[2], hashes[0]));
            hashes[1] = hashes[2];
        }
        require(!session.alreadySubmitted[hashes[0]], "The same list was already submitted earlier.");
        session.alreadySubmitted[hashes[0]] = true;
        submission.listHash = hashes[0];
        submission.submissionTime = now;
        session.sumDeposit += submission.deposit;
        session.submittedLists.push(submissions.length - 1);
        if (session.submittedLists.length == 1)
            session.durationOffset = now.subCap(lastApprovalTime);

        emit ListSubmitted(submissions.length - 1, msg.sender, sessions.length - 1, _description);

        uint remainder = msg.value - submission.deposit;
        if (remainder > 0)
            msg.sender.send(remainder);

        reservedETH += submission.deposit;
    }

    /** @dev Withdraws submitted transaction list. Reimburses submission deposit.
     *  Withdrawal is only possible during the first half of the submission period and during withdrawTimeout seconds after the submission is made.
     *  @param _submissionID Submission's index in the array of submitted lists of the current sesssion.
     *  @param _listHash Hash of a withdrawing list.
     */
    function withdrawTransactionList(uint _submissionID, bytes32 _listHash) public {
        Session storage session = sessions[sessions.length - 1];
        Submission storage submission = submissions[session.submittedLists[_submissionID]];
        require(now - lastApprovalTime <= submissionTimeout / 2, "Lists can be withdrawn only in the first half of the period.");
        // This require statement is an extra check to prevent _submissionID linking to the wrong list because of index swap during withdrawal.
        require(submission.listHash == _listHash, "Provided hash doesn't correspond with submission ID.");
        require(submission.submitter == msg.sender, "Can't withdraw the list created by someone else.");
        require(now - submission.submissionTime <= withdrawTimeout, "Withdrawing time has passed.");
        session.submittedLists[_submissionID] = session.submittedLists[session.submittedLists.length - 1];
        session.alreadySubmitted[_listHash] = false;
        session.submittedLists.length--;
        session.sumDeposit = session.sumDeposit.subCap(submission.deposit);
        msg.sender.transfer(submission.deposit);

        reservedETH = reservedETH.subCap(submission.deposit);
    }

    /** @dev Approves a transaction list or creates a dispute if more than one list was submitted. TRUSTED.
     *  If nothing was submitted changes session.
     */
    function executeSubmissions() public duringApprovalPeriod {
        Session storage session = sessions[sessions.length - 1];
        require(session.status == Status.NoDispute, "Can't approve transaction list while dispute is active.");
        if (session.submittedLists.length == 0) {
            lastApprovalTime = now;
            session.status = Status.Resolved;
            sessions.length++;
        } else if (session.submittedLists.length == 1) {
            Submission storage submission = submissions[session.submittedLists[0]];
            submission.approved = true;
            submission.approvalTime = now;
            uint sumDeposit = session.sumDeposit;
            session.sumDeposit = 0;
            submission.submitter.send(sumDeposit);
            lastApprovalTime = now;
            session.status = Status.Resolved;
            sessions.length++;

            reservedETH = reservedETH.subCap(sumDeposit);
        } else {
            session.status = Status.DisputeCreated;
            uint arbitrationCost = arbitrator.arbitrationCost(arbitratorExtraData);
            session.disputeID = arbitrator.createDispute.value(arbitrationCost)(session.submittedLists.length, arbitratorExtraData);
            session.rounds.length++;
            session.sumDeposit = session.sumDeposit.subCap(arbitrationCost);

            reservedETH = reservedETH.subCap(arbitrationCost);
            emit Dispute(arbitrator, session.disputeID, metaEvidenceUpdates, sessions.length - 1);
        }
    }

    /** @dev Takes up to the total amount required to fund a side of an appeal. Reimburses the rest. Creates an appeal if at least two lists are funded. TRUSTED.
     *  @param _submissionID Submission's index in the array of submitted lists of the current sesssion. Note that submissionID can be swapped with an ID of a withdrawn list in submission period.
     */
    function fundAppeal(uint _submissionID) public payable {
        Session storage session = sessions[sessions.length - 1];
        require(_submissionID <= session.submittedLists.length - 1, "SubmissionID is out of bounds.");
        require(session.status == Status.DisputeCreated, "No dispute to appeal.");
        require(arbitrator.disputeStatus(session.disputeID) == Arbitrator.DisputeStatus.Appealable, "Dispute is not appealable.");
        (uint appealPeriodStart, uint appealPeriodEnd) = arbitrator.appealPeriod(session.disputeID);
        require(
            now >= appealPeriodStart && now < appealPeriodEnd,
            "Appeal fees must be paid within the appeal period."
        );

        uint winner = arbitrator.currentRuling(session.disputeID);
        uint multiplier;
        // Unlike in submittedLists, in arbitrator "0" is reserved for "refuse to arbitrate" option. So we need to add 1 to map submission IDs with choices correctly.
        if (winner == _submissionID + 1) {
            multiplier = winnerMultiplier;
        } else if (winner == 0) {
            multiplier = sharedMultiplier;
        } else {
            require(now - appealPeriodStart < (appealPeriodEnd - appealPeriodStart)/2, "The loser must pay during the first half of the appeal period.");
            multiplier = loserMultiplier;
        }

        Round storage round = session.rounds[session.rounds.length - 1];
        require(!round.hasPaid[_submissionID], "Appeal fee has already been paid.");
        uint appealCost = arbitrator.appealCost(session.disputeID, arbitratorExtraData);
        uint totalCost = appealCost.addCap((appealCost.mulCap(multiplier)) / MULTIPLIER_DIVISOR);

        // Take up to the amount necessary to fund the current round at the current costs.
        uint contribution; // Amount contributed.
        uint remainingETH; // Remaining ETH to send back.
        (contribution, remainingETH) = calculateContribution(msg.value, totalCost.subCap(round.paidFees[_submissionID]));
        round.contributions[msg.sender][_submissionID] += contribution;
        round.paidFees[_submissionID] += contribution;
        // Add contribution to reward when the fee funding is successful, otherwise it can be withdrawn later.
        if (round.paidFees[_submissionID] >= totalCost) {
            round.hasPaid[_submissionID] = true;
            if (shadowWinner == NO_SHADOW_WINNER)
                shadowWinner = _submissionID;

            round.feeRewards += round.paidFees[_submissionID];
            round.successfullyPaid += round.paidFees[_submissionID];
        }

        // Reimburse leftover ETH.
        msg.sender.send(remainingETH);
        reservedETH += contribution;

        if (shadowWinner != NO_SHADOW_WINNER && shadowWinner != _submissionID && round.hasPaid[_submissionID]) {
            // Two sides are fully funded.
            shadowWinner = NO_SHADOW_WINNER;
            arbitrator.appeal.value(appealCost)(session.disputeID, arbitratorExtraData);
            session.rounds.length++;
            round.feeRewards = round.feeRewards.subCap(appealCost);
            reservedETH = reservedETH.subCap(appealCost);
        }
    }

    /** @dev Returns the contribution value and remainder from available ETH and required amount.
     *  @param _available The amount of ETH available for the contribution.
     *  @param _requiredAmount The amount of ETH required for the contribution.
     *  @return taken The amount of ETH taken.
     *  @return remainder The amount of ETH left from the contribution.
     */
    function calculateContribution(uint _available, uint _requiredAmount)
        internal
        pure
        returns(uint taken, uint remainder)
    {
        if (_requiredAmount > _available)
            taken = _available;
        else {
            taken = _requiredAmount;
            remainder = _available - _requiredAmount;
        }
    }

    /** @dev Sends the fee stake rewards and reimbursements proportional to the contributions made to the winner of a dispute. Reimburses contributions if there is no winner.
     *  @param _beneficiary The address that made contributions to a request.
     *  @param _session The session from which to withdraw.
     *  @param _round The round from which to withdraw.
     *  @param _submissionID Submission's index in the array of submitted lists of the session which the beneficiary contributed to.
     */
    function withdrawFeesAndRewards(address _beneficiary, uint _session, uint _round, uint _submissionID) public {
        Session storage session = sessions[_session];
        Round storage round = session.rounds[_round];
        require(session.status == Status.Resolved, "Session has an ongoing dispute.");
        uint reward;
        // Allow to reimburse if funding of the round was unsuccessful.
        if (!round.hasPaid[_submissionID]) {
            reward = round.contributions[_beneficiary][_submissionID];
        } else if (session.ruling == 0 || !round.hasPaid[session.ruling - 1]) {
            // Reimburse unspent fees proportionally if there is no winner and loser. Also applies to the situation where the ultimate winner didn't pay appeal fees fully.
            reward = round.successfullyPaid > 0
                ? (round.contributions[_beneficiary][_submissionID] * round.feeRewards) / round.successfullyPaid
                : 0;
        } else if (session.ruling - 1 == _submissionID) {
            // Reward the winner. Subtract 1 from ruling to sync submissionID with arbitrator's choice.
            reward = round.paidFees[_submissionID] > 0
                ? (round.contributions[_beneficiary][_submissionID] * round.feeRewards) / round.paidFees[_submissionID]
                : 0;
        }
        round.contributions[_beneficiary][_submissionID] = 0;

        _beneficiary.send(reward); // It is the user responsibility to accept ETH.
        reservedETH = reservedETH.subCap(reward);
    }

    /** @dev Gives a ruling for a dispute. Must be called by the arbitrator.
     *  The purpose of this function is to ensure that the address calling it has the right to rule on the contract.
     *  @param _disputeID ID of the dispute in the Arbitrator contract.
     *  @param _ruling Ruling given by the arbitrator. Note that 0 is reserved for "Refuse to arbitrate".
     */
    function rule(uint _disputeID, uint _ruling) public {
        Session storage session = sessions[sessions.length - 1];
        require(msg.sender == address(arbitrator), "Must be called by the arbitrator.");
        require(session.status == Status.DisputeCreated, "The dispute has already been resolved.");
        require(_ruling <= session.submittedLists.length, "Ruling is out of bounds.");

        if (shadowWinner != NO_SHADOW_WINNER) {
            emit Ruling(Arbitrator(msg.sender), _disputeID, shadowWinner + 1);
            executeRuling(_disputeID, shadowWinner + 1);
        } else {
            emit Ruling(Arbitrator(msg.sender), _disputeID, _ruling);
            executeRuling(_disputeID, _ruling);
        }
    }

    /** @dev Executes a ruling of a dispute.
     *  @param _disputeID ID of the dispute in the Arbitrator contract.
     *  @param _ruling Ruling given by the arbitrator. Note that 0 is reserved for "Refuse to arbitrate".
     *  If the final ruling is "0" nothing is approved and deposits will stay locked in the contract.
     */
    function executeRuling(uint _disputeID, uint _ruling) internal {
        Session storage session = sessions[sessions.length - 1];
        if (_ruling != 0) {
            Submission storage submission = submissions[session.submittedLists[_ruling - 1]];
            submission.approved = true;
            submission.approvalTime = now;
            submission.submitter.send(session.sumDeposit);
        }
        // If the ruling is "0" the reserved funds of this session become expendable.
        reservedETH = reservedETH.subCap(session.sumDeposit);

        session.sumDeposit = 0;
        shadowWinner = NO_SHADOW_WINNER;
        lastApprovalTime = now;
        session.status = Status.Resolved;
        session.ruling = _ruling;
        sessions.length++;
    }

    /** @dev Executes selected transactions of the list. UNTRUSTED.
     *  @param _listID The index of the transaction list in the array of lists.
     *  @param _cursor Index of the transaction from which to start executing.
     *  @param _count Number of transactions to execute. Executes until the end if set to "0" or number higher than number of transactions in the list.
     */
    function executeTransactionList(uint _listID, uint _cursor, uint _count) public {
        Submission storage submission = submissions[_listID];
        require(submission.approved, "Can't execute list that wasn't approved.");
        require(now - submission.approvalTime <= executionTimeout, "Time to execute the transaction list has passed.");
        for (uint i = _cursor; i < submission.txs.length && (_count == 0 || i < _cursor + _count); i++) {
            Transaction storage transaction = submission.txs[i];
            uint expendableFunds = getExpendableFunds();
            if (!transaction.executed && transaction.value <= expendableFunds) {
                bool callResult = transaction.target.call.value(transaction.value)(transaction.data); // solium-disable-line security/no-call-value
                // An extra check to prevent re-entrancy through target call.
                if (callResult == true) {
                    require(!transaction.executed, "This transaction has already been executed.");
                    transaction.executed = true;
                }
            }
        }
    }

    /** @dev Fallback function to receive funds for the execution of transactions.
     */
    function () public payable {}

    /** @dev Gets the sum of contract funds that are used for the execution of transactions.
     *  @return Contract balance without reserved ETH.
     */
    function getExpendableFunds() public view returns (uint) {
        return address(this).balance.subCap(reservedETH);
    }

    /** @dev Gets the info of the specified transaction in the specified list.
     *  @param _listID The index of the transaction list in the array of lists.
     *  @param _transactionIndex The index of the transaction.
     *  @return The transaction info.
     */
    function getTransactionInfo(uint _listID, uint _transactionIndex)
        public
        view
        returns (
            address target,
            uint value,
            bytes data,
            bool executed
        )
    {
        Submission storage submission = submissions[_listID];
        Transaction storage transaction = submission.txs[_transactionIndex];
        return (
            transaction.target,
            transaction.value,
            transaction.data,
            transaction.executed
        );
    }

    /** @dev Gets the contributions made by a party for a given round of a session.
     *  Note that this function is O(n), where n is the number of submissions in the session. This could exceed the gas limit, therefore this function should only be used for interface display and not by other contracts.
     *  @param _session The ID of the session.
     *  @param _round The position of the round.
     *  @param _contributor The address of the contributor.
     *  @return The contributions.
     */
    function getContributions(
        uint _session,
        uint _round,
        address _contributor
    ) public view returns(uint[] contributions) {
        Session storage session = sessions[_session];
        Round storage round = session.rounds[_round];

        contributions = new uint[](session.submittedLists.length);
        for (uint i = 0; i < contributions.length; i++) {
            contributions[i] = round.contributions[_contributor][i];
        }
    }

    /** @dev Gets the information on a round of a session.
     *  Note that this function is O(n), where n is the number of submissions in the session. This could exceed the gas limit, therefore this function should only be used for interface display and not by other contracts.
     *  @param _session The ID of the session.
     *  @param _round The round to be queried.
     *  @return The round information.
     */
    function getRoundInfo(uint _session, uint _round)
        public
        view
        returns (
            uint[] paidFees,
            bool[] hasPaid,
            uint feeRewards,
            uint successfullyPaid
        )
    {
        Session storage session = sessions[_session];
        Round storage round = session.rounds[_round];
        paidFees = new uint[](session.submittedLists.length);
        hasPaid = new bool[](session.submittedLists.length);

        for (uint i = 0; i < session.submittedLists.length; i++) {
            paidFees[i] = round.paidFees[i];
            hasPaid[i] = round.hasPaid[i];
        }

        feeRewards = round.feeRewards;
        successfullyPaid = round.successfullyPaid;
    }

    /** @dev Gets the array of submitted lists in the session.
     *  Note that this function is O(n), where n is the number of submissions in the session. This could exceed the gas limit, therefore this function should only be used for interface display and not by other contracts.
     *  @param _session The ID of the session.
     *  @return submittedLists Indexes of lists that were submitted during the session.
     */
    function getSubmittedLists(uint _session) public view returns (uint[] submittedLists) {
        Session storage session = sessions[_session];
        submittedLists = session.submittedLists;
    }

    /** @dev Gets the number of transactions in the list.
     *  @param _listID The index of the transaction list in the array of lists.
     *  @return txCount The number of transactions in the list.
     */
    function getNumberOfTransactions(uint _listID) public view returns (uint txCount) {
        Submission storage submission = submissions[_listID];
        return submission.txs.length;
    }

    /** @dev Gets the number of lists created in contract's lifetime.
     *  @return The number of created lists.
     */
    function getNumberOfCreatedLists() public view returns (uint) {
        return submissions.length;
    }

    /** @dev Gets the number of the ongoing session.
     *  @return The number of the ongoing session.
     */
    function getCurrentSessionNumber() public view returns (uint) {
        return sessions.length - 1;
    }

    /** @dev Gets the number rounds in ongoing session.
     *  @return The number of rounds in session.
     */
    function getSessionRoundsNumber(uint _session) public view returns (uint) {
        Session storage session = sessions[_session];
        return session.rounds.length;
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_metaEvidence","type":"string"}],"name":"setMetaEvidence","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_loserMultiplier","type":"uint256"}],"name":"changeLoserMultiplier","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"arbitratorExtraData","outputs":[{"name":"","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_session","type":"uint256"}],"name":"getSubmittedLists","outputs":[{"name":"submittedLists","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"executionTimeout","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_withdrawTimeout","type":"uint256"}],"name":"changeWithdrawTimeout","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_submissionBaseDeposit","type":"uint256"}],"name":"changeSubmissionDeposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_disputeID","type":"uint256"},{"name":"_ruling","type":"uint256"}],"name":"rule","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_winnerMultiplier","type":"uint256"}],"name":"changeWinnerMultiplier","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address[]"},{"name":"_value","type":"uint256[]"},{"name":"_data","type":"bytes"},{"name":"_dataSize","type":"uint256[]"},{"name":"_description","type":"string"}],"name":"submitList","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"},{"name":"_session","type":"uint256"},{"name":"_round","type":"uint256"},{"name":"_submissionID","type":"uint256"}],"name":"withdrawFeesAndRewards","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_session","type":"uint256"},{"name":"_round","type":"uint256"},{"name":"_contributor","type":"address"}],"name":"getContributions","outputs":[{"name":"contributions","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentSessionNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"arbitrator","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"metaEvidenceUpdates","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_listID","type":"uint256"},{"name":"_cursor","type":"uint256"},{"name":"_count","type":"uint256"}],"name":"executeTransactionList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"reservedETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"sessions","outputs":[{"name":"ruling","type":"uint256"},{"name":"disputeID","type":"uint256"},{"name":"sumDeposit","type":"uint256"},{"name":"status","type":"uint8"},{"name":"durationOffset","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"shadowWinner","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_session","type":"uint256"},{"name":"_round","type":"uint256"}],"name":"getRoundInfo","outputs":[{"name":"paidFees","type":"uint256[]"},{"name":"hasPaid","type":"bool[]"},{"name":"feeRewards","type":"uint256"},{"name":"successfullyPaid","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_metaEvidence","type":"string"}],"name":"changeMetaEvidence","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"executeSubmissions","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_submissionTimeout","type":"uint256"}],"name":"changeSubmissionTimeout","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_sharedMultiplier","type":"uint256"}],"name":"changeSharedMultiplier","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"loserMultiplier","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"winnerMultiplier","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"withdrawTimeout","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_listID","type":"uint256"},{"name":"_transactionIndex","type":"uint256"}],"name":"getTransactionInfo","outputs":[{"name":"target","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"},{"name":"executed","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_submissionID","type":"uint256"}],"name":"fundAppeal","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"submissions","outputs":[{"name":"submitter","type":"address"},{"name":"deposit","type":"uint256"},{"name":"listHash","type":"bytes32"},{"name":"submissionTime","type":"uint256"},{"name":"approved","type":"bool"},{"name":"approvalTime","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getExpendableFunds","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_submissionID","type":"uint256"},{"name":"_listHash","type":"bytes32"}],"name":"withdrawTransactionList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getNumberOfCreatedLists","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_arbitrator","type":"address"},{"name":"_arbitratorExtraData","type":"bytes"}],"name":"changeArbitrator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"submissionBaseDeposit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"submissionTimeout","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_executionTimeout","type":"uint256"}],"name":"changeExecutionTimeout","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sharedMultiplier","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"deployer","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MULTIPLIER_DIVISOR","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_listID","type":"uint256"}],"name":"getNumberOfTransactions","outputs":[{"name":"txCount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastApprovalTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_session","type":"uint256"}],"name":"getSessionRoundsNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_arbitrator","type":"address"},{"name":"_extraData","type":"bytes"},{"name":"_submissionBaseDeposit","type":"uint256"},{"name":"_submissionTimeout","type":"uint256"},{"name":"_executionTimeout","type":"uint256"},{"name":"_withdrawTimeout","type":"uint256"},{"name":"_sharedMultiplier","type":"uint256"},{"name":"_winnerMultiplier","type":"uint256"},{"name":"_loserMultiplier","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_listID","type":"uint256"},{"indexed":true,"name":"_submitter","type":"address"},{"indexed":true,"name":"_session","type":"uint256"},{"indexed":false,"name":"_description","type":"string"}],"name":"ListSubmitted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_metaEvidenceID","type":"uint256"},{"indexed":false,"name":"_evidence","type":"string"}],"name":"MetaEvidence","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_arbitrator","type":"address"},{"indexed":true,"name":"_disputeID","type":"uint256"},{"indexed":false,"name":"_metaEvidenceID","type":"uint256"},{"indexed":false,"name":"_evidenceGroupID","type":"uint256"}],"name":"Dispute","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_arbitrator","type":"address"},{"indexed":true,"name":"_evidenceGroupID","type":"uint256"},{"indexed":true,"name":"_party","type":"address"},{"indexed":false,"name":"_evidence","type":"string"}],"name":"Evidence","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_arbitrator","type":"address"},{"indexed":true,"name":"_disputeID","type":"uint256"},{"indexed":false,"name":"_ruling","type":"uint256"}],"name":"Ruling","type":"event"}]

60806040523480156200001157600080fd5b5060405162004249380380620042498339810160409081528151602080840151928401516060850151608086015160a087015160c088015160e08901516101008a015160008054600160a060020a031916600160a060020a038b1617905598909901805197999098959794969395929491939092918a918a916200009c916001919084019062000103565b505042600b5550600487905560058690556006859055600784905560088390556009829055600a819055600019600c55600f805490620000e0906001830162000188565b505060028054600160a060020a0319163317905550620002ad9650505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200014657805160ff191683800117855562000176565b8280016001018555821562000176579182015b828111156200017657825182559160200191906001019062000159565b5062000184929150620001bc565b5090565b815481835581811115620001b757600802816008028360005260206000209182019101620001b79190620001dc565b505050565b620001d991905b80821115620001845760008155600101620001c3565b90565b620001d991905b8082111562000184576000620001fa828262000240565b600182016000905560028201600090556003820160006200021c919062000266565b5060006004820181905560058201805460ff191690556007820155600801620001e3565b508054600082556005029060005260206000209081019062000263919062000286565b50565b5080546000825590600052602060002090810190620002639190620001bc565b620001d991905b80821115620001845760006002820181905560048201556005016200028d565b613f8c80620002bd6000396000f30060806040526004361061020e5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166302c891c5811461021057806305528715146102305780630c7ac7b61461024857806321cea538146102d257806322b52d661461033a578063246c76df1461036157806324baacc714610379578063311a6c5614610391578063325df188146103ac57806346047838146103c457806356858619146104fa57806368c76ffd146105245780636c0b7e711461054b5780636cc6cde1146105605780636cdc090f146105915780636cf39c2b146105a657806377b9fda8146105c457806383c4b7a3146105d957806384e3a311146106315780638a9bb02a1461064657806390765279146107085780639244c70414610761578063953d6651146107765780639543c9fd1461078e578063965394ab146107a65780639b3ac998146107bb5780639c15d1a2146107d0578063a3c595c9146107e5578063a446ff57146108a3578063ad73349e146108ae578063b512570014610905578063b6cd08c61461091a578063b6dc775414610935578063ba7079ca1461094a578063bb0b86ff146109b1578063c4bd8519146109c6578063cc2bcdb4146109db578063ce1d8ab2146109f3578063d5f3948814610a08578063d661dd3114610a1d578063dc17bbdb14610a32578063f730c07f14610a4a578063f8d18b0414610a5f575b005b34801561021c57600080fd5b5061020e6004803560248101910135610a77565b34801561023c57600080fd5b5061020e600435610b72565b34801561025457600080fd5b5061025d610bcb565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029757818101518382015260200161027f565b50505050905090810190601f1680156102c45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102de57600080fd5b506102ea600435610c58565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561032657818101518382015260200161030e565b505050509050019250505060405180910390f35b34801561034657600080fd5b5061034f610cd6565b60408051918252519081900360200190f35b34801561036d57600080fd5b5061020e600435610cdc565b34801561038557600080fd5b5061020e600435610d35565b34801561039d57600080fd5b5061020e600435602435610d8e565b3480156103b857600080fd5b5061020e600435610fcd565b6040805160206004803580820135838102808601850190965280855261020e95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a99890198929750908201955093508392508501908490808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750506040805187358901803560208181028481018201909552818452989b9a99890198929750908201955093508392508501908490808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506110269650505050505050565b34801561050657600080fd5b5061020e600160a060020a0360043516602435604435606435611a5b565b34801561053057600080fd5b506102ea600435602435600160a060020a0360443516611ca5565b34801561055757600080fd5b5061034f611d7e565b34801561056c57600080fd5b50610575611d89565b60408051600160a060020a039092168252519081900360200190f35b34801561059d57600080fd5b5061034f611d98565b3480156105b257600080fd5b5061020e600435602435604435611d9e565b3480156105d057600080fd5b5061034f612099565b3480156105e557600080fd5b506105f160043561209f565b6040518086815260200185815260200184815260200183600281111561061357fe5b60ff1681526020018281526020019550505050505060405180910390f35b34801561063d57600080fd5b5061034f6120e7565b34801561065257600080fd5b506106616004356024356120ed565b604051808060200180602001858152602001848152602001838103835287818151815260200191508051906020019060200280838360005b838110156106b1578181015183820152602001610699565b50505050905001838103825286818151815260200191508051906020019060200280838360005b838110156106f05781810151838201526020016106d8565b50505050905001965050505050505060405180910390f35b34801561071457600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261020e94369492936024939284019190819084018382808284375094975061222d9650505050505050565b34801561076d57600080fd5b5061020e612388565b34801561078257600080fd5b5061020e6004356128dc565b34801561079a57600080fd5b5061020e6004356129d0565b3480156107b257600080fd5b5061034f612a29565b3480156107c757600080fd5b5061034f612a2f565b3480156107dc57600080fd5b5061034f612a35565b3480156107f157600080fd5b50610800600435602435612a3b565b6040518085600160a060020a0316600160a060020a031681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b8381101561086557818101518382015260200161084d565b50505050905090810190601f1680156108925780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b61020e600435612b4f565b3480156108ba57600080fd5b506108c6600435613481565b60408051600160a060020a03909716875260208701959095528585019390935260608501919091521515608084015260a0830152519081900360c00190f35b34801561091157600080fd5b5061034f6134d5565b34801561092657600080fd5b5061020e6004356024356134f2565b34801561094157600080fd5b5061034f613829565b34801561095657600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261020e958335600160a060020a031695369560449491939091019190819084018382808284375094975061382f9650505050505050565b3480156109bd57600080fd5b5061034f61395e565b3480156109d257600080fd5b5061034f613964565b3480156109e757600080fd5b5061020e60043561396a565b3480156109ff57600080fd5b5061034f6139c3565b348015610a1457600080fd5b506105756139c9565b348015610a2957600080fd5b5061034f6139d8565b348015610a3e57600080fd5b5061034f6004356139de565b348015610a5657600080fd5b5061034f613a0b565b348015610a6b57600080fd5b5061034f600435613a11565b600254600160a060020a03163314610aff576040805160e560020a62461bcd02815260206004820152603860248201527f43616e206f6e6c792062652063616c6c6564206f6e636520627920746865206460448201527f65706c6f796572206f662074686520636f6e74726163742e0000000000000000606482015290519081900360840190fd5b6002805473ffffffffffffffffffffffffffffffffffffffff19169055600d5460408051602080825281018490527f61606860eb6c87306811e2695215385101daab53bd6ab4e9f9049aead9363c7d91859185918190810184848082843760405192018290039550909350505050a25050565b303314610bc6576040805160e560020a62461bcd0281526020600482015260236024820152600080516020613f41833981519152604482015260e960020a6234b99702606482015290519081900360840190fd5b600a55565b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c505780601f10610c2557610100808354040283529160200191610c50565b820191906000526020600020905b815481529060010190602001808311610c3357829003601f168201915b505050505081565b60606000600f83815481101515610c6b57fe5b9060005260206000209060080201905080600301805480602002602001604051908101604052809291908181526020018280548015610cc957602002820191906000526020600020905b815481526020019060010190808311610cb5575b5050505050915050919050565b60065481565b303314610d30576040805160e560020a62461bcd0281526020600482015260236024820152600080516020613f41833981519152604482015260e960020a6234b99702606482015290519081900360840190fd5b600755565b303314610d89576040805160e560020a62461bcd0281526020600482015260236024820152600080516020613f41833981519152604482015260e960020a6234b99702606482015290519081900360840190fd5b600455565b600f8054600091906000198101908110610da457fe5b60009182526020822091546008919091029091019150600160a060020a03163314610e3f576040805160e560020a62461bcd02815260206004820152602160248201527f4d7573742062652063616c6c6564206279207468652061726269747261746f7260448201527f2e00000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6001600582015460ff166002811115610e5457fe5b14610ecf576040805160e560020a62461bcd02815260206004820152602660248201527f54686520646973707574652068617320616c7265616479206265656e2072657360448201527f6f6c7665642e0000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6003810154821115610f2b576040805160e560020a62461bcd02815260206004820152601860248201527f52756c696e67206973206f7574206f6620626f756e64732e0000000000000000604482015290519081900360640190fd5b600c5460001914610f8757600c54604080516001909201825251849133917f394027a5fa6e098a1191094d1719d6929b9abc535fcc0c8f448d6a4e756222769181900360200190a3610f8283600c54600101613a3b565b610fc8565b604080518381529051849133917f394027a5fa6e098a1191094d1719d6929b9abc535fcc0c8f448d6a4e756222769181900360200190a3610fc88383613a3b565b505050565b303314611021576040805160e560020a62461bcd0281526020600482015260236024820152600080516020613f41833981519152604482015260e960020a6234b99702606482015290519081900360840190fd5b600955565b600080611031613bd0565b6000806060600080600080600f6001600f805490500381548110151561105357fe5b906000526020600020906008020160070154905061107c81600554613b3f90919063ffffffff16565b600b54420311156110d7576040805160e560020a62461bcd02815260206004820152601a60248201527f5375626d697373696f6e2074696d652068617320656e6465642e000000000000604482015290519081900360640190fd5b8d518f511461117d576040805160e560020a62461bcd028152602060048201526044602482018190527f496e636f727265637420696e7075742e2054617267657420616e642076616c75908201527f6520617272617973206d757374206265206f66207468652073616d65206c656e60648201527f6774682e00000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b8b518f5114611222576040805160e560020a62461bcd02815260206004820152604760248201527f496e636f727265637420696e7075742e2054617267657420616e64206461746160448201527f73697a6520617272617973206d757374206265206f66207468652073616d652060648201527f6c656e6774682e00000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b600f8054600019810190811061123457fe5b90600052602060002090600802019950600e8080548091906001016112599190613bef565b8154811061126357fe5b600091825260208083206007909202909101805473ffffffffffffffffffffffffffffffffffffffff19163317815591546040517ff7434ea9000000000000000000000000000000000000000000000000000000008152600481019283526001805460026000198284161561010002019091160460248301819052949d50600160a060020a03929092169363f7434ea9939182916044909101908490801561134c5780601f106113215761010080835404028352916020019161134c565b820191906000526020600020905b81548152906001019060200180831161132f57829003601f168201915b505092505050602060405180830381600087803b15801561136c57600080fd5b505af1158015611380573d6000803e3d6000fd5b505050506040513d602081101561139657600080fd5b50516004540160018a01819055341015611420576040805160e560020a62461bcd02815260206004820152602860248201527f5375626d697373696f6e206465706f736974206d75737420626520706169642060448201527f696e2066756c6c2e000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600095505b8e5186101561183f578b8681518110151561143c57fe5b906020019060200201516040519080825280601f01601f191660200182016040528015611473578160200160208202803883390190505b5060028a0180549196509061148b8260018301613c1b565b8154811061149557fe5b906000526020600020906004020193508e868151811015156114b357fe5b6020908102919091010151845473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039091161784558d518e90879081106114f357fe5b602090810290910101516001850155600092505b8b8681518110151561151557fe5b906020019060200201518310156115ca578c83880181518110151561153657fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002858481518110151561158f57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190920191611507565b84516115df9060028601906020880190613c47565b508b868151811015156115ee57fe5b90602001906020020151870196508360000160009054906101000a9004600160a060020a03168460010154856002016040516020018084600160a060020a0316600160a060020a03166c01000000000000000000000000028152601401838152602001828054600181600116156101000203166002900480156116a85780601f106116865761010080835404028352918201916116a8565b820191906000526020600020905b815481529060010190602001808311611694575b505093505050506040516020818303038152906040526040518082805190602001908083835b602083106116ed5780518252601f1990920191602091820191016116ce565b51815160001960209485036101000a0190811690199091161790526040805192909401829003909120928d018390528c01519091101592506117a2915050576040805160e560020a62461bcd02815260206004820152602860248201527f546865207472616e73616374696f6e732061726520696e20696e636f7272656360448201527f74206f726465722e000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b604080890151895182516020818101939093528084019190915282518082038401815260609091019283905280519092918291908401908083835b602083106117fc5780518252601f1990920191602091820191016117dd565b51815160209384036101000a600019018019909216911617905260408051949092018490039093208d528c0151918c019190915250505060019590950194611425565b8751600090815260068b01602052604090205460ff16156118d0576040805160e560020a62461bcd02815260206004820152602c60248201527f5468652073616d65206c6973742077617320616c7265616479207375626d697460448201527f746564206561726c6965722e0000000000000000000000000000000000000000606482015290519081900360840190fd5b8751600090815260068b01602090815260408220805460ff191660019081179091558a5160038d810191909155426004808f01919091558d830154908f0180549091019055600e54908e018054808401825581865293909420600019919091019201919091559054141561195857600b5461195290429063ffffffff613b6016565b60078b01555b6001600f805490500333600160a060020a03166001600e80549050037f1a700b4f7df255aaf8c91c8b05abf0eab596e467dc17ef76fe4afc12541012488e6040518080602001828103825283818151815260200191508051906020019080838360005b838110156119d35781810151838201526020016119bb565b50505050905090810190601f168015611a005780820380516001836020036101000a031916815260200191505b509250505060405180910390a48860010154340391506000821115611a3c57604051339083156108fc029084906000818181858888f150505050505b5050506001909501546003805490910190555050505050505050505050565b6000806000600f86815481101515611a6f57fe5b906000526020600020906008020192508260000185815481101515611a9057fe5b6000918252602090912060059091020191506002600584015460ff166002811115611ab757fe5b14611b0c576040805160e560020a62461bcd02815260206004820152601f60248201527f53657373696f6e2068617320616e206f6e676f696e6720646973707574652e00604482015290519081900360640190fd5b600084815260018301602052604090205460ff161515611b525750600160a060020a03861660009081526003820160209081526040808320868452909152902054611c44565b60018301541580611b7d5750600183810154600019016000908152908301602052604090205460ff16155b15611bd8576000826004015411611b95576000611bd1565b60048201546002830154600160a060020a0389166000908152600385016020908152604080832089845290915290205402811515611bcf57fe5b045b9050611c44565b8360018460010154031415611c445760008481526020839052604081205411611c02576000611c41565b600084815260208381526040808320546002860154600160a060020a038c16855260038701845282852089865290935292205402811515611c3f57fe5b045b90505b600160a060020a038716600081815260038401602090815260408083208884529091528082208290555183156108fc0291849190818181858888f15050600354611c999350915083905063ffffffff613b6016565b60035550505050505050565b60606000806000600f87815481101515611cbb57fe5b906000526020600020906008020192508260000186815481101515611cdc57fe5b906000526020600020906005020191508260030180549050604051908082528060200260200182016040528015611d1d578160200160208202803883390190505b509350600090505b8351811015611d7457600160a060020a038516600090815260038301602090815260408083208484529091529020548451859083908110611d6257fe5b60209081029091010152600101611d25565b5050509392505050565b600f54600019015b90565b600054600160a060020a031681565b600d5481565b6000806000806000600e88815481101515611db557fe5b60009182526020909120600790910201600581015490955060ff161515611e4c576040805160e560020a62461bcd02815260206004820152602860248201527f43616e27742065786563757465206c6973742074686174207761736e2774206160448201527f7070726f7665642e000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600680549086015442031115611ed2576040805160e560020a62461bcd02815260206004820152603060248201527f54696d6520746f206578656375746520746865207472616e73616374696f6e2060448201527f6c69737420686173207061737365642e00000000000000000000000000000000606482015290519081900360840190fd5b8693505b600285015484108015611ef25750851580611ef2575085870184105b1561208f5760028501805485908110611f0757fe5b90600052602060002090600402019250611f1f6134d5565b600384015490925060ff16158015611f3b575081836001015411155b15612084578260000160009054906101000a9004600160a060020a0316600160a060020a03168360010154846002016040518082805460018160011615610100020316600290048015611fcf5780601f10611fa457610100808354040283529160200191611fcf565b820191906000526020600020905b815481529060010190602001808311611fb257829003601f168201915b505091505060006040518083038185875af193505050508015156001141561208457600383015460ff1615612074576040805160e560020a62461bcd02815260206004820152602b60248201527f54686973207472616e73616374696f6e2068617320616c72656164792062656560448201527f6e2065786563757465642e000000000000000000000000000000000000000000606482015290519081900360840190fd5b60038301805460ff191660011790555b600190930192611ed6565b5050505050505050565b60035481565b600f8054829081106120ad57fe5b6000918252602090912060089091020160018101546002820154600483015460058401546007909401549294509092909160ff9091169085565b600c5481565b6060806000806000806000600f8981548110151561210757fe5b90600052602060002090600802019250826000018881548110151561212857fe5b906000526020600020906005020191508260030180549050604051908082528060200260200182016040528015612169578160200160208202803883390190505b506003840154604080518281526020808402820101909152919850801561219a578160200160208202803883390190505b509550600090505b60038301548110156122155760008181526020839052604090205487518890839081106121cb57fe5b60209081029091018101919091526000828152600184019091526040902054865160ff909116908790839081106121fe57fe5b9115156020928302909101909101526001016121a2565b50600281015460049091015495989497509550505050565b303314612281576040805160e560020a62461bcd0281526020600482015260236024820152600080516020613f41833981519152604482015260e960020a6234b99702606482015290519081900360840190fd5b600254600160a060020a0316156122e2576040805160e560020a62461bcd02815260206004820152601960248201527f4d65746165766964656e636520776173206e6f74207365742e00000000000000604482015290519081900360640190fd5b600d80546001019081905560408051602080825284518183015284517f61606860eb6c87306811e2695215385101daab53bd6ab4e9f9049aead9363c7d938693928392918301919085019080838360005b8381101561234b578181015183820152602001612333565b50505050905090810190601f1680156123785780820380516001836020036101000a031916815260200191505b509250505060405180910390a250565b6000806000806000600f6001600f80549050038154811015156123a757fe5b90600052602060002090600802016007015490506123d081600554613b3f90919063ffffffff16565b600b54420311612450576040805160e560020a62461bcd02815260206004820152602260248201527f417070726f76616c2074696d6520686173206e6f74207374617274656420796560448201527f742e000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600f8054600019810190811061246257fe5b6000918252602082206008909102019550600586015460ff16600281111561248657fe5b14612501576040805160e560020a62461bcd02815260206004820152603760248201527f43616e277420617070726f7665207472616e73616374696f6e206c697374207760448201527f68696c652064697370757465206973206163746976652e000000000000000000606482015290519081900360840190fd5b600385015415156125375742600b5560058501805460ff19166002179055600f8054906125319060018301613cc5565b506128d5565b60038501546001141561260957600e85600301600081548110151561255857fe5b906000526020600020015481548110151561256f57fe5b6000918252602082206005600790920201908101805460ff19166001179055426006820155600487018054908390558154604051929750909550600160a060020a03169185156108fc02918691818181858888f1505042600b5550505060058501805460ff19166002179055600f8054906125ed9060018301613cc5565b50600354612601908463ffffffff613b6016565b6003556128d5565b60058501805460ff191660019081179091556000546040517ff7434ea9000000000000000000000000000000000000000000000000000000008152602060048201908152835460026101008287161502600019019091160460248301819052600160a060020a039093169363f7434ea99390928291604490910190849080156126d35780601f106126a8576101008083540402835291602001916126d3565b820191906000526020600020905b8154815290600101906020018083116126b657829003601f168201915b505092505050602060405180830381600087803b1580156126f357600080fd5b505af1158015612707573d6000803e3d6000fd5b505050506040513d602081101561271d57600080fd5b50516000546003870154604080517fc13517e100000000000000000000000000000000000000000000000000000000815260048101838152602482019283526001805460026000198284161561010002019091160460448401819052969850600160a060020a039095169563c13517e19589959490939091606490910190849080156127ea5780601f106127bf576101008083540402835291602001916127ea565b820191906000526020600020905b8154815290600101906020018083116127cd57829003601f168201915b505093505050506020604051808303818588803b15801561280a57600080fd5b505af115801561281e573d6000803e3d6000fd5b50505050506040513d602081101561283557600080fd5b50516002860155845461284b8660018301613cf1565b506004850154612861908363ffffffff613b6016565b6004860155600354612879908363ffffffff613b6016565b6003556002850154600054600d54600f546040805192835260001990910160208301528051600160a060020a03909316927f74baab670a4015ab2f1b467c5252a96141a2573f2908e58a92081e80d3cfde3d9281900390910190a35b5050505050565b303314612930576040805160e560020a62461bcd0281526020600482015260236024820152600080516020613f41833981519152604482015260e960020a6234b99702606482015290519081900360840190fd5b600f805460009190600019810190811061294657fe5b906000526020600020906008020160070154905061296f81600554613b3f90919063ffffffff16565b600b54420311156129ca576040805160e560020a62461bcd02815260206004820152601a60248201527f5375626d697373696f6e2074696d652068617320656e6465642e000000000000604482015290519081900360640190fd5b50600555565b303314612a24576040805160e560020a62461bcd0281526020600482015260236024820152600080516020613f41833981519152604482015260e960020a6234b99702606482015290519081900360840190fd5b600855565b600a5481565b60095481565b60075481565b60008060606000806000600e88815481101515612a5457fe5b906000526020600020906007020191508160020187815481101515612a7557fe5b60009182526020918290206004919091020180546001808301546003840154600280860180546040805161010097831615979097026000190190911692909204601f8101899004890286018901909252818552959750600160a060020a039094169591949360ff9091169291849190830182828015612b355780601f10612b0a57610100808354040283529160200191612b35565b820191906000526020600020905b815481529060010190602001808311612b1857829003601f168201915b505050505091509550955095509550505092959194509250565b600080600080600080600080600080600f6001600f8054905003815481101515612b7557fe5b9060005260206000209060080201995060018a60030180549050038b11151515612be9576040805160e560020a62461bcd02815260206004820152601e60248201527f5375626d697373696f6e4944206973206f7574206f6620626f756e64732e0000604482015290519081900360640190fd5b600160058b015460ff166002811115612bfe57fe5b14612c53576040805160e560020a62461bcd02815260206004820152601560248201527f4e6f206469737075746520746f2061707065616c2e0000000000000000000000604482015290519081900360640190fd5b60016000805460028d0154604080517f10f169e8000000000000000000000000000000000000000000000000000000008152600481019290925251600160a060020a03909216926310f169e8926024808401936020939083900390910190829087803b158015612cc257600080fd5b505af1158015612cd6573d6000803e3d6000fd5b505050506040513d6020811015612cec57600080fd5b50516002811115612cf957fe5b14612d4e576040805160e560020a62461bcd02815260206004820152601a60248201527f44697370757465206973206e6f742061707065616c61626c652e000000000000604482015290519081900360640190fd5b6000805460028c0154604080517fafe15cfb00000000000000000000000000000000000000000000000000000000815260048101929092528051600160a060020a039093169363afe15cfb936024808501949192918390030190829087803b158015612db957600080fd5b505af1158015612dcd573d6000803e3d6000fd5b505050506040513d6040811015612de357600080fd5b5080516020909101519099509750428911801590612e0057508742105b1515612e7c576040805160e560020a62461bcd02815260206004820152603260248201527f41707065616c2066656573206d75737420626520706169642077697468696e2060448201527f7468652061707065616c20706572696f642e0000000000000000000000000000606482015290519081900360840190fd5b6000805460028c0154604080517f1c3db16d000000000000000000000000000000000000000000000000000000008152600481019290925251600160a060020a0390921692631c3db16d926024808401936020939083900390910190829087803b158015612ee957600080fd5b505af1158015612efd573d6000803e3d6000fd5b505050506040513d6020811015612f1357600080fd5b5051965060018b01871415612f2c576009549550612fc8565b861515612f3d576008549550612fc8565b600289890304428a900310612fc2576040805160e560020a62461bcd02815260206004820152603e60248201527f546865206c6f736572206d7573742070617920647572696e672074686520666960448201527f7273742068616c66206f66207468652061707065616c20706572696f642e0000606482015290519081900360840190fd5b600a5495505b89548a906000198101908110612fda57fe5b600091825260208083208e84526001600590930201918201905260409091205490955060ff161561307b576040805160e560020a62461bcd02815260206004820152602160248201527f41707065616c206665652068617320616c7265616479206265656e207061696460448201527f2e00000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6000546002808c0154604080517ff23f16e6000000000000000000000000000000000000000000000000000000008152600481018381526024820192835260018054600019818316156101000201169590950460448301819052600160a060020a039096169563f23f16e695939192606401908490801561313d5780601f106131125761010080835404028352916020019161313d565b820191906000526020600020905b81548152906001019060200180831161312057829003601f168201915b50509350505050602060405180830381600087803b15801561315e57600080fd5b505af1158015613172573d6000803e3d6000fd5b505050506040513d602081101561318857600080fd5b505193506131ba6127106131a2868963ffffffff613b7d16565b8115156131ab57fe5b8691900463ffffffff613b3f16565b60008c8152602087905260409020549093506131e89034906131e390869063ffffffff613b6016565b613bae565b80925081935050508185600301600033600160a060020a0316600160a060020a0316815260200190815260200160002060008d815260200190815260200160002060008282540192505081905550818560000160008d815260200190815260200160002060008282540192505081905550828560000160008d8152602001908152602001600020541015156132ce5760008b815260018681016020526040909120805460ff19169091179055600c5460001914156132a657600c8b90555b60008b8152602086905260409020805460028701805490910190555460048601805490910190555b604051339082156108fc029083906000818181858888f1505060038054860190555050600c54600019148015915061330857508a600c5414155b8015613324575060008b815260018601602052604090205460ff165b1561347457600019600c8190556000546002808d0154604080517f49912f8800000000000000000000000000000000000000000000000000000000815260048101838152602482019283526001805480821615610100029098019097169490940460448201819052600160a060020a03909516956349912f88958b959193919260640190849080156133f75780601f106133cc576101008083540402835291602001916133f7565b820191906000526020600020905b8154815290600101906020018083116133da57829003601f168201915b505093505050506000604051808303818588803b15801561341757600080fd5b505af115801561342b573d6000803e3d6000fd5b50508c54925061344291508c905060018301613cf1565b506002850154613458908563ffffffff613b6016565b6002860155600354613470908563ffffffff613b6016565b6003555b5050505050505050505050565b600e80548290811061348f57fe5b6000918252602090912060079091020180546001820154600383015460048401546005850154600690950154600160a060020a0390941695509193909260ff9091169086565b6003546000906134ed9030319063ffffffff613b6016565b905090565b600f80546000918291600019810190811061350957fe5b90600052602060002090600802019150600e826003018581548110151561352c57fe5b906000526020600020015481548110151561354357fe5b90600052602060002090600702019050600260055481151561356157fe5b04600b544203111515156135e5576040805160e560020a62461bcd02815260206004820152603c60248201527f4c697374732063616e2062652077697468647261776e206f6e6c7920696e207460448201527f68652066697273742068616c66206f662074686520706572696f642e00000000606482015290519081900360840190fd5b60038101548314613666576040805160e560020a62461bcd02815260206004820152603460248201527f50726f7669646564206861736820646f65736e277420636f72726573706f6e6460448201527f2077697468207375626d697373696f6e2049442e000000000000000000000000606482015290519081900360840190fd5b8054600160a060020a031633146136ed576040805160e560020a62461bcd02815260206004820152603060248201527f43616e277420776974686472617720746865206c69737420637265617465642060448201527f627920736f6d656f6e6520656c73652e00000000000000000000000000000000606482015290519081900360840190fd5b60075460048201544203111561374d576040805160e560020a62461bcd02815260206004820152601c60248201527f5769746864726177696e672074696d6520686173207061737365642e00000000604482015290519081900360640190fd5b600382018054600019810190811061376157fe5b9060005260206000200154826003018581548110151561377d57fe5b60009182526020808320909101929092558481526006840190915260409020805460ff19169055600382018054906137b9906000198301613d1d565b50600181015460048301546137d39163ffffffff613b6016565b60048301556001810154604051339180156108fc02916000818181858888f19350505050158015613808573d6000803e3d6000fd5b5060018101546003546138209163ffffffff613b6016565b60035550505050565b600e5490565b303314613883576040805160e560020a62461bcd0281526020600482015260236024820152600080516020613f41833981519152604482015260e960020a6234b99702606482015290519081900360840190fd5b600f805460009190600019810190811061389957fe5b90600052602060002090600802016007015490506138c281600554613b3f90919063ffffffff16565b600b544203111561391d576040805160e560020a62461bcd02815260206004820152601a60248201527f5375626d697373696f6e2074696d652068617320656e6465642e000000000000604482015290519081900360640190fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0385161790558151613958906001906020850190613c47565b50505050565b60045481565b60055481565b3033146139be576040805160e560020a62461bcd0281526020600482015260236024820152600080516020613f41833981519152604482015260e960020a6234b99702606482015290519081900360840190fd5b600655565b60085481565b600254600160a060020a031681565b61271081565b600080600e838154811015156139f057fe5b60009182526020909120600260079092020101549392505050565b600b5481565b600080600f83815481101515613a2357fe5b60009182526020909120600890910201549392505050565b600f805460009182916000198101908110613a5257fe5b90600052602060002090600802019150826000141515613aec57600e8260030160018503815481101515613a8257fe5b9060005260206000200154815481101515613a9957fe5b6000918252602082206005600790920201908101805460ff1916600117905542600682015580546004850154604051929450600160a060020a039091169281156108fc029290818181858888f150505050505b6004820154600354613b039163ffffffff613b6016565b60035560006004830155600019600c5542600b5560058201805460ff191660021790556001808301849055600f8054916128d591908301613cc5565b600082820183811015613b5457600019613b56565b805b91505b5092915050565b600082821115613b7257506000613b77565b508082035b92915050565b600080831515613b905760009150613b59565b50828202828482811515613ba057fe5b0414613b5457600019613b56565b60008083831115613bc157839150613bc9565b508190508083035b9250929050565b6060604051908101604052806003906020820280388339509192915050565b815481835581811115610fc857600702816007028360005260206000209182019101610fc89190613d41565b815481835581811115610fc857600402816004028360005260206000209182019101610fc89190613daa565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613c8857805160ff1916838001178555613cb5565b82800160010185558215613cb5579182015b82811115613cb5578251825591602001919060010190613c9a565b50613cc1929150613dfe565b5090565b815481835581811115610fc857600802816008028360005260206000209182019101610fc89190613e18565b815481835581811115610fc857600502816005028360005260206000209182019101610fc89190613e75565b815481835581811115610fc857600083815260209020610fc8918101908301613dfe565b611d8691905b80821115613cc157805473ffffffffffffffffffffffffffffffffffffffff19168155600060018201819055613d806002830182613e99565b506000600382018190556004820181905560058201805460ff191690556006820155600701613d47565b611d8691905b80821115613cc157805473ffffffffffffffffffffffffffffffffffffffff19168155600060018201819055613de96002830182613ebd565b5060038101805460ff19169055600401613db0565b611d8691905b80821115613cc15760008155600101613e04565b611d8691905b80821115613cc1576000613e328282613f01565b60018201600090556002820160009055600382016000613e529190613f22565b5060006004820181905560058201805460ff191690556007820155600801613e1e565b611d8691905b80821115613cc1576000600282018190556004820155600501613e7b565b5080546000825560040290600052602060002090810190613eba9190613daa565b50565b50805460018160011615610100020316600290046000825580601f10613ee35750613eba565b601f016020900490600052602060002090810190613eba9190613dfe565b5080546000825560050290600052602060002090810190613eba9190613e75565b5080546000825590600052602060002090810190613eba9190613dfe56004f6e6c792074686520676f7665726e6f722063616e2065786563757465207468a165627a7a72305820ff4c53581a4265f92bb94a976815bd0783fb7ada04d5fcb6726b708c37347aac0029000000000000000000000000988b3a538b618c7a603e1c11ab82cd16dbe280690000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000aac4244e292e80000000000000000000000000000000000000000000000000000000000000098ee00000000000000000000000000000000000000000000000000000000000093a800000000000000000000000000000000000000000000000000000000000000e10000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000004e20000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000005

Deployed Bytecode

0x60806040526004361061020e5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166302c891c5811461021057806305528715146102305780630c7ac7b61461024857806321cea538146102d257806322b52d661461033a578063246c76df1461036157806324baacc714610379578063311a6c5614610391578063325df188146103ac57806346047838146103c457806356858619146104fa57806368c76ffd146105245780636c0b7e711461054b5780636cc6cde1146105605780636cdc090f146105915780636cf39c2b146105a657806377b9fda8146105c457806383c4b7a3146105d957806384e3a311146106315780638a9bb02a1461064657806390765279146107085780639244c70414610761578063953d6651146107765780639543c9fd1461078e578063965394ab146107a65780639b3ac998146107bb5780639c15d1a2146107d0578063a3c595c9146107e5578063a446ff57146108a3578063ad73349e146108ae578063b512570014610905578063b6cd08c61461091a578063b6dc775414610935578063ba7079ca1461094a578063bb0b86ff146109b1578063c4bd8519146109c6578063cc2bcdb4146109db578063ce1d8ab2146109f3578063d5f3948814610a08578063d661dd3114610a1d578063dc17bbdb14610a32578063f730c07f14610a4a578063f8d18b0414610a5f575b005b34801561021c57600080fd5b5061020e6004803560248101910135610a77565b34801561023c57600080fd5b5061020e600435610b72565b34801561025457600080fd5b5061025d610bcb565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029757818101518382015260200161027f565b50505050905090810190601f1680156102c45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102de57600080fd5b506102ea600435610c58565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561032657818101518382015260200161030e565b505050509050019250505060405180910390f35b34801561034657600080fd5b5061034f610cd6565b60408051918252519081900360200190f35b34801561036d57600080fd5b5061020e600435610cdc565b34801561038557600080fd5b5061020e600435610d35565b34801561039d57600080fd5b5061020e600435602435610d8e565b3480156103b857600080fd5b5061020e600435610fcd565b6040805160206004803580820135838102808601850190965280855261020e95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a99890198929750908201955093508392508501908490808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750506040805187358901803560208181028481018201909552818452989b9a99890198929750908201955093508392508501908490808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506110269650505050505050565b34801561050657600080fd5b5061020e600160a060020a0360043516602435604435606435611a5b565b34801561053057600080fd5b506102ea600435602435600160a060020a0360443516611ca5565b34801561055757600080fd5b5061034f611d7e565b34801561056c57600080fd5b50610575611d89565b60408051600160a060020a039092168252519081900360200190f35b34801561059d57600080fd5b5061034f611d98565b3480156105b257600080fd5b5061020e600435602435604435611d9e565b3480156105d057600080fd5b5061034f612099565b3480156105e557600080fd5b506105f160043561209f565b6040518086815260200185815260200184815260200183600281111561061357fe5b60ff1681526020018281526020019550505050505060405180910390f35b34801561063d57600080fd5b5061034f6120e7565b34801561065257600080fd5b506106616004356024356120ed565b604051808060200180602001858152602001848152602001838103835287818151815260200191508051906020019060200280838360005b838110156106b1578181015183820152602001610699565b50505050905001838103825286818151815260200191508051906020019060200280838360005b838110156106f05781810151838201526020016106d8565b50505050905001965050505050505060405180910390f35b34801561071457600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261020e94369492936024939284019190819084018382808284375094975061222d9650505050505050565b34801561076d57600080fd5b5061020e612388565b34801561078257600080fd5b5061020e6004356128dc565b34801561079a57600080fd5b5061020e6004356129d0565b3480156107b257600080fd5b5061034f612a29565b3480156107c757600080fd5b5061034f612a2f565b3480156107dc57600080fd5b5061034f612a35565b3480156107f157600080fd5b50610800600435602435612a3b565b6040518085600160a060020a0316600160a060020a031681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b8381101561086557818101518382015260200161084d565b50505050905090810190601f1680156108925780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b61020e600435612b4f565b3480156108ba57600080fd5b506108c6600435613481565b60408051600160a060020a03909716875260208701959095528585019390935260608501919091521515608084015260a0830152519081900360c00190f35b34801561091157600080fd5b5061034f6134d5565b34801561092657600080fd5b5061020e6004356024356134f2565b34801561094157600080fd5b5061034f613829565b34801561095657600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261020e958335600160a060020a031695369560449491939091019190819084018382808284375094975061382f9650505050505050565b3480156109bd57600080fd5b5061034f61395e565b3480156109d257600080fd5b5061034f613964565b3480156109e757600080fd5b5061020e60043561396a565b3480156109ff57600080fd5b5061034f6139c3565b348015610a1457600080fd5b506105756139c9565b348015610a2957600080fd5b5061034f6139d8565b348015610a3e57600080fd5b5061034f6004356139de565b348015610a5657600080fd5b5061034f613a0b565b348015610a6b57600080fd5b5061034f600435613a11565b600254600160a060020a03163314610aff576040805160e560020a62461bcd02815260206004820152603860248201527f43616e206f6e6c792062652063616c6c6564206f6e636520627920746865206460448201527f65706c6f796572206f662074686520636f6e74726163742e0000000000000000606482015290519081900360840190fd5b6002805473ffffffffffffffffffffffffffffffffffffffff19169055600d5460408051602080825281018490527f61606860eb6c87306811e2695215385101daab53bd6ab4e9f9049aead9363c7d91859185918190810184848082843760405192018290039550909350505050a25050565b303314610bc6576040805160e560020a62461bcd0281526020600482015260236024820152600080516020613f41833981519152604482015260e960020a6234b99702606482015290519081900360840190fd5b600a55565b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c505780601f10610c2557610100808354040283529160200191610c50565b820191906000526020600020905b815481529060010190602001808311610c3357829003601f168201915b505050505081565b60606000600f83815481101515610c6b57fe5b9060005260206000209060080201905080600301805480602002602001604051908101604052809291908181526020018280548015610cc957602002820191906000526020600020905b815481526020019060010190808311610cb5575b5050505050915050919050565b60065481565b303314610d30576040805160e560020a62461bcd0281526020600482015260236024820152600080516020613f41833981519152604482015260e960020a6234b99702606482015290519081900360840190fd5b600755565b303314610d89576040805160e560020a62461bcd0281526020600482015260236024820152600080516020613f41833981519152604482015260e960020a6234b99702606482015290519081900360840190fd5b600455565b600f8054600091906000198101908110610da457fe5b60009182526020822091546008919091029091019150600160a060020a03163314610e3f576040805160e560020a62461bcd02815260206004820152602160248201527f4d7573742062652063616c6c6564206279207468652061726269747261746f7260448201527f2e00000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6001600582015460ff166002811115610e5457fe5b14610ecf576040805160e560020a62461bcd02815260206004820152602660248201527f54686520646973707574652068617320616c7265616479206265656e2072657360448201527f6f6c7665642e0000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6003810154821115610f2b576040805160e560020a62461bcd02815260206004820152601860248201527f52756c696e67206973206f7574206f6620626f756e64732e0000000000000000604482015290519081900360640190fd5b600c5460001914610f8757600c54604080516001909201825251849133917f394027a5fa6e098a1191094d1719d6929b9abc535fcc0c8f448d6a4e756222769181900360200190a3610f8283600c54600101613a3b565b610fc8565b604080518381529051849133917f394027a5fa6e098a1191094d1719d6929b9abc535fcc0c8f448d6a4e756222769181900360200190a3610fc88383613a3b565b505050565b303314611021576040805160e560020a62461bcd0281526020600482015260236024820152600080516020613f41833981519152604482015260e960020a6234b99702606482015290519081900360840190fd5b600955565b600080611031613bd0565b6000806060600080600080600f6001600f805490500381548110151561105357fe5b906000526020600020906008020160070154905061107c81600554613b3f90919063ffffffff16565b600b54420311156110d7576040805160e560020a62461bcd02815260206004820152601a60248201527f5375626d697373696f6e2074696d652068617320656e6465642e000000000000604482015290519081900360640190fd5b8d518f511461117d576040805160e560020a62461bcd028152602060048201526044602482018190527f496e636f727265637420696e7075742e2054617267657420616e642076616c75908201527f6520617272617973206d757374206265206f66207468652073616d65206c656e60648201527f6774682e00000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b8b518f5114611222576040805160e560020a62461bcd02815260206004820152604760248201527f496e636f727265637420696e7075742e2054617267657420616e64206461746160448201527f73697a6520617272617973206d757374206265206f66207468652073616d652060648201527f6c656e6774682e00000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b600f8054600019810190811061123457fe5b90600052602060002090600802019950600e8080548091906001016112599190613bef565b8154811061126357fe5b600091825260208083206007909202909101805473ffffffffffffffffffffffffffffffffffffffff19163317815591546040517ff7434ea9000000000000000000000000000000000000000000000000000000008152600481019283526001805460026000198284161561010002019091160460248301819052949d50600160a060020a03929092169363f7434ea9939182916044909101908490801561134c5780601f106113215761010080835404028352916020019161134c565b820191906000526020600020905b81548152906001019060200180831161132f57829003601f168201915b505092505050602060405180830381600087803b15801561136c57600080fd5b505af1158015611380573d6000803e3d6000fd5b505050506040513d602081101561139657600080fd5b50516004540160018a01819055341015611420576040805160e560020a62461bcd02815260206004820152602860248201527f5375626d697373696f6e206465706f736974206d75737420626520706169642060448201527f696e2066756c6c2e000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600095505b8e5186101561183f578b8681518110151561143c57fe5b906020019060200201516040519080825280601f01601f191660200182016040528015611473578160200160208202803883390190505b5060028a0180549196509061148b8260018301613c1b565b8154811061149557fe5b906000526020600020906004020193508e868151811015156114b357fe5b6020908102919091010151845473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039091161784558d518e90879081106114f357fe5b602090810290910101516001850155600092505b8b8681518110151561151557fe5b906020019060200201518310156115ca578c83880181518110151561153657fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002858481518110151561158f57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190920191611507565b84516115df9060028601906020880190613c47565b508b868151811015156115ee57fe5b90602001906020020151870196508360000160009054906101000a9004600160a060020a03168460010154856002016040516020018084600160a060020a0316600160a060020a03166c01000000000000000000000000028152601401838152602001828054600181600116156101000203166002900480156116a85780601f106116865761010080835404028352918201916116a8565b820191906000526020600020905b815481529060010190602001808311611694575b505093505050506040516020818303038152906040526040518082805190602001908083835b602083106116ed5780518252601f1990920191602091820191016116ce565b51815160001960209485036101000a0190811690199091161790526040805192909401829003909120928d018390528c01519091101592506117a2915050576040805160e560020a62461bcd02815260206004820152602860248201527f546865207472616e73616374696f6e732061726520696e20696e636f7272656360448201527f74206f726465722e000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b604080890151895182516020818101939093528084019190915282518082038401815260609091019283905280519092918291908401908083835b602083106117fc5780518252601f1990920191602091820191016117dd565b51815160209384036101000a600019018019909216911617905260408051949092018490039093208d528c0151918c019190915250505060019590950194611425565b8751600090815260068b01602052604090205460ff16156118d0576040805160e560020a62461bcd02815260206004820152602c60248201527f5468652073616d65206c6973742077617320616c7265616479207375626d697460448201527f746564206561726c6965722e0000000000000000000000000000000000000000606482015290519081900360840190fd5b8751600090815260068b01602090815260408220805460ff191660019081179091558a5160038d810191909155426004808f01919091558d830154908f0180549091019055600e54908e018054808401825581865293909420600019919091019201919091559054141561195857600b5461195290429063ffffffff613b6016565b60078b01555b6001600f805490500333600160a060020a03166001600e80549050037f1a700b4f7df255aaf8c91c8b05abf0eab596e467dc17ef76fe4afc12541012488e6040518080602001828103825283818151815260200191508051906020019080838360005b838110156119d35781810151838201526020016119bb565b50505050905090810190601f168015611a005780820380516001836020036101000a031916815260200191505b509250505060405180910390a48860010154340391506000821115611a3c57604051339083156108fc029084906000818181858888f150505050505b5050506001909501546003805490910190555050505050505050505050565b6000806000600f86815481101515611a6f57fe5b906000526020600020906008020192508260000185815481101515611a9057fe5b6000918252602090912060059091020191506002600584015460ff166002811115611ab757fe5b14611b0c576040805160e560020a62461bcd02815260206004820152601f60248201527f53657373696f6e2068617320616e206f6e676f696e6720646973707574652e00604482015290519081900360640190fd5b600084815260018301602052604090205460ff161515611b525750600160a060020a03861660009081526003820160209081526040808320868452909152902054611c44565b60018301541580611b7d5750600183810154600019016000908152908301602052604090205460ff16155b15611bd8576000826004015411611b95576000611bd1565b60048201546002830154600160a060020a0389166000908152600385016020908152604080832089845290915290205402811515611bcf57fe5b045b9050611c44565b8360018460010154031415611c445760008481526020839052604081205411611c02576000611c41565b600084815260208381526040808320546002860154600160a060020a038c16855260038701845282852089865290935292205402811515611c3f57fe5b045b90505b600160a060020a038716600081815260038401602090815260408083208884529091528082208290555183156108fc0291849190818181858888f15050600354611c999350915083905063ffffffff613b6016565b60035550505050505050565b60606000806000600f87815481101515611cbb57fe5b906000526020600020906008020192508260000186815481101515611cdc57fe5b906000526020600020906005020191508260030180549050604051908082528060200260200182016040528015611d1d578160200160208202803883390190505b509350600090505b8351811015611d7457600160a060020a038516600090815260038301602090815260408083208484529091529020548451859083908110611d6257fe5b60209081029091010152600101611d25565b5050509392505050565b600f54600019015b90565b600054600160a060020a031681565b600d5481565b6000806000806000600e88815481101515611db557fe5b60009182526020909120600790910201600581015490955060ff161515611e4c576040805160e560020a62461bcd02815260206004820152602860248201527f43616e27742065786563757465206c6973742074686174207761736e2774206160448201527f7070726f7665642e000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600680549086015442031115611ed2576040805160e560020a62461bcd02815260206004820152603060248201527f54696d6520746f206578656375746520746865207472616e73616374696f6e2060448201527f6c69737420686173207061737365642e00000000000000000000000000000000606482015290519081900360840190fd5b8693505b600285015484108015611ef25750851580611ef2575085870184105b1561208f5760028501805485908110611f0757fe5b90600052602060002090600402019250611f1f6134d5565b600384015490925060ff16158015611f3b575081836001015411155b15612084578260000160009054906101000a9004600160a060020a0316600160a060020a03168360010154846002016040518082805460018160011615610100020316600290048015611fcf5780601f10611fa457610100808354040283529160200191611fcf565b820191906000526020600020905b815481529060010190602001808311611fb257829003601f168201915b505091505060006040518083038185875af193505050508015156001141561208457600383015460ff1615612074576040805160e560020a62461bcd02815260206004820152602b60248201527f54686973207472616e73616374696f6e2068617320616c72656164792062656560448201527f6e2065786563757465642e000000000000000000000000000000000000000000606482015290519081900360840190fd5b60038301805460ff191660011790555b600190930192611ed6565b5050505050505050565b60035481565b600f8054829081106120ad57fe5b6000918252602090912060089091020160018101546002820154600483015460058401546007909401549294509092909160ff9091169085565b600c5481565b6060806000806000806000600f8981548110151561210757fe5b90600052602060002090600802019250826000018881548110151561212857fe5b906000526020600020906005020191508260030180549050604051908082528060200260200182016040528015612169578160200160208202803883390190505b506003840154604080518281526020808402820101909152919850801561219a578160200160208202803883390190505b509550600090505b60038301548110156122155760008181526020839052604090205487518890839081106121cb57fe5b60209081029091018101919091526000828152600184019091526040902054865160ff909116908790839081106121fe57fe5b9115156020928302909101909101526001016121a2565b50600281015460049091015495989497509550505050565b303314612281576040805160e560020a62461bcd0281526020600482015260236024820152600080516020613f41833981519152604482015260e960020a6234b99702606482015290519081900360840190fd5b600254600160a060020a0316156122e2576040805160e560020a62461bcd02815260206004820152601960248201527f4d65746165766964656e636520776173206e6f74207365742e00000000000000604482015290519081900360640190fd5b600d80546001019081905560408051602080825284518183015284517f61606860eb6c87306811e2695215385101daab53bd6ab4e9f9049aead9363c7d938693928392918301919085019080838360005b8381101561234b578181015183820152602001612333565b50505050905090810190601f1680156123785780820380516001836020036101000a031916815260200191505b509250505060405180910390a250565b6000806000806000600f6001600f80549050038154811015156123a757fe5b90600052602060002090600802016007015490506123d081600554613b3f90919063ffffffff16565b600b54420311612450576040805160e560020a62461bcd02815260206004820152602260248201527f417070726f76616c2074696d6520686173206e6f74207374617274656420796560448201527f742e000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600f8054600019810190811061246257fe5b6000918252602082206008909102019550600586015460ff16600281111561248657fe5b14612501576040805160e560020a62461bcd02815260206004820152603760248201527f43616e277420617070726f7665207472616e73616374696f6e206c697374207760448201527f68696c652064697370757465206973206163746976652e000000000000000000606482015290519081900360840190fd5b600385015415156125375742600b5560058501805460ff19166002179055600f8054906125319060018301613cc5565b506128d5565b60038501546001141561260957600e85600301600081548110151561255857fe5b906000526020600020015481548110151561256f57fe5b6000918252602082206005600790920201908101805460ff19166001179055426006820155600487018054908390558154604051929750909550600160a060020a03169185156108fc02918691818181858888f1505042600b5550505060058501805460ff19166002179055600f8054906125ed9060018301613cc5565b50600354612601908463ffffffff613b6016565b6003556128d5565b60058501805460ff191660019081179091556000546040517ff7434ea9000000000000000000000000000000000000000000000000000000008152602060048201908152835460026101008287161502600019019091160460248301819052600160a060020a039093169363f7434ea99390928291604490910190849080156126d35780601f106126a8576101008083540402835291602001916126d3565b820191906000526020600020905b8154815290600101906020018083116126b657829003601f168201915b505092505050602060405180830381600087803b1580156126f357600080fd5b505af1158015612707573d6000803e3d6000fd5b505050506040513d602081101561271d57600080fd5b50516000546003870154604080517fc13517e100000000000000000000000000000000000000000000000000000000815260048101838152602482019283526001805460026000198284161561010002019091160460448401819052969850600160a060020a039095169563c13517e19589959490939091606490910190849080156127ea5780601f106127bf576101008083540402835291602001916127ea565b820191906000526020600020905b8154815290600101906020018083116127cd57829003601f168201915b505093505050506020604051808303818588803b15801561280a57600080fd5b505af115801561281e573d6000803e3d6000fd5b50505050506040513d602081101561283557600080fd5b50516002860155845461284b8660018301613cf1565b506004850154612861908363ffffffff613b6016565b6004860155600354612879908363ffffffff613b6016565b6003556002850154600054600d54600f546040805192835260001990910160208301528051600160a060020a03909316927f74baab670a4015ab2f1b467c5252a96141a2573f2908e58a92081e80d3cfde3d9281900390910190a35b5050505050565b303314612930576040805160e560020a62461bcd0281526020600482015260236024820152600080516020613f41833981519152604482015260e960020a6234b99702606482015290519081900360840190fd5b600f805460009190600019810190811061294657fe5b906000526020600020906008020160070154905061296f81600554613b3f90919063ffffffff16565b600b54420311156129ca576040805160e560020a62461bcd02815260206004820152601a60248201527f5375626d697373696f6e2074696d652068617320656e6465642e000000000000604482015290519081900360640190fd5b50600555565b303314612a24576040805160e560020a62461bcd0281526020600482015260236024820152600080516020613f41833981519152604482015260e960020a6234b99702606482015290519081900360840190fd5b600855565b600a5481565b60095481565b60075481565b60008060606000806000600e88815481101515612a5457fe5b906000526020600020906007020191508160020187815481101515612a7557fe5b60009182526020918290206004919091020180546001808301546003840154600280860180546040805161010097831615979097026000190190911692909204601f8101899004890286018901909252818552959750600160a060020a039094169591949360ff9091169291849190830182828015612b355780601f10612b0a57610100808354040283529160200191612b35565b820191906000526020600020905b815481529060010190602001808311612b1857829003601f168201915b505050505091509550955095509550505092959194509250565b600080600080600080600080600080600f6001600f8054905003815481101515612b7557fe5b9060005260206000209060080201995060018a60030180549050038b11151515612be9576040805160e560020a62461bcd02815260206004820152601e60248201527f5375626d697373696f6e4944206973206f7574206f6620626f756e64732e0000604482015290519081900360640190fd5b600160058b015460ff166002811115612bfe57fe5b14612c53576040805160e560020a62461bcd02815260206004820152601560248201527f4e6f206469737075746520746f2061707065616c2e0000000000000000000000604482015290519081900360640190fd5b60016000805460028d0154604080517f10f169e8000000000000000000000000000000000000000000000000000000008152600481019290925251600160a060020a03909216926310f169e8926024808401936020939083900390910190829087803b158015612cc257600080fd5b505af1158015612cd6573d6000803e3d6000fd5b505050506040513d6020811015612cec57600080fd5b50516002811115612cf957fe5b14612d4e576040805160e560020a62461bcd02815260206004820152601a60248201527f44697370757465206973206e6f742061707065616c61626c652e000000000000604482015290519081900360640190fd5b6000805460028c0154604080517fafe15cfb00000000000000000000000000000000000000000000000000000000815260048101929092528051600160a060020a039093169363afe15cfb936024808501949192918390030190829087803b158015612db957600080fd5b505af1158015612dcd573d6000803e3d6000fd5b505050506040513d6040811015612de357600080fd5b5080516020909101519099509750428911801590612e0057508742105b1515612e7c576040805160e560020a62461bcd02815260206004820152603260248201527f41707065616c2066656573206d75737420626520706169642077697468696e2060448201527f7468652061707065616c20706572696f642e0000000000000000000000000000606482015290519081900360840190fd5b6000805460028c0154604080517f1c3db16d000000000000000000000000000000000000000000000000000000008152600481019290925251600160a060020a0390921692631c3db16d926024808401936020939083900390910190829087803b158015612ee957600080fd5b505af1158015612efd573d6000803e3d6000fd5b505050506040513d6020811015612f1357600080fd5b5051965060018b01871415612f2c576009549550612fc8565b861515612f3d576008549550612fc8565b600289890304428a900310612fc2576040805160e560020a62461bcd02815260206004820152603e60248201527f546865206c6f736572206d7573742070617920647572696e672074686520666960448201527f7273742068616c66206f66207468652061707065616c20706572696f642e0000606482015290519081900360840190fd5b600a5495505b89548a906000198101908110612fda57fe5b600091825260208083208e84526001600590930201918201905260409091205490955060ff161561307b576040805160e560020a62461bcd02815260206004820152602160248201527f41707065616c206665652068617320616c7265616479206265656e207061696460448201527f2e00000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6000546002808c0154604080517ff23f16e6000000000000000000000000000000000000000000000000000000008152600481018381526024820192835260018054600019818316156101000201169590950460448301819052600160a060020a039096169563f23f16e695939192606401908490801561313d5780601f106131125761010080835404028352916020019161313d565b820191906000526020600020905b81548152906001019060200180831161312057829003601f168201915b50509350505050602060405180830381600087803b15801561315e57600080fd5b505af1158015613172573d6000803e3d6000fd5b505050506040513d602081101561318857600080fd5b505193506131ba6127106131a2868963ffffffff613b7d16565b8115156131ab57fe5b8691900463ffffffff613b3f16565b60008c8152602087905260409020549093506131e89034906131e390869063ffffffff613b6016565b613bae565b80925081935050508185600301600033600160a060020a0316600160a060020a0316815260200190815260200160002060008d815260200190815260200160002060008282540192505081905550818560000160008d815260200190815260200160002060008282540192505081905550828560000160008d8152602001908152602001600020541015156132ce5760008b815260018681016020526040909120805460ff19169091179055600c5460001914156132a657600c8b90555b60008b8152602086905260409020805460028701805490910190555460048601805490910190555b604051339082156108fc029083906000818181858888f1505060038054860190555050600c54600019148015915061330857508a600c5414155b8015613324575060008b815260018601602052604090205460ff165b1561347457600019600c8190556000546002808d0154604080517f49912f8800000000000000000000000000000000000000000000000000000000815260048101838152602482019283526001805480821615610100029098019097169490940460448201819052600160a060020a03909516956349912f88958b959193919260640190849080156133f75780601f106133cc576101008083540402835291602001916133f7565b820191906000526020600020905b8154815290600101906020018083116133da57829003601f168201915b505093505050506000604051808303818588803b15801561341757600080fd5b505af115801561342b573d6000803e3d6000fd5b50508c54925061344291508c905060018301613cf1565b506002850154613458908563ffffffff613b6016565b6002860155600354613470908563ffffffff613b6016565b6003555b5050505050505050505050565b600e80548290811061348f57fe5b6000918252602090912060079091020180546001820154600383015460048401546005850154600690950154600160a060020a0390941695509193909260ff9091169086565b6003546000906134ed9030319063ffffffff613b6016565b905090565b600f80546000918291600019810190811061350957fe5b90600052602060002090600802019150600e826003018581548110151561352c57fe5b906000526020600020015481548110151561354357fe5b90600052602060002090600702019050600260055481151561356157fe5b04600b544203111515156135e5576040805160e560020a62461bcd02815260206004820152603c60248201527f4c697374732063616e2062652077697468647261776e206f6e6c7920696e207460448201527f68652066697273742068616c66206f662074686520706572696f642e00000000606482015290519081900360840190fd5b60038101548314613666576040805160e560020a62461bcd02815260206004820152603460248201527f50726f7669646564206861736820646f65736e277420636f72726573706f6e6460448201527f2077697468207375626d697373696f6e2049442e000000000000000000000000606482015290519081900360840190fd5b8054600160a060020a031633146136ed576040805160e560020a62461bcd02815260206004820152603060248201527f43616e277420776974686472617720746865206c69737420637265617465642060448201527f627920736f6d656f6e6520656c73652e00000000000000000000000000000000606482015290519081900360840190fd5b60075460048201544203111561374d576040805160e560020a62461bcd02815260206004820152601c60248201527f5769746864726177696e672074696d6520686173207061737365642e00000000604482015290519081900360640190fd5b600382018054600019810190811061376157fe5b9060005260206000200154826003018581548110151561377d57fe5b60009182526020808320909101929092558481526006840190915260409020805460ff19169055600382018054906137b9906000198301613d1d565b50600181015460048301546137d39163ffffffff613b6016565b60048301556001810154604051339180156108fc02916000818181858888f19350505050158015613808573d6000803e3d6000fd5b5060018101546003546138209163ffffffff613b6016565b60035550505050565b600e5490565b303314613883576040805160e560020a62461bcd0281526020600482015260236024820152600080516020613f41833981519152604482015260e960020a6234b99702606482015290519081900360840190fd5b600f805460009190600019810190811061389957fe5b90600052602060002090600802016007015490506138c281600554613b3f90919063ffffffff16565b600b544203111561391d576040805160e560020a62461bcd02815260206004820152601a60248201527f5375626d697373696f6e2074696d652068617320656e6465642e000000000000604482015290519081900360640190fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0385161790558151613958906001906020850190613c47565b50505050565b60045481565b60055481565b3033146139be576040805160e560020a62461bcd0281526020600482015260236024820152600080516020613f41833981519152604482015260e960020a6234b99702606482015290519081900360840190fd5b600655565b60085481565b600254600160a060020a031681565b61271081565b600080600e838154811015156139f057fe5b60009182526020909120600260079092020101549392505050565b600b5481565b600080600f83815481101515613a2357fe5b60009182526020909120600890910201549392505050565b600f805460009182916000198101908110613a5257fe5b90600052602060002090600802019150826000141515613aec57600e8260030160018503815481101515613a8257fe5b9060005260206000200154815481101515613a9957fe5b6000918252602082206005600790920201908101805460ff1916600117905542600682015580546004850154604051929450600160a060020a039091169281156108fc029290818181858888f150505050505b6004820154600354613b039163ffffffff613b6016565b60035560006004830155600019600c5542600b5560058201805460ff191660021790556001808301849055600f8054916128d591908301613cc5565b600082820183811015613b5457600019613b56565b805b91505b5092915050565b600082821115613b7257506000613b77565b508082035b92915050565b600080831515613b905760009150613b59565b50828202828482811515613ba057fe5b0414613b5457600019613b56565b60008083831115613bc157839150613bc9565b508190508083035b9250929050565b6060604051908101604052806003906020820280388339509192915050565b815481835581811115610fc857600702816007028360005260206000209182019101610fc89190613d41565b815481835581811115610fc857600402816004028360005260206000209182019101610fc89190613daa565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613c8857805160ff1916838001178555613cb5565b82800160010185558215613cb5579182015b82811115613cb5578251825591602001919060010190613c9a565b50613cc1929150613dfe565b5090565b815481835581811115610fc857600802816008028360005260206000209182019101610fc89190613e18565b815481835581811115610fc857600502816005028360005260206000209182019101610fc89190613e75565b815481835581811115610fc857600083815260209020610fc8918101908301613dfe565b611d8691905b80821115613cc157805473ffffffffffffffffffffffffffffffffffffffff19168155600060018201819055613d806002830182613e99565b506000600382018190556004820181905560058201805460ff191690556006820155600701613d47565b611d8691905b80821115613cc157805473ffffffffffffffffffffffffffffffffffffffff19168155600060018201819055613de96002830182613ebd565b5060038101805460ff19169055600401613db0565b611d8691905b80821115613cc15760008155600101613e04565b611d8691905b80821115613cc1576000613e328282613f01565b60018201600090556002820160009055600382016000613e529190613f22565b5060006004820181905560058201805460ff191690556007820155600801613e1e565b611d8691905b80821115613cc1576000600282018190556004820155600501613e7b565b5080546000825560040290600052602060002090810190613eba9190613daa565b50565b50805460018160011615610100020316600290046000825580601f10613ee35750613eba565b601f016020900490600052602060002090810190613eba9190613dfe565b5080546000825560050290600052602060002090810190613eba9190613e75565b5080546000825590600052602060002090810190613eba9190613dfe56004f6e6c792074686520676f7665726e6f722063616e2065786563757465207468a165627a7a72305820ff4c53581a4265f92bb94a976815bd0783fb7ada04d5fcb6726b708c37347aac0029

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

000000000000000000000000988b3a538b618c7a603e1c11ab82cd16dbe280690000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000aac4244e292e80000000000000000000000000000000000000000000000000000000000000098ee00000000000000000000000000000000000000000000000000000000000093a800000000000000000000000000000000000000000000000000000000000000e10000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000004e20000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000005

-----Decoded View---------------
Arg [0] : _arbitrator (address): 0x988b3A538b618C7A603e1c11Ab82Cd16dbE28069
Arg [1] : _extraData (bytes): 0x00000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000005
Arg [2] : _submissionBaseDeposit (uint256): 12305000000000000000
Arg [3] : _submissionTimeout (uint256): 626400
Arg [4] : _executionTimeout (uint256): 604800
Arg [5] : _withdrawTimeout (uint256): 3600
Arg [6] : _sharedMultiplier (uint256): 10000
Arg [7] : _winnerMultiplier (uint256): 10000
Arg [8] : _loserMultiplier (uint256): 20000

-----Encoded View---------------
12 Constructor Arguments found :
Arg [0] : 000000000000000000000000988b3a538b618c7a603e1c11ab82cd16dbe28069
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [2] : 000000000000000000000000000000000000000000000000aac4244e292e8000
Arg [3] : 0000000000000000000000000000000000000000000000000000000000098ee0
Arg [4] : 0000000000000000000000000000000000000000000000000000000000093a80
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000e10
Arg [6] : 0000000000000000000000000000000000000000000000000000000000002710
Arg [7] : 0000000000000000000000000000000000000000000000000000000000002710
Arg [8] : 0000000000000000000000000000000000000000000000000000000000004e20
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000005


Deployed Bytecode Sourcemap

10557:33917:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18907:262;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18907:262:0;;;;;;;;;;;;21387:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21387:129:0;;;;;8811:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8811:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8811:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43088:199;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;43088:199:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;43088:199:0;;;;;;;;;;;;;;;;;14084:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14084:28:0;;;;;;;;;;;;;;;;;;;;20357:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;20357:129:0;;;;;19352:149;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;19352:149:0;;;;;35813:743;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;35813:743:0;;;;;;;21048:133;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21048:133:0;;;;;22911:2725;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22911:2725:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22911:2725:0;;;;-1:-1:-1;22911:2725:0;-1:-1:-1;22911:2725:0;;-1:-1:-1;22911:2725:0;;;;;;;;;-1:-1:-1;;22911:2725:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22911:2725:0;;;;-1:-1:-1;22911:2725:0;-1:-1:-1;22911:2725:0;;-1:-1:-1;22911:2725:0;;;;;;;;-1:-1:-1;;22911:2725:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22911:2725:0;;;;-1:-1:-1;22911:2725:0;-1:-1:-1;22911:2725:0;;-1:-1:-1;22911:2725:0;;;;;;;;;-1:-1:-1;;22911:2725:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22911:2725:0;;;;-1:-1:-1;22911:2725:0;-1:-1:-1;22911:2725:0;;-1:-1:-1;22911:2725:0;;;;;;;;-1:-1:-1;22911:2725:0;;-1:-1:-1;22911:2725:0;;-1:-1:-1;;;;;;;22911:2725:0;33879:1541;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;33879:1541:0;-1:-1:-1;;;;;33879:1541:0;;;;;;;;;;;40986:480;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;40986:480:0;;;;;-1:-1:-1;;;;;40986:480:0;;;;;44064:107;;8:9:-1;5:2;;;30:1;27;20:12;5:2;44064:107:0;;;;8776:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8776:28:0;;;;;;;;-1:-1:-1;;;;;8776:28:0;;;;;;;;;;;;;;15098:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15098:31:0;;;;38085:1134;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;38085:1134:0;;;;;;;;;13664:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13664:23:0;;;;15341:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15341:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14913:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14913:24:0;;;;41901:747;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;41901:747:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;41901:747:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;41901:747:0;;;;;;;;;;;;;;;;;;;;;22082:247;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;22082:247:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22082:247:0;;-1:-1:-1;22082:247:0;;-1:-1:-1;;;;;;;22082:247:0;27456:1540;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27456:1540:0;;;;19665:160;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;19665:160:0;;;;;20706:133;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;20706:133:0;;;;;14606:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14606:27:0;;;;14484:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14484:28:0;;;;14183:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14183:27:0;;;;39921:546;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;39921:546:0;;;;;;;;;;;;-1:-1:-1;;;;;39921:546:0;-1:-1:-1;;;;;39921:546:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;39921:546:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29373:3231;;;;;;15240:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15240:31:0;;;;;;;;;-1:-1:-1;;;;;15240:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39516:124;;8:9:-1;5:2;;;30:1;27;20:12;5:2;39516:124:0;;;;26045:1234;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26045:1234:0;;;;;;;43835:106;;8:9:-1;5:2;;;30:1;27;20:12;5:2;43835:106:0;;;;21723:219;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21723:219:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21723:219:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21723:219:0;;-1:-1:-1;21723:219:0;;-1:-1:-1;;;;;;;21723:219:0;13819:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13819:33:0;;;;13937:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13937:29:0;;;;19994:133;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;19994:133:0;;;;;14274:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14274:28:0;;;;13584:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13584:23:0;;;;14728:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14728:47:0;;;;43509:192;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;43509:192:0;;;;;14822:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14822:28:0;;;;44295:176;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;44295:176:0;;;;;18907:262;18996:8;;-1:-1:-1;;;;;18996:8:0;18982:10;:22;18974:91;;;;;-1:-1:-1;;;;;18974:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19076:8;:21;;-1:-1:-1;;19076:21:0;;;19126:19;;19113:48;;;;;;;;;;;;;;19147:13;;;;19113:48;;;;19147:13;;;;19113:48;;;;;;;;;;-1:-1:-1;19113:48:0;;-1:-1:-1;;;;19113:48:0;18907:262;;:::o;21387:129::-;15981:4;15990:10;15973:27;15965:75;;;;;-1:-1:-1;;;;;15965:75:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15965:75:0;;;;-1:-1:-1;;;;;15965:75:0;;;;;;;;;;;;;;;21474:15;:34;21387:129::o;8811:32::-;;;;;;;;;;;;;;;-1:-1:-1;;8811:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;43088:199::-;43151:21;43185:23;43211:8;43220;43211:18;;;;;;;;;;;;;;;;;;;;43185:44;;43257:7;:22;;43240:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43088:199;;;;:::o;14084:28::-;;;;:::o;20357:129::-;15981:4;15990:10;15973:27;15965:75;;;;;-1:-1:-1;;;;;15965:75:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15965:75:0;;;;-1:-1:-1;;;;;15965:75:0;;;;;;;;;;;;;;;20444:15;:34;20357:129::o;19352:149::-;15981:4;15990:10;15973:27;15965:75;;;;;-1:-1:-1;;;;;15965:75:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15965:75:0;;;;-1:-1:-1;;;;;15965:75:0;;;;;;;;;;;;;;;19447:21;:46;19352:149::o;35813:743::-;35902:8;35911:15;;35876:23;;35902:8;-1:-1:-1;;35911:19:0;;;35902:29;;;;;;;;;;;;;35972:10;;35902:29;;;;;;;;;-1:-1:-1;;;;;;35972:10:0;35950;:33;35942:79;;;;;-1:-1:-1;;;;;35942:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36058:21;36040:14;;;;;;:39;;;;;;;;;36032:90;;;;;-1:-1:-1;;;;;36032:90:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36152:22;;;:29;36141:40;;;36133:77;;;;;-1:-1:-1;;;;;36133:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;36227:12;;-1:-1:-1;;36227:32:0;36223:326;;36324:12;;36281:60;;;36339:1;36324:16;;;36281:60;;;36312:10;;36299;;36281:60;;;;;;;;;36356:43;36370:10;36382:12;;36397:1;36382:16;36356:13;:43::i;:::-;36223:326;;;36437:51;;;;;;;;36468:10;;36455;;36437:51;;;;;;;;;36503:34;36517:10;36529:7;36503:13;:34::i;:::-;35813:743;;;:::o;21048:133::-;15981:4;15990:10;15973:27;15965:75;;;;;-1:-1:-1;;;;;15965:75:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15965:75:0;;;;-1:-1:-1;;;;;15965:75:0;;;;;;;;;;;;;;;21137:16;:36;21048:133::o;22911:2725::-;23319:23;23385:29;23979:24;;:::i;:::-;24014:20;24050:6;24102:21;24164:31;24347:6;25466:14;15504:11;15518:8;15545:1;15527:8;:15;;;;:19;15518:29;;;;;;;;;;;;;;;;;;;;:44;;;15504:58;;15607:32;15632:6;15607:17;;:24;;:32;;;;:::i;:::-;15587:16;;15581:3;:22;:58;;15573:97;;;;;-1:-1:-1;;;;;15573:97:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;23093:13;;23075:14;;:31;23067:112;;;;;-1:-1:-1;;;;;23067:112:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23216:16;;23198:14;;:34;23190:118;;;;;-1:-1:-1;;;;;23190:118:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23345:8;23354:15;;-1:-1:-1;;23354:19:0;;;23345:29;;;;;;;;;;;;;;;;23319:55;;23417:11;23429;:20;;;;;;;;;;;:::i;:::-;23417:33;;;;;;;;;;;;;;;;;;;;;;;23461;;-1:-1:-1;;23461:33:0;23484:10;23461:33;;;23656:10;;:47;;;;;;;;;;;23461:33;23656:47;;;-1:-1:-1;;23656:47:0;;;;23461:33;23656:47;;;;;;;;;;;;23417:33;;-1:-1:-1;;;;;;23656:10:0;;;;;:26;;:47;;;;;;;;23461:33;;23656:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23656:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23656:47:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23656:47:0;23632:21;;:71;23611:18;;;:92;;;23722:9;:31;;23714:84;;;;;-1:-1:-1;;;;;23714:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24059:1;24050:10;;24045:836;24066:7;:14;24062:1;:18;24045:836;;;24136:9;24146:1;24136:12;;;;;;;;;;;;;;;;;;24126:23;;;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;24126:23:0;-1:-1:-1;24198:14:0;;;24213:23;;24102:47;;-1:-1:-1;24198:14:0;24213:23;24198:14;24213:23;;;;:::i;:::-;24198:39;;;;;;;;;;;;;;;;;;24164:73;;24273:7;24281:1;24273:10;;;;;;;;;;;;;;;;;;;;24252:31;;-1:-1:-1;;24252:31:0;-1:-1:-1;;;;;24252:31:0;;;;;;24318:9;;;;24325:1;;24318:9;;;;;;;;;;;;;;;24298:17;;;:29;24356:1;;-1:-1:-1;24342:115:0;24363:9;24373:1;24363:12;;;;;;;;;;;;;;;;;;24359:1;:16;24342:115;;;24415:5;24439:1;24421:15;:19;24415:26;;;;;;;;;;;;;;;;;;;;24401:8;24410:1;24401:11;;;;;;;;;;;;;;:40;;;;;;;;;;-1:-1:-1;24377:3:0;;;;;24342:115;;;24471:27;;;;:16;;;;:27;;;;;:::i;:::-;;24532:9;24542:1;24532:12;;;;;;;;;;;;;;;;;;24513:31;;;;24598:11;:18;;;;;;;;;;-1:-1:-1;;;;;24598:18:0;24618:11;:17;;;24637:11;:16;;24581:73;;;;;;-1:-1:-1;;;;;24581:73:0;-1:-1:-1;;;;;24581:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;24581:73:0;;;24571:84;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;-1:-1;;263:2;259:12;;;254:3;250:22;246:30;340:21;;;311:9;;295:26;;;377:20;365:33;;24571:84:0;;;;;;;;;;;;;24559:9;;;:96;;;24702:9;;;24678:34;;;;;-1:-1:-1;24670:87:0;;-1:-1:-1;;24670:87:0;;;;-1:-1:-1;;;;;24670:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24811:9;;;;;24822;;24794:38;;24811:9;24794:38;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;24794:38:0;;;;;;;;24784:49;;24794:38;;;;;24784:49;;;;;24794:38;24784:49;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;24784:49:0;;;;;;;;;;;;;24772:61;;24860:9;;;24848;;;:21;;;;-1:-1:-1;;;24855:1:0;24082:3;;;;;24045:836;;;24925:9;;24900:35;;;;:24;;;24925:9;24900:35;;;;;;;24899:36;24891:93;;;;;-1:-1:-1;;;;;24891:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25020:9;;24995:35;;;;:24;;;25020:9;24995:35;;;;;;:42;;-1:-1:-1;;24995:42:0;25033:4;24995:42;;;;;;25070:9;;25048:19;;;;:31;;;;25118:3;25090:25;;;;:31;;;;25154:18;;;;25132;;;:40;;;;;;;25211:11;:18;25183:22;;;27:10:-1;;23:18;;;45:23;;25183:51:0;;;;;;;-1:-1:-1;;25211:22:0;;;;25183:51;;;;;;25249:29;;:34;25245:106;;;25334:16;;25323:28;;:3;;:28;:10;:28;:::i;:::-;25298:22;;;:53;25245:106;25437:1;25419:8;:15;;;;:19;25407:10;-1:-1:-1;;;;;25369:84:0;25404:1;25383:11;:18;;;;:22;25369:84;25440:12;25369:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;25369:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25495:10;:18;;;25483:9;:30;25466:47;;25540:1;25528:9;:13;25524:58;;;25556:26;;:10;;:26;;;;;25572:9;;25556:26;;;;25572:9;25556:10;:26;;-1:-1:-1;;;;;25524:58:0;-1:-1:-1;;;25610:18:0;;;;;25595:11;:33;;;;;;;-1:-1:-1;;;;;;;;;;;22911:2725:0:o;33879:1541::-;33999:23;34054:19;34197:11;34025:8;34034;34025:18;;;;;;;;;;;;;;;;;;;;33999:44;;34076:7;:14;;34091:6;34076:22;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34135:15:0;34117:14;;;;;;:33;;;;;;;;;34109:77;;;;;-1:-1:-1;;;;;34109:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;34297:28;;;;:13;;;:28;;;;;;;;34296:29;34292:921;;;-1:-1:-1;;;;;;34351:33:0;;;;;;:19;;;:33;;;;;;;;:48;;;;;;;;;34292:921;;;34421:14;;;;:19;;:57;;-1:-1:-1;34445:13:0;34459:14;;;;-1:-1:-1;;34459:18:0;34445:33;;;;:13;;;:33;;;;;;;;34444:34;34421:57;34417:796;;;34702:1;34677:5;:22;;;:26;:161;;34837:1;34677:161;;;34795:22;;;;34775:16;;;;-1:-1:-1;;;;;34724:33:0;;;;;;:19;;;:33;;;;;;;;:48;;;;;;;;;:67;34723:94;;;;;;;;34677:161;34668:170;;34417:796;;;34882:13;34877:1;34860:7;:14;;;:18;:35;34856:357;;;35058:1;35026:29;;;;;;;;;;;:33;:175;;35200:1;35026:175;;;35151:14;:29;;;;;;;;;;;;35131:16;;;;-1:-1:-1;;;;;35080:33:0;;;;:19;;;:33;;;;;:48;;;;;;;;;:67;35079:101;;;;;;;;35026:175;35017:184;;34856:357;-1:-1:-1;;;;;35223:33:0;;35274:1;35223:33;;;:19;;;:33;;;;;;;;:48;;;;;;;;;:52;;;35288:25;;;;;;35306:6;;35288:25;;35274:1;35288:25;35306:6;35223:33;35288:25;;-1:-1:-1;;35386:11:0;;:26;;-1:-1:-1;35386:11:0;-1:-1:-1;35405:6:0;;-1:-1:-1;35386:26:0;:18;:26;:::i;:::-;35372:11;:40;-1:-1:-1;;;;;;;33879:1541:0:o;40986:480::-;41116:20;41149:23;41204:19;41334:6;41175:8;41184;41175:18;;;;;;;;;;;;;;;;;;;;41149:44;;41226:7;:14;;41241:6;41226:22;;;;;;;;;;;;;;;;;;;;41204:44;;41288:7;:22;;:29;;;;41277:41;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;41277:41:0;;41261:57;;41343:1;41334:10;;41329:130;41350:13;:20;41346:1;:24;41329:130;;;-1:-1:-1;;;;;41411:33:0;;;;;;:19;;;:33;;;;;;;;:36;;;;;;;;;41392:16;;:13;;41445:1;;41392:16;;;;;;;;;;;;;;:55;41372:3;;41329:130;;;40986:480;;;;;;;;:::o;44064:107::-;44144:8;:15;-1:-1:-1;;44144:19:0;44064:107;;:::o;8776:28::-;;;-1:-1:-1;;;;;8776:28:0;;:::o;15098:31::-;;;;:::o;38085:1134::-;38176:29;38448:6;38554:31;38620:20;38764:15;38208:11;38220:7;38208:20;;;;;;;;;;;;;;;;;;;;;;;38247:19;;;;38208:20;;-1:-1:-1;38247:19:0;;38239:72;;;;;;;-1:-1:-1;;;;;38239:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38363:16;;;38336:23;;;;38330:3;:29;:49;;38322:110;;;;;-1:-1:-1;;;;;38322:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38457:7;38448:16;;38443:769;38470:14;;;:21;38466:25;;:66;;;;-1:-1:-1;38496:11:0;;;:35;;;38525:6;38515:7;:16;38511:1;:20;38496:35;38443:769;;;38588:14;;;:17;;38603:1;;38588:17;;;;;;;;;;;;;;;;38554:51;;38643:20;:18;:20::i;:::-;38683;;;;38620:43;;-1:-1:-1;38683:20:0;;38682:21;:61;;;;;38728:15;38707:11;:17;;;:36;;38682:61;38678:523;;;38782:11;:18;;;;;;;;;;-1:-1:-1;;;;;38782:18:0;-1:-1:-1;;;;;38782:23:0;38812:11;:17;;;38831:11;:16;;38782:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;38996:18:0;;;39010:4;38996:18;38992:194;;;39048:20;;;;;;39047:21;39039:77;;;;;-1:-1:-1;;;;;39039:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39139:20;;;:27;;-1:-1:-1;;39139:27:0;39162:4;39139:27;;;38992:194;38534:3;;;;;38443:769;;;38085:1134;;;;;;;;:::o;13664:23::-;;;;:::o;15341:25::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15341:25:0;;;;;;;;;;:::o;14913:24::-;;;;:::o;41901:747::-;42013:15;42043:14;42072:15;42102:21;42151:23;42206:19;42393:6;42177:8;42186;42177:18;;;;;;;;;;;;;;;;;;;;42151:44;;42228:7;:14;;42243:6;42228:22;;;;;;;;;;;;;;;;;;;;42206:44;;42283:7;:22;;:29;;;;42272:41;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;42272:41:0;-1:-1:-1;42345:22:0;;;:29;42334:41;;;;;;;;;;;;;;;;42261:52;;-1:-1:-1;42334:41:0;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;42334:41:0;;42324:51;;42402:1;42393:10;;42388:159;42409:22;;;:29;42405:33;;42388:159;;;42474:14;:17;;;;;;;;;;;42460:11;;:8;;42489:1;;42460:11;;;;;;;;;;;;;;;:31;;;;42519:16;;;;:13;;;:16;;;;;;;42506:10;;42519:16;;;;;42506:7;;42533:1;;42506:10;;;;;;:29;;;:10;;;;;;;;;;:29;42440:3;;42388:159;;;-1:-1:-1;42572:16:0;;;;42618:22;;;;;41901:747;;;;-1:-1:-1;42572:16:0;-1:-1:-1;;;;41901:747:0:o;22082:247::-;15981:4;15990:10;15973:27;15965:75;;;;;-1:-1:-1;;;;;15965:75:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15965:75:0;;;;-1:-1:-1;;;;;15965:75:0;;;;;;;;;;;;;;;22173:8;;-1:-1:-1;;;;;22173:8:0;:22;22165:60;;;;;-1:-1:-1;;;;;22165:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;22236:19;:21;;;;;;;;22273:48;;;;;;;;;;;;;;;;;22307:13;;22273:48;;;;;;;;;;;;;;22236:19;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;22273:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22082:247;:::o;27456:1540::-;27525:23;27933:29;28103:15;28491:20;15739:11;15753:8;15780:1;15762:8;:15;;;;:19;15753:29;;;;;;;;;;;;;;;;;;;;:44;;;15739:58;;15841:32;15866:6;15841:17;;:24;;:32;;;;:::i;:::-;15822:16;;15816:3;:22;:57;15808:104;;;;;-1:-1:-1;;;;;15808:104:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27551:8;27560:15;;-1:-1:-1;;27560:19:0;;;27551:29;;;;;;;;;;;;;;;;;;;-1:-1:-1;27599:14:0;;;;;;:34;;;;;;;;;27591:102;;;;;-1:-1:-1;;;;;27591:102:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27708:22;;;:29;:34;27704:1285;;;27778:3;27759:16;:22;27796:14;;;:32;;-1:-1:-1;;27796:32:0;27813:15;27796:32;;;27843:8;:17;;;;;27796:32;27843:17;;;:::i;:::-;;27704:1285;;;27882:22;;;:29;27915:1;27882:34;27878:1111;;;27965:11;27977:7;:22;;28000:1;27977:25;;;;;;;;;;;;;;;;;;27965:38;;;;;;;;;;;;;;;;;28018:19;27965:38;;;;;28018:19;;;:26;;-1:-1:-1;;28018:26:0;28040:4;28018:26;;;28085:3;28059:23;;;:29;28121:18;;;;;28154:22;;;;28191:20;;:37;;27965:38;;-1:-1:-1;28121:18:0;;-1:-1:-1;;;;;;28191:20:0;;:37;;;;;28121:18;;28191:37;27965:38;28191:37;28121:18;28191:20;:37;;-1:-1:-1;;28262:3:0;28243:16;:22;-1:-1:-1;;;28280:14:0;;;:32;;-1:-1:-1;;28280:32:0;28297:15;28280:32;;;28327:8;:17;;;;;28280:32;28327:17;;;:::i;:::-;-1:-1:-1;28375:11:0;;:30;;28394:10;28375:30;:18;:30;:::i;:::-;28361:11;:44;27878:1111;;;28438:14;;;:38;;-1:-1:-1;;28438:38:0;28455:21;28438:38;;;;;;-1:-1:-1;28514:10:0;:47;;;;;;;;;;;;;;;:10;:47;;;;;-1:-1:-1;;28514:47:0;;;;;;;;;;;-1:-1:-1;;;;;28514:10:0;;;;:26;;28455:21;;28514:47;;;;;;;28455:21;;28514:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28514:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28514:47:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28514:47:0;28596:10;;28644:22;;;:29;28596:99;;;;;;;;;;;;;;;;;;:10;:99;;;-1:-1:-1;;28596:99:0;;;;:10;:99;;;;;;;;;;;;28514:47;;-1:-1:-1;;;;;;28596:10:0;;;;:24;;28514:47;;28644:29;28596:10;;:99;;;;;;;:10;;:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28596:99:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28596:99:0;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28596:99:0;28576:17;;;:119;28710:23;;;28576:7;28710:23;;;;:::i;:::-;-1:-1:-1;28769:18:0;;;;:42;;28795:15;28769:42;:25;:42;:::i;:::-;28748:18;;;:63;28842:11;;:35;;28861:15;28842:35;:18;:35;:::i;:::-;28828:11;:49;28917:17;;;;28905:10;;28936:19;;28957:8;:15;28897:80;;;;;;-1:-1:-1;;28957:19:0;;;28897:80;;;;;;-1:-1:-1;;;;;28905:10:0;;;;28897:80;;;;;;;;;;27878:1111;27456:1540;;;;;:::o;19665:160::-;15981:4;15990:10;15973:27;15965:75;;;;;-1:-1:-1;;;;;15965:75:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15965:75:0;;;;-1:-1:-1;;;;;15965:75:0;;;;;;;;;;;;;;;15518:8;15527:15;;15504:11;;15518:8;-1:-1:-1;;15527:19:0;;;15518:29;;;;;;;;;;;;;;;;:44;;;15504:58;;15607:32;15632:6;15607:17;;:24;;:32;;;;:::i;:::-;15587:16;;15581:3;:22;:58;;15573:97;;;;;-1:-1:-1;;;;;15573:97:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19779:17:0;:38;19665:160::o;20706:133::-;15981:4;15990:10;15973:27;15965:75;;;;;-1:-1:-1;;;;;15965:75:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15965:75:0;;;;-1:-1:-1;;;;;15965:75:0;;;;;;;;;;;;;;;20795:16;:36;20706:133::o;14606:27::-;;;;:::o;14484:28::-;;;;:::o;14183:27::-;;;;:::o;39921:546::-;40049:14;40078:10;40103;40128:13;40169:29;40232:31;40201:11;40213:7;40201:20;;;;;;;;;;;;;;;;;;;;40169:52;;40266:10;:14;;40281:17;40266:33;;;;;;;;;;;;;;;;;;;;;;;;;40332:18;;;40365:17;;;;40428:20;;;;40397:16;;;;40310:149;;;;;40332:18;40310:149;;;;;;;;-1:-1:-1;;40310:149:0;;;;;;;;;;;;;;;;;;;;;;;;;;40266:33;;-1:-1:-1;;;;;;40332:18:0;;;;40365:17;;40397:16;40428:20;;;;;40310:149;40397:16;;40310:149;;;40397:16;40310:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39921:546;;;;;;;;;:::o;29373:3231::-;29439:23;29826:22;29850:20;30089:11;30157:15;30747:19;30907:15;30997:14;31190:17;31241;29465:8;29492:1;29474:8;:15;;;;:19;29465:29;;;;;;;;;;;;;;;;;;;;29439:55;;29562:1;29530:7;:22;;:29;;;;:33;29513:13;:50;;29505:93;;;;;;;-1:-1:-1;;;;;29505:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;29635:21;29617:14;;;;;;:39;;;;;;;;;29609:73;;;;;-1:-1:-1;;;;;29609:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;29748:35;29701:10;;;29726:17;;;;29701:43;;;;;;;;;;;;;;-1:-1:-1;;;;;29701:10:0;;;;:24;;:43;;;;;;;;;;;;;;;;;:10;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;29701:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29701:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29701:43:0;:82;;;;;;;;;29693:121;;;;;-1:-1:-1;;;;;29693:121:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;29874:10;;;29898:17;;;;29874:42;;;;;;;;;;;;;;;-1:-1:-1;;;;;29874:10:0;;;;:23;;:42;;;;;;;;;;;;;;;:10;:42;;;5:2:-1;;;;30:1;27;20:12;5:2;29874:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29874:42:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29874:42:0;;;;;;;;;-1:-1:-1;29874:42:0;-1:-1:-1;29949:3:0;:24;-1:-1:-1;29949:24:0;;;:49;;;29983:15;29977:3;:21;29949:49;29927:149;;;;;;;-1:-1:-1;;;;;29927:149:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30103:10;;;30128:17;;;;30103:43;;;;;;;;;;;;;;-1:-1:-1;;;;;30103:10:0;;;;:24;;:43;;;;;;;;;;;;;;;;;:10;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;30103:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30103:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30103:43:0;;-1:-1:-1;30381:1:0;30365:17;;30355:27;;30351:384;;;30412:16;;30399:29;;30351:384;;;30450:11;;30446:289;;;30491:16;;30478:29;;30446:289;;;30612:1;30575:35;;;30574:39;30548:3;:23;;;:65;30540:140;;;;;-1:-1:-1;;;;;30540:140:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30708:15;;30695:28;;30446:289;30784:21;;30769:7;;-1:-1:-1;;30784:25:0;;;30769:41;;;;;;;;;;;;;;30830:28;;;:13;30769:41;;;;;30830:13;;;:28;;;;;;;30769:41;;-1:-1:-1;30830:28:0;;30829:29;30821:75;;;;;-1:-1:-1;;;;;30821:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30925:10;;30947:17;;;;;30925:61;;;;;;;;;;;;;;;;;;:10;:61;;-1:-1:-1;;30925:61:0;;;;:10;:61;;;;;;;;;;;;;-1:-1:-1;;;;;30925:10:0;;;;:21;;:10;:61;;;;;:10;;:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30925:61:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30925:61:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30925:61:0;;-1:-1:-1;31014:71:0;14770:5;31033:29;30925:61;31051:10;31033:29;:17;:29;:::i;:::-;31032:52;;;;;;;31014:10;;31032:52;;31014:71;:17;:71;:::i;:::-;31381:14;:29;;;;;;;;;;;30997:88;;-1:-1:-1;31331:81:0;;31353:9;;31364:47;;30997:88;;31364:47;:16;:47;:::i;:::-;31331:21;:81::i;:::-;31300:112;;;;;;;;31473:12;31423:5;:19;;:31;31443:10;-1:-1:-1;;;;;31423:31:0;-1:-1:-1;;;;;31423:31:0;;;;;;;;;;;;:46;31455:13;31423:46;;;;;;;;;;;;:62;;;;;;;;;;;31529:12;31496:5;:14;;:29;31511:13;31496:29;;;;;;;;;;;;:45;;;;;;;;;;;31701:9;31668:5;:14;;:29;31683:13;31668:29;;;;;;;;;;;;:42;;31664:344;;;31727:28;;;;31758:4;31727:13;;;:28;;;;;;:35;;-1:-1:-1;;31727:35:0;;;;;;31781:12;;-1:-1:-1;;31781:32:0;31777:83;;;31832:12;:28;;;31777:83;31897:14;:29;;;;;;;;;;;;31877:16;;;:49;;;;;;;31967:29;31941:22;;;:55;;;;;;;31664:344;32056:29;;:10;;:29;;;;;32072:12;;32056:29;;;;32072:12;32056:10;:29;;-1:-1:-1;;32096:11:0;:27;;;;;;-1:-1:-1;;32140:12:0;;-1:-1:-1;;32140:32:0;;;;-1:-1:-1;32140:65:0;;;32192:13;32176:12;;:29;;32140:65;:97;;;;-1:-1:-1;32209:28:0;;;;:13;;;:28;;;;;;;;32140:97;32136:461;;;-1:-1:-1;;32298:12:0;:31;;;32344:10;;32380:17;;;;;32344:75;;;;;;;;;;;;;;;;;;:10;:75;;;;;;:10;:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;32344:10:0;;;;:17;;32368:10;;32344;;:75;;;;;:10;;:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32344:75:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;32434:23:0;;;-1:-1:-1;32434:23:0;;-1:-1:-1;32434:7:0;;-1:-1:-1;32434:23:0;;;;:::i;:::-;-1:-1:-1;32491:16:0;;;;:35;;32515:10;32491:35;:23;:35;:::i;:::-;32472:16;;;:54;32555:11;;:30;;32574:10;32555:30;:18;:30;:::i;:::-;32541:11;:44;32136:461;29373:3231;;;;;;;;;;;:::o;15240:31::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15240:31:0;;;;-1:-1:-1;15240:31:0;;;;;;;;;;:::o;39516:124::-;39620:11;;39567:4;;39591:41;;39599:4;39591:21;;:41;:28;:41;:::i;:::-;39584:48;;39516:124;:::o;26045:1234::-;26161:8;26170:15;;26135:23;;;;-1:-1:-1;;26170:19:0;;;26161:29;;;;;;;;;;;;;;;;26135:55;;26233:11;26245:7;:22;;26268:13;26245:37;;;;;;;;;;;;;;;;;;26233:50;;;;;;;;;;;;;;;;;;;;26201:82;;26348:1;26328:17;;:21;;;;;;;;26308:16;;26302:3;:22;:47;;26294:120;;;;;;;-1:-1:-1;;;;;26294:120:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26578:19;;;;:32;;26570:97;;;;;-1:-1:-1;;;;;26570:97:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26686:20;;-1:-1:-1;;;;;26686:20:0;26710:10;26686:34;26678:95;;;;;-1:-1:-1;;;;;26678:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26827:15;;26798:25;;;;26792:3;:31;:50;;26784:91;;;;;-1:-1:-1;;;;;26784:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;26926:22;;;26949:29;;-1:-1:-1;;26949:33:0;;;26926:57;;;;;;;;;;;;;;26886:7;:22;;26909:13;26886:37;;;;;;;;;;;;;;;;;;;;;:97;;;;26994:35;;;:24;;;:35;;;;;;:43;;-1:-1:-1;;26994:43:0;;;27048:22;;;:31;;;;;-1:-1:-1;;27048:31:0;;;:::i;:::-;-1:-1:-1;27137:18:0;;;;27111;;;;:45;;;:25;:45;:::i;:::-;27090:18;;;:66;27187:18;;;;27167:39;;:10;;:39;;;;;;;;;27187:18;27167:10;:39;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;27252:18:0;;;;27233:11;;:38;;;:18;:38;:::i;:::-;27219:11;:52;-1:-1:-1;;;;26045:1234:0:o;43835:106::-;43915:11;:18;43835:106;:::o;21723:219::-;15981:4;15990:10;15973:27;15965:75;;;;;-1:-1:-1;;;;;15965:75:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15965:75:0;;;;-1:-1:-1;;;;;15965:75:0;;;;;;;;;;;;;;;15518:8;15527:15;;15504:11;;15518:8;-1:-1:-1;;15527:19:0;;;15518:29;;;;;;;;;;;;;;;;:44;;;15504:58;;15607:32;15632:6;15607:17;;:24;;:32;;;;:::i;:::-;15587:16;;15581:3;:22;:58;;15573:97;;;;;-1:-1:-1;;;;;15573:97:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;21857:10;:24;;-1:-1:-1;;21857:24:0;-1:-1:-1;;;;;21857:24:0;;;;;21892:42;;;;-1:-1:-1;;21892:42:0;;;;;:::i;:::-;;16042:1;21723:219;;:::o;13819:33::-;;;;:::o;13937:29::-;;;;:::o;19994:133::-;15981:4;15990:10;15973:27;15965:75;;;;;-1:-1:-1;;;;;15965:75:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15965:75:0;;;;-1:-1:-1;;;;;15965:75:0;;;;;;;;;;;;;;;20083:16;:36;19994:133::o;14274:28::-;;;;:::o;13584:23::-;;;-1:-1:-1;;;;;13584:23:0;;:::o;14728:47::-;14770:5;14728:47;:::o;43509:192::-;43577:12;43602:29;43634:11;43646:7;43634:20;;;;;;;;;;;;;;;;;;43672:14;43634:20;;;;;43672:14;:21;;43509:192;-1:-1:-1;;;43509:192:0:o;14822:28::-;;;;:::o;44295:176::-;44363:4;44380:23;44406:8;44415;44406:18;;;;;;;;;;;;;;;;;;;;;;;44442:21;;44295:176;-1:-1:-1;;;44295:176:0:o;36902:783::-;37002:8;37011:15;;36976:23;;;;-1:-1:-1;;37011:19:0;;;37002:29;;;;;;;;;;;;;;;;36976:55;;37046:7;37057:1;37046:12;;37042:270;;;37107:11;37119:7;:22;;37152:1;37142:7;:11;37119:35;;;;;;;;;;;;;;;;;;37107:48;;;;;;;;;;;;;;;;;37170:19;37107:48;;;;;37170:19;;;:26;;-1:-1:-1;;37170:26:0;37192:4;37170:26;;;37237:3;37211:23;;;:29;37255:20;;37281:18;;;;37255:45;;37107:48;;-1:-1:-1;;;;;;37255:20:0;;;;:45;;;;;;;37107:48;37255:45;37281:18;37255:20;:45;;-1:-1:-1;;;;;37042:270:0;37442:18;;;;37423:11;;:38;;;:18;:38;:::i;:::-;37409:11;:52;37495:1;37474:18;;;:22;-1:-1:-1;;37507:12:0;:31;37568:3;37549:16;:22;37582:14;;;:32;;-1:-1:-1;;37582:32:0;37599:15;37582:32;;;-1:-1:-1;37625:14:0;;;:24;;;37660:8;:17;;;;;:8;:17;;;:::i;196:138::-;253:4;279:7;;;304;;;;:22;;-1:-1:-1;;304:22:0;;;314:1;304:22;297:29;;196:138;;;;;;:::o;421:159::-;478:4;504:2;499;:7;495:77;;;-1:-1:-1;528:1:0;521:8;;495:77;-1:-1:-1;565:7:0;;;495:77;421:159;;;;:::o;684:412::-;741:4;;984:7;;980:34;;;1013:1;1006:8;;;;980:34;-1:-1:-1;1036:7:0;;;1041:2;1036;:7;1061:6;;;;;;;;:12;:27;;-1:-1:-1;;1061:27:0;;32999:356;33118:10;33130:14;33184:10;33166:15;:28;33162:186;;;33217:10;33209:18;;33162:186;;;-1:-1:-1;33266:15:0;;-1:-1:-1;33308:28:0;;;33162:186;32999:356;;;;;:::o;10557:33917::-;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;10557:33917:0;;;-1:-1:-1;;10557:33917:0:o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10557:33917:0;;;-1:-1:-1;10557:33917:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;10557:33917:0;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10557:33917:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;10557:33917:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10557:33917:0;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10557:33917:0;;;;;-1:-1:-1;;10557:33917:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10557:33917:0;;;;;;;;;;;;-1:-1:-1;;10557:33917:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i

Swarm Source

bzzr://ff4c53581a4265f92bb94a976815bd0783fb7ada04d5fcb6726b708c37347aac

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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