{
  "contractName": "Arbitrable",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "arbitratorExtraData",
      "outputs": [
        {
          "name": "",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "arbitrator",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_arbitrator",
          "type": "address"
        },
        {
          "name": "_arbitratorExtraData",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "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"
        }
      ],
      "name": "Dispute",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_arbitrator",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_disputeID",
          "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"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_disputeID",
          "type": "uint256"
        },
        {
          "name": "_ruling",
          "type": "uint256"
        }
      ],
      "name": "rule",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "/**\n *  @title Arbitrable\n *  @author Clément Lesaege - <clement@lesaege.com>\n *  Bug Bounties: This code hasn't undertaken a bug bounty program yet.\n */\n\npragma solidity ^0.4.15;\n\nimport \"./Arbitrator.sol\";\n\n/** @title Arbitrable\n *  Arbitrable abstract contract.\n *  When developing arbitrable contracts, we need to:\n *  -Define the action taken when a ruling is received by the contract. We should do so in executeRuling.\n *  -Allow dispute creation. For this a function must:\n *      -Call arbitrator.createDispute.value(_fee)(_choices,_extraData);\n *      -Create the event Dispute(_arbitrator,_disputeID,_rulingOptions);\n */\ncontract Arbitrable{\n    Arbitrator public arbitrator;\n    bytes public arbitratorExtraData; // Extra data to require particular dispute and appeal behaviour.\n\n    modifier onlyArbitrator {require(msg.sender == address(arbitrator), \"Can only be called by the arbitrator.\"); _;}\n\n    /** @dev To be emmited when meta-evidence is submitted.\n     *  @param _metaEvidenceID Unique identifier of meta-evidence.\n     *  @param _evidence A link to the meta-evidence JSON.\n     */\n    event MetaEvidence(uint indexed _metaEvidenceID, string _evidence);\n\n    /** @dev To be emmited when a dispute is created to link the correct meta-evidence to the disputeID\n     *  @param _arbitrator The arbitrator of the contract.\n     *  @param _disputeID ID of the dispute in the Arbitrator contract.\n     *  @param _metaEvidenceID Unique identifier of meta-evidence.\n     */\n    event Dispute(Arbitrator indexed _arbitrator, uint indexed _disputeID, uint _metaEvidenceID);\n\n    /** @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).\n     *  @param _arbitrator The arbitrator of the contract.\n     *  @param _disputeID ID of the dispute in the Arbitrator contract.\n     *  @param _party The address of the party submiting the evidence. Note that 0x0 refers to evidence not submitted by any party.\n     *  @param _evidence A URI to the evidence JSON file whose name should be its keccak256 hash followed by .json.\n     */\n    event Evidence(Arbitrator indexed _arbitrator, uint indexed _disputeID, address indexed _party, string _evidence);\n\n    /** @dev To be raised when a ruling is given.\n     *  @param _arbitrator The arbitrator giving the ruling.\n     *  @param _disputeID ID of the dispute in the Arbitrator contract.\n     *  @param _ruling The ruling which was given.\n     */\n    event Ruling(Arbitrator indexed _arbitrator, uint indexed _disputeID, uint _ruling);\n\n    /** @dev Constructor. Choose the arbitrator.\n     *  @param _arbitrator The arbitrator of the contract.\n     *  @param _arbitratorExtraData Extra data for the arbitrator.\n     */\n    constructor(Arbitrator _arbitrator, bytes _arbitratorExtraData) public {\n        arbitrator = _arbitrator;\n        arbitratorExtraData = _arbitratorExtraData;\n    }\n\n    /** @dev Give a ruling for a dispute. Must be called by the arbitrator.\n     *  The purpose of this function is to ensure that the address calling it has the right to rule on the contract.\n     *  @param _disputeID ID of the dispute in the Arbitrator contract.\n     *  @param _ruling Ruling given by the arbitrator. Note that 0 is reserved for \"Not able/wanting to make a decision\".\n     */\n    function rule(uint _disputeID, uint _ruling) public onlyArbitrator {\n        emit Ruling(Arbitrator(msg.sender),_disputeID,_ruling);\n\n        executeRuling(_disputeID,_ruling);\n    }\n\n\n    /** @dev Execute a ruling of a dispute.\n     *  @param _disputeID ID of the dispute in the Arbitrator contract.\n     *  @param _ruling Ruling given by the arbitrator. Note that 0 is reserved for \"Not able/wanting to make a decision\".\n     */\n    function executeRuling(uint _disputeID, uint _ruling) internal;\n}\n",
  "sourcePath": "/private/tmp/kleros-interaction/contracts/standard/arbitration/Arbitrable.sol",
  "ast": {
    "absolutePath": "/private/tmp/kleros-interaction/contracts/standard/arbitration/Arbitrable.sol",
    "exportedSymbols": {
      "Arbitrable": [
        595
      ]
    },
    "id": 596,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 496,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".15"
        ],
        "nodeType": "PragmaDirective",
        "src": "156:24:2"
      },
      {
        "absolutePath": "/private/tmp/kleros-interaction/contracts/standard/arbitration/Arbitrator.sol",
        "file": "./Arbitrator.sol",
        "id": 497,
        "nodeType": "ImportDirective",
        "scope": 596,
        "sourceUnit": 4022,
        "src": "182:26:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": "@title Arbitrable\n Arbitrable abstract contract.\n When developing arbitrable contracts, we need to:\n -Define the action taken when a ruling is received by the contract. We should do so in executeRuling.\n -Allow dispute creation. For this a function must:\n     -Call arbitrator.createDispute.value(_fee)(_choices,_extraData);\n     -Create the event Dispute(_arbitrator,_disputeID,_rulingOptions);",
        "fullyImplemented": false,
        "id": 595,
        "linearizedBaseContracts": [
          595
        ],
        "name": "Arbitrable",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 499,
            "name": "arbitrator",
            "nodeType": "VariableDeclaration",
            "scope": 595,
            "src": "657:28:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Arbitrator_$4021",
              "typeString": "contract Arbitrator"
            },
            "typeName": {
              "contractScope": null,
              "id": 498,
              "name": "Arbitrator",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4021,
              "src": "657:10:2",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Arbitrator_$4021",
                "typeString": "contract Arbitrator"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 501,
            "name": "arbitratorExtraData",
            "nodeType": "VariableDeclaration",
            "scope": 595,
            "src": "691:32:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes_storage",
              "typeString": "bytes"
            },
            "typeName": {
              "id": 500,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "691:5:2",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 514,
              "nodeType": "Block",
              "src": "820:89:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 509,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 504,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20639,
                            "src": "829:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "829:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 507,
                              "name": "arbitrator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 499,
                              "src": "851:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Arbitrator_$4021",
                                "typeString": "contract Arbitrator"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_Arbitrator_$4021",
                                "typeString": "contract Arbitrator"
                              }
                            ],
                            "id": 506,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "843:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 508,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "843:19:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "829:33:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "43616e206f6e6c792062652063616c6c6564206279207468652061726269747261746f722e",
                        "id": 510,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "864:39:2",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8acf8e40ecf8fce4ddda0c11f538911b40cf953f2780b0c76f2e50588a0db13b",
                          "typeString": "literal_string \"Can only be called by the arbitrator.\""
                        },
                        "value": "Can only be called by the arbitrator."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_8acf8e40ecf8fce4ddda0c11f538911b40cf953f2780b0c76f2e50588a0db13b",
                          "typeString": "literal_string \"Can only be called by the arbitrator.\""
                        }
                      ],
                      "id": 503,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        20642,
                        20643
                      ],
                      "referencedDeclaration": 20643,
                      "src": "821:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 511,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "821:83:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 512,
                  "nodeType": "ExpressionStatement",
                  "src": "821:83:2"
                },
                {
                  "id": 513,
                  "nodeType": "PlaceholderStatement",
                  "src": "906:1:2"
                }
              ]
            },
            "documentation": null,
            "id": 515,
            "name": "onlyArbitrator",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 502,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "820:0:2"
            },
            "src": "796:113:2",
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "documentation": "@dev To be emmited when meta-evidence is submitted.\n @param _metaEvidenceID Unique identifier of meta-evidence.\n @param _evidence A link to the meta-evidence JSON.",
            "id": 521,
            "name": "MetaEvidence",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 520,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 517,
                  "indexed": true,
                  "name": "_metaEvidenceID",
                  "nodeType": "VariableDeclaration",
                  "scope": 521,
                  "src": "1128:28:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 516,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1128:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 519,
                  "indexed": false,
                  "name": "_evidence",
                  "nodeType": "VariableDeclaration",
                  "scope": 521,
                  "src": "1158:16:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 518,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1158:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1127:48:2"
            },
            "src": "1109:67:2"
          },
          {
            "anonymous": false,
            "documentation": "@dev To be emmited when a dispute is created to link the correct meta-evidence to the disputeID\n @param _arbitrator The arbitrator of the contract.\n @param _disputeID ID of the dispute in the Arbitrator contract.\n @param _metaEvidenceID Unique identifier of meta-evidence.",
            "id": 529,
            "name": "Dispute",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 528,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 523,
                  "indexed": true,
                  "name": "_arbitrator",
                  "nodeType": "VariableDeclaration",
                  "scope": 529,
                  "src": "1506:30:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Arbitrator_$4021",
                    "typeString": "contract Arbitrator"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 522,
                    "name": "Arbitrator",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4021,
                    "src": "1506:10:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Arbitrator_$4021",
                      "typeString": "contract Arbitrator"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 525,
                  "indexed": true,
                  "name": "_disputeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 529,
                  "src": "1538:23:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 524,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1538:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 527,
                  "indexed": false,
                  "name": "_metaEvidenceID",
                  "nodeType": "VariableDeclaration",
                  "scope": 529,
                  "src": "1563:20:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 526,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1563:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1505:79:2"
            },
            "src": "1492:93:2"
          },
          {
            "anonymous": false,
            "documentation": "@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).\n @param _arbitrator The arbitrator of the contract.\n @param _disputeID ID of the dispute in the Arbitrator contract.\n @param _party The address of the party submiting the evidence. Note that 0x0 refers to evidence not submitted by any party.\n @param _evidence A URI to the evidence JSON file whose name should be its keccak256 hash followed by .json.",
            "id": 539,
            "name": "Evidence",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 538,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 531,
                  "indexed": true,
                  "name": "_arbitrator",
                  "nodeType": "VariableDeclaration",
                  "scope": 539,
                  "src": "2147:30:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Arbitrator_$4021",
                    "typeString": "contract Arbitrator"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 530,
                    "name": "Arbitrator",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4021,
                    "src": "2147:10:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Arbitrator_$4021",
                      "typeString": "contract Arbitrator"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 533,
                  "indexed": true,
                  "name": "_disputeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 539,
                  "src": "2179:23:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 532,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2179:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 535,
                  "indexed": true,
                  "name": "_party",
                  "nodeType": "VariableDeclaration",
                  "scope": 539,
                  "src": "2204:22:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 534,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2204:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 537,
                  "indexed": false,
                  "name": "_evidence",
                  "nodeType": "VariableDeclaration",
                  "scope": 539,
                  "src": "2228:16:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 536,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2228:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2146:99:2"
            },
            "src": "2132:114:2"
          },
          {
            "anonymous": false,
            "documentation": "@dev To be raised when a ruling is given.\n @param _arbitrator The arbitrator giving the ruling.\n @param _disputeID ID of the dispute in the Arbitrator contract.\n @param _ruling The ruling which was given.",
            "id": 547,
            "name": "Ruling",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 546,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 541,
                  "indexed": true,
                  "name": "_arbitrator",
                  "nodeType": "VariableDeclaration",
                  "scope": 547,
                  "src": "2507:30:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Arbitrator_$4021",
                    "typeString": "contract Arbitrator"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 540,
                    "name": "Arbitrator",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4021,
                    "src": "2507:10:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Arbitrator_$4021",
                      "typeString": "contract Arbitrator"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 543,
                  "indexed": true,
                  "name": "_disputeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 547,
                  "src": "2539:23:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 542,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2539:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 545,
                  "indexed": false,
                  "name": "_ruling",
                  "nodeType": "VariableDeclaration",
                  "scope": 547,
                  "src": "2564:12:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 544,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2564:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2506:71:2"
            },
            "src": "2494:84:2"
          },
          {
            "body": {
              "id": 562,
              "nodeType": "Block",
              "src": "2838:93:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 556,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 554,
                      "name": "arbitrator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 499,
                      "src": "2848:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Arbitrator_$4021",
                        "typeString": "contract Arbitrator"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 555,
                      "name": "_arbitrator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 549,
                      "src": "2861:11:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Arbitrator_$4021",
                        "typeString": "contract Arbitrator"
                      }
                    },
                    "src": "2848:24:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Arbitrator_$4021",
                      "typeString": "contract Arbitrator"
                    }
                  },
                  "id": 557,
                  "nodeType": "ExpressionStatement",
                  "src": "2848:24:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 560,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 558,
                      "name": "arbitratorExtraData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 501,
                      "src": "2882:19:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 559,
                      "name": "_arbitratorExtraData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 551,
                      "src": "2904:20:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "2882:42:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 561,
                  "nodeType": "ExpressionStatement",
                  "src": "2882:42:2"
                }
              ]
            },
            "documentation": "@dev Constructor. Choose the arbitrator.\n @param _arbitrator The arbitrator of the contract.\n @param _arbitratorExtraData Extra data for the arbitrator.",
            "id": 563,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 552,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 549,
                  "name": "_arbitrator",
                  "nodeType": "VariableDeclaration",
                  "scope": 563,
                  "src": "2779:22:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Arbitrator_$4021",
                    "typeString": "contract Arbitrator"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 548,
                    "name": "Arbitrator",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4021,
                    "src": "2779:10:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Arbitrator_$4021",
                      "typeString": "contract Arbitrator"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 551,
                  "name": "_arbitratorExtraData",
                  "nodeType": "VariableDeclaration",
                  "scope": 563,
                  "src": "2803:26:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 550,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2803:5:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2778:52:2"
            },
            "payable": false,
            "returnParameters": {
              "id": 553,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2838:0:2"
            },
            "scope": 595,
            "src": "2767:164:2",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 586,
              "nodeType": "Block",
              "src": "3399:115:2",
              "statements": [
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 574,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20639,
                              "src": "3432:3:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 575,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3432:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 573,
                          "name": "Arbitrator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4021,
                          "src": "3421:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Arbitrator_$4021_$",
                            "typeString": "type(contract Arbitrator)"
                          }
                        },
                        "id": 576,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3421:22:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Arbitrator_$4021",
                          "typeString": "contract Arbitrator"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 577,
                        "name": "_disputeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 565,
                        "src": "3444:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 578,
                        "name": "_ruling",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 567,
                        "src": "3455:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Arbitrator_$4021",
                          "typeString": "contract Arbitrator"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 572,
                      "name": "Ruling",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 547,
                      "src": "3414:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Arbitrator_$4021_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (contract Arbitrator,uint256,uint256)"
                      }
                    },
                    "id": 579,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3414:49:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 580,
                  "nodeType": "EmitStatement",
                  "src": "3409:54:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 582,
                        "name": "_disputeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 565,
                        "src": "3488:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 583,
                        "name": "_ruling",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 567,
                        "src": "3499:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 581,
                      "name": "executeRuling",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 594,
                      "src": "3474:13:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256)"
                      }
                    },
                    "id": 584,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3474:33:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 585,
                  "nodeType": "ExpressionStatement",
                  "src": "3474:33:2"
                }
              ]
            },
            "documentation": "@dev Give a ruling for a dispute. Must be called by the arbitrator.\n The purpose of this function is to ensure that the address calling it has the right to rule on the contract.\n @param _disputeID ID of the dispute in the Arbitrator contract.\n @param _ruling Ruling given by the arbitrator. Note that 0 is reserved for \"Not able/wanting to make a decision\".",
            "id": 587,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 570,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 569,
                  "name": "onlyArbitrator",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 515,
                  "src": "3384:14:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3384:14:2"
              }
            ],
            "name": "rule",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 568,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 565,
                  "name": "_disputeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 587,
                  "src": "3346:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 564,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3346:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 567,
                  "name": "_ruling",
                  "nodeType": "VariableDeclaration",
                  "scope": 587,
                  "src": "3363:12:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 566,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3363:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3345:31:2"
            },
            "payable": false,
            "returnParameters": {
              "id": 571,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3399:0:2"
            },
            "scope": 595,
            "src": "3332:182:2",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": null,
            "documentation": "@dev Execute a ruling of a dispute.\n @param _disputeID ID of the dispute in the Arbitrator contract.\n @param _ruling Ruling given by the arbitrator. Note that 0 is reserved for \"Not able/wanting to make a decision\".",
            "id": 594,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "executeRuling",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 592,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 589,
                  "name": "_disputeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 594,
                  "src": "3790:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 588,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3790:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 591,
                  "name": "_ruling",
                  "nodeType": "VariableDeclaration",
                  "scope": 594,
                  "src": "3807:12:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 590,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3807:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3789:31:2"
            },
            "payable": false,
            "returnParameters": {
              "id": 593,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3829:0:2"
            },
            "scope": 595,
            "src": "3767:63:2",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 596,
        "src": "632:3200:2"
      }
    ],
    "src": "156:3677:2"
  },
  "legacyAST": {
    "absolutePath": "/private/tmp/kleros-interaction/contracts/standard/arbitration/Arbitrable.sol",
    "exportedSymbols": {
      "Arbitrable": [
        595
      ]
    },
    "id": 596,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 496,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".15"
        ],
        "nodeType": "PragmaDirective",
        "src": "156:24:2"
      },
      {
        "absolutePath": "/private/tmp/kleros-interaction/contracts/standard/arbitration/Arbitrator.sol",
        "file": "./Arbitrator.sol",
        "id": 497,
        "nodeType": "ImportDirective",
        "scope": 596,
        "sourceUnit": 4022,
        "src": "182:26:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": "@title Arbitrable\n Arbitrable abstract contract.\n When developing arbitrable contracts, we need to:\n -Define the action taken when a ruling is received by the contract. We should do so in executeRuling.\n -Allow dispute creation. For this a function must:\n     -Call arbitrator.createDispute.value(_fee)(_choices,_extraData);\n     -Create the event Dispute(_arbitrator,_disputeID,_rulingOptions);",
        "fullyImplemented": false,
        "id": 595,
        "linearizedBaseContracts": [
          595
        ],
        "name": "Arbitrable",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 499,
            "name": "arbitrator",
            "nodeType": "VariableDeclaration",
            "scope": 595,
            "src": "657:28:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Arbitrator_$4021",
              "typeString": "contract Arbitrator"
            },
            "typeName": {
              "contractScope": null,
              "id": 498,
              "name": "Arbitrator",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4021,
              "src": "657:10:2",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Arbitrator_$4021",
                "typeString": "contract Arbitrator"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 501,
            "name": "arbitratorExtraData",
            "nodeType": "VariableDeclaration",
            "scope": 595,
            "src": "691:32:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes_storage",
              "typeString": "bytes"
            },
            "typeName": {
              "id": 500,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "691:5:2",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 514,
              "nodeType": "Block",
              "src": "820:89:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 509,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 504,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20639,
                            "src": "829:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "829:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 507,
                              "name": "arbitrator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 499,
                              "src": "851:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Arbitrator_$4021",
                                "typeString": "contract Arbitrator"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_Arbitrator_$4021",
                                "typeString": "contract Arbitrator"
                              }
                            ],
                            "id": 506,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "843:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 508,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "843:19:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "829:33:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "43616e206f6e6c792062652063616c6c6564206279207468652061726269747261746f722e",
                        "id": 510,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "864:39:2",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8acf8e40ecf8fce4ddda0c11f538911b40cf953f2780b0c76f2e50588a0db13b",
                          "typeString": "literal_string \"Can only be called by the arbitrator.\""
                        },
                        "value": "Can only be called by the arbitrator."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_8acf8e40ecf8fce4ddda0c11f538911b40cf953f2780b0c76f2e50588a0db13b",
                          "typeString": "literal_string \"Can only be called by the arbitrator.\""
                        }
                      ],
                      "id": 503,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        20642,
                        20643
                      ],
                      "referencedDeclaration": 20643,
                      "src": "821:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 511,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "821:83:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 512,
                  "nodeType": "ExpressionStatement",
                  "src": "821:83:2"
                },
                {
                  "id": 513,
                  "nodeType": "PlaceholderStatement",
                  "src": "906:1:2"
                }
              ]
            },
            "documentation": null,
            "id": 515,
            "name": "onlyArbitrator",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 502,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "820:0:2"
            },
            "src": "796:113:2",
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "documentation": "@dev To be emmited when meta-evidence is submitted.\n @param _metaEvidenceID Unique identifier of meta-evidence.\n @param _evidence A link to the meta-evidence JSON.",
            "id": 521,
            "name": "MetaEvidence",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 520,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 517,
                  "indexed": true,
                  "name": "_metaEvidenceID",
                  "nodeType": "VariableDeclaration",
                  "scope": 521,
                  "src": "1128:28:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 516,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1128:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 519,
                  "indexed": false,
                  "name": "_evidence",
                  "nodeType": "VariableDeclaration",
                  "scope": 521,
                  "src": "1158:16:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 518,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1158:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1127:48:2"
            },
            "src": "1109:67:2"
          },
          {
            "anonymous": false,
            "documentation": "@dev To be emmited when a dispute is created to link the correct meta-evidence to the disputeID\n @param _arbitrator The arbitrator of the contract.\n @param _disputeID ID of the dispute in the Arbitrator contract.\n @param _metaEvidenceID Unique identifier of meta-evidence.",
            "id": 529,
            "name": "Dispute",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 528,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 523,
                  "indexed": true,
                  "name": "_arbitrator",
                  "nodeType": "VariableDeclaration",
                  "scope": 529,
                  "src": "1506:30:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Arbitrator_$4021",
                    "typeString": "contract Arbitrator"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 522,
                    "name": "Arbitrator",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4021,
                    "src": "1506:10:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Arbitrator_$4021",
                      "typeString": "contract Arbitrator"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 525,
                  "indexed": true,
                  "name": "_disputeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 529,
                  "src": "1538:23:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 524,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1538:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 527,
                  "indexed": false,
                  "name": "_metaEvidenceID",
                  "nodeType": "VariableDeclaration",
                  "scope": 529,
                  "src": "1563:20:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 526,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1563:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1505:79:2"
            },
            "src": "1492:93:2"
          },
          {
            "anonymous": false,
            "documentation": "@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).\n @param _arbitrator The arbitrator of the contract.\n @param _disputeID ID of the dispute in the Arbitrator contract.\n @param _party The address of the party submiting the evidence. Note that 0x0 refers to evidence not submitted by any party.\n @param _evidence A URI to the evidence JSON file whose name should be its keccak256 hash followed by .json.",
            "id": 539,
            "name": "Evidence",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 538,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 531,
                  "indexed": true,
                  "name": "_arbitrator",
                  "nodeType": "VariableDeclaration",
                  "scope": 539,
                  "src": "2147:30:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Arbitrator_$4021",
                    "typeString": "contract Arbitrator"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 530,
                    "name": "Arbitrator",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4021,
                    "src": "2147:10:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Arbitrator_$4021",
                      "typeString": "contract Arbitrator"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 533,
                  "indexed": true,
                  "name": "_disputeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 539,
                  "src": "2179:23:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 532,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2179:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 535,
                  "indexed": true,
                  "name": "_party",
                  "nodeType": "VariableDeclaration",
                  "scope": 539,
                  "src": "2204:22:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 534,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2204:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 537,
                  "indexed": false,
                  "name": "_evidence",
                  "nodeType": "VariableDeclaration",
                  "scope": 539,
                  "src": "2228:16:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 536,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2228:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2146:99:2"
            },
            "src": "2132:114:2"
          },
          {
            "anonymous": false,
            "documentation": "@dev To be raised when a ruling is given.\n @param _arbitrator The arbitrator giving the ruling.\n @param _disputeID ID of the dispute in the Arbitrator contract.\n @param _ruling The ruling which was given.",
            "id": 547,
            "name": "Ruling",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 546,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 541,
                  "indexed": true,
                  "name": "_arbitrator",
                  "nodeType": "VariableDeclaration",
                  "scope": 547,
                  "src": "2507:30:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Arbitrator_$4021",
                    "typeString": "contract Arbitrator"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 540,
                    "name": "Arbitrator",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4021,
                    "src": "2507:10:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Arbitrator_$4021",
                      "typeString": "contract Arbitrator"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 543,
                  "indexed": true,
                  "name": "_disputeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 547,
                  "src": "2539:23:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 542,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2539:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 545,
                  "indexed": false,
                  "name": "_ruling",
                  "nodeType": "VariableDeclaration",
                  "scope": 547,
                  "src": "2564:12:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 544,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2564:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2506:71:2"
            },
            "src": "2494:84:2"
          },
          {
            "body": {
              "id": 562,
              "nodeType": "Block",
              "src": "2838:93:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 556,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 554,
                      "name": "arbitrator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 499,
                      "src": "2848:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Arbitrator_$4021",
                        "typeString": "contract Arbitrator"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 555,
                      "name": "_arbitrator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 549,
                      "src": "2861:11:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Arbitrator_$4021",
                        "typeString": "contract Arbitrator"
                      }
                    },
                    "src": "2848:24:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Arbitrator_$4021",
                      "typeString": "contract Arbitrator"
                    }
                  },
                  "id": 557,
                  "nodeType": "ExpressionStatement",
                  "src": "2848:24:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 560,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 558,
                      "name": "arbitratorExtraData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 501,
                      "src": "2882:19:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 559,
                      "name": "_arbitratorExtraData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 551,
                      "src": "2904:20:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "2882:42:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 561,
                  "nodeType": "ExpressionStatement",
                  "src": "2882:42:2"
                }
              ]
            },
            "documentation": "@dev Constructor. Choose the arbitrator.\n @param _arbitrator The arbitrator of the contract.\n @param _arbitratorExtraData Extra data for the arbitrator.",
            "id": 563,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 552,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 549,
                  "name": "_arbitrator",
                  "nodeType": "VariableDeclaration",
                  "scope": 563,
                  "src": "2779:22:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Arbitrator_$4021",
                    "typeString": "contract Arbitrator"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 548,
                    "name": "Arbitrator",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4021,
                    "src": "2779:10:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Arbitrator_$4021",
                      "typeString": "contract Arbitrator"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 551,
                  "name": "_arbitratorExtraData",
                  "nodeType": "VariableDeclaration",
                  "scope": 563,
                  "src": "2803:26:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 550,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2803:5:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2778:52:2"
            },
            "payable": false,
            "returnParameters": {
              "id": 553,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2838:0:2"
            },
            "scope": 595,
            "src": "2767:164:2",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 586,
              "nodeType": "Block",
              "src": "3399:115:2",
              "statements": [
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 574,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20639,
                              "src": "3432:3:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 575,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3432:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 573,
                          "name": "Arbitrator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4021,
                          "src": "3421:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Arbitrator_$4021_$",
                            "typeString": "type(contract Arbitrator)"
                          }
                        },
                        "id": 576,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3421:22:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Arbitrator_$4021",
                          "typeString": "contract Arbitrator"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 577,
                        "name": "_disputeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 565,
                        "src": "3444:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 578,
                        "name": "_ruling",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 567,
                        "src": "3455:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Arbitrator_$4021",
                          "typeString": "contract Arbitrator"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 572,
                      "name": "Ruling",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 547,
                      "src": "3414:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Arbitrator_$4021_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (contract Arbitrator,uint256,uint256)"
                      }
                    },
                    "id": 579,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3414:49:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 580,
                  "nodeType": "EmitStatement",
                  "src": "3409:54:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 582,
                        "name": "_disputeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 565,
                        "src": "3488:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 583,
                        "name": "_ruling",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 567,
                        "src": "3499:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 581,
                      "name": "executeRuling",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 594,
                      "src": "3474:13:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256)"
                      }
                    },
                    "id": 584,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3474:33:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 585,
                  "nodeType": "ExpressionStatement",
                  "src": "3474:33:2"
                }
              ]
            },
            "documentation": "@dev Give a ruling for a dispute. Must be called by the arbitrator.\n The purpose of this function is to ensure that the address calling it has the right to rule on the contract.\n @param _disputeID ID of the dispute in the Arbitrator contract.\n @param _ruling Ruling given by the arbitrator. Note that 0 is reserved for \"Not able/wanting to make a decision\".",
            "id": 587,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 570,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 569,
                  "name": "onlyArbitrator",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 515,
                  "src": "3384:14:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3384:14:2"
              }
            ],
            "name": "rule",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 568,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 565,
                  "name": "_disputeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 587,
                  "src": "3346:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 564,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3346:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 567,
                  "name": "_ruling",
                  "nodeType": "VariableDeclaration",
                  "scope": 587,
                  "src": "3363:12:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 566,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3363:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3345:31:2"
            },
            "payable": false,
            "returnParameters": {
              "id": 571,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3399:0:2"
            },
            "scope": 595,
            "src": "3332:182:2",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": null,
            "documentation": "@dev Execute a ruling of a dispute.\n @param _disputeID ID of the dispute in the Arbitrator contract.\n @param _ruling Ruling given by the arbitrator. Note that 0 is reserved for \"Not able/wanting to make a decision\".",
            "id": 594,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "executeRuling",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 592,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 589,
                  "name": "_disputeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 594,
                  "src": "3790:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 588,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3790:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 591,
                  "name": "_ruling",
                  "nodeType": "VariableDeclaration",
                  "scope": 594,
                  "src": "3807:12:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 590,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3807:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3789:31:2"
            },
            "payable": false,
            "returnParameters": {
              "id": 593,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3829:0:2"
            },
            "scope": 595,
            "src": "3767:63:2",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 596,
        "src": "632:3200:2"
      }
    ],
    "src": "156:3677:2"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2018-11-02T14:04:10.951Z"
}