{
  "contractName": "ScriptHelpers",
  "abi": [],
  "bytecode": "0x604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820940ae3a44c2f930b8c4a9332cf30bf1b64de38e4a39feb0b4165f56b283425590029",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820940ae3a44c2f930b8c4a9332cf30bf1b64de38e4a39feb0b4165f56b283425590029",
  "sourceMap": "71:1409:37:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24",
  "deployedSourceMap": "71:1409:37:-;;;;;;;;",
  "source": "/*\n * SPDX-License-Identitifer:    MIT\n */\n\npragma solidity ^0.4.24;\n\n\nlibrary ScriptHelpers {\n    function getSpecId(bytes _script) internal pure returns (uint32) {\n        return uint32At(_script, 0);\n    }\n\n    function uint256At(bytes _data, uint256 _location) internal pure returns (uint256 result) {\n        assembly {\n            result := mload(add(_data, add(0x20, _location)))\n        }\n    }\n\n    function addressAt(bytes _data, uint256 _location) internal pure returns (address result) {\n        uint256 word = uint256At(_data, _location);\n\n        assembly {\n            result := div(and(word, 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000),\n            0x1000000000000000000000000)\n        }\n    }\n\n    function uint32At(bytes _data, uint256 _location) internal pure returns (uint32 result) {\n        uint256 word = uint256At(_data, _location);\n\n        assembly {\n            result := div(and(word, 0xffffffff00000000000000000000000000000000000000000000000000000000),\n            0x100000000000000000000000000000000000000000000000000000000)\n        }\n    }\n\n    function locationOf(bytes _data, uint256 _location) internal pure returns (uint256 result) {\n        assembly {\n            result := add(_data, add(0x20, _location))\n        }\n    }\n\n    function toBytes(bytes4 _sig) internal pure returns (bytes) {\n        bytes memory payload = new bytes(4);\n        assembly { mstore(add(payload, 0x20), _sig) }\n        return payload;\n    }\n}\n",
  "sourcePath": "@aragon/os/contracts/evmscript/ScriptHelpers.sol",
  "ast": {
    "absolutePath": "@aragon/os/contracts/evmscript/ScriptHelpers.sol",
    "exportedSymbols": {
      "ScriptHelpers": [
        9615
      ]
    },
    "id": 9616,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 9525,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "44:24:37"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": null,
        "fullyImplemented": true,
        "id": 9615,
        "linearizedBaseContracts": [
          9615
        ],
        "name": "ScriptHelpers",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 9537,
              "nodeType": "Block",
              "src": "164:44:37",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9533,
                        "name": "_script",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9527,
                        "src": "190:7:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 9534,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "199:1:37",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 9532,
                      "name": "uint32At",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9585,
                      "src": "181:8:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint32)"
                      }
                    },
                    "id": 9535,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "181:20:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "functionReturnParameters": 9531,
                  "id": 9536,
                  "nodeType": "Return",
                  "src": "174:27:37"
                }
              ]
            },
            "documentation": null,
            "id": 9538,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getSpecId",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9528,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9527,
                  "name": "_script",
                  "nodeType": "VariableDeclaration",
                  "scope": 9538,
                  "src": "118:13:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9526,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "118:5:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "117:15:37"
            },
            "payable": false,
            "returnParameters": {
              "id": 9531,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9530,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9538,
                  "src": "156:6:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 9529,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "156:6:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "155:8:37"
            },
            "scope": 9615,
            "src": "99:109:37",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9548,
              "nodeType": "Block",
              "src": "304:98:37",
              "statements": [
                {
                  "externalReferences": [
                    {
                      "result": {
                        "declaration": 9545,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "337:6:37",
                        "valueSize": 1
                      }
                    },
                    {
                      "_data": {
                        "declaration": 9540,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "357:5:37",
                        "valueSize": 1
                      }
                    },
                    {
                      "_location": {
                        "declaration": 9542,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "374:9:37",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 9547,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    result := mload(add(_data, add(0x20, _location)))\n}",
                  "src": "314:88:37"
                }
              ]
            },
            "documentation": null,
            "id": 9549,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "uint256At",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9543,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9540,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 9549,
                  "src": "233:11:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9539,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "233:5:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9542,
                  "name": "_location",
                  "nodeType": "VariableDeclaration",
                  "scope": 9549,
                  "src": "246:17:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9541,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "246:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "232:32:37"
            },
            "payable": false,
            "returnParameters": {
              "id": 9546,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9545,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 9549,
                  "src": "288:14:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9544,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "288:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "287:16:37"
            },
            "scope": 9615,
            "src": "214:188:37",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9566,
              "nodeType": "Block",
              "src": "498:235:37",
              "statements": [
                {
                  "assignments": [
                    9559
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9559,
                      "name": "word",
                      "nodeType": "VariableDeclaration",
                      "scope": 9567,
                      "src": "508:12:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9558,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "508:7:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9564,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9561,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9551,
                        "src": "533:5:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9562,
                        "name": "_location",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9553,
                        "src": "540:9:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 9560,
                      "name": "uint256At",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9549,
                      "src": "523:9:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 9563,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "523:27:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "508:42:37"
                },
                {
                  "externalReferences": [
                    {
                      "result": {
                        "declaration": 9556,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "584:6:37",
                        "valueSize": 1
                      }
                    },
                    {
                      "word": {
                        "declaration": 9559,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "602:4:37",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 9565,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    result := div(and(word, 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000), 0x1000000000000000000000000)\n}",
                  "src": "561:172:37"
                }
              ]
            },
            "documentation": null,
            "id": 9567,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "addressAt",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9554,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9551,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 9567,
                  "src": "427:11:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9550,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "427:5:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9553,
                  "name": "_location",
                  "nodeType": "VariableDeclaration",
                  "scope": 9567,
                  "src": "440:17:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9552,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "440:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "426:32:37"
            },
            "payable": false,
            "returnParameters": {
              "id": 9557,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9556,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 9567,
                  "src": "482:14:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9555,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "482:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "481:16:37"
            },
            "scope": 9615,
            "src": "408:325:37",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9584,
              "nodeType": "Block",
              "src": "827:267:37",
              "statements": [
                {
                  "assignments": [
                    9577
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9577,
                      "name": "word",
                      "nodeType": "VariableDeclaration",
                      "scope": 9585,
                      "src": "837:12:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9576,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "837:7:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9582,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9579,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9569,
                        "src": "862:5:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9580,
                        "name": "_location",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9571,
                        "src": "869:9:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 9578,
                      "name": "uint256At",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9549,
                      "src": "852:9:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 9581,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "852:27:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "837:42:37"
                },
                {
                  "externalReferences": [
                    {
                      "result": {
                        "declaration": 9574,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "913:6:37",
                        "valueSize": 1
                      }
                    },
                    {
                      "word": {
                        "declaration": 9577,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "931:4:37",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 9583,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    result := div(and(word, 0xffffffff00000000000000000000000000000000000000000000000000000000), 0x100000000000000000000000000000000000000000000000000000000)\n}",
                  "src": "890:204:37"
                }
              ]
            },
            "documentation": null,
            "id": 9585,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "uint32At",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9572,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9569,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 9585,
                  "src": "757:11:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9568,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "757:5:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9571,
                  "name": "_location",
                  "nodeType": "VariableDeclaration",
                  "scope": 9585,
                  "src": "770:17:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9570,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "770:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "756:32:37"
            },
            "payable": false,
            "returnParameters": {
              "id": 9575,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9574,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 9585,
                  "src": "812:13:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 9573,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "812:6:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "811:15:37"
            },
            "scope": 9615,
            "src": "739:355:37",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9595,
              "nodeType": "Block",
              "src": "1191:91:37",
              "statements": [
                {
                  "externalReferences": [
                    {
                      "result": {
                        "declaration": 9592,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1224:6:37",
                        "valueSize": 1
                      }
                    },
                    {
                      "_data": {
                        "declaration": 9587,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1238:5:37",
                        "valueSize": 1
                      }
                    },
                    {
                      "_location": {
                        "declaration": 9589,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1255:9:37",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 9594,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    result := add(_data, add(0x20, _location))\n}",
                  "src": "1201:81:37"
                }
              ]
            },
            "documentation": null,
            "id": 9596,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "locationOf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9590,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9587,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 9596,
                  "src": "1120:11:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9586,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1120:5:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9589,
                  "name": "_location",
                  "nodeType": "VariableDeclaration",
                  "scope": 9596,
                  "src": "1133:17:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9588,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1133:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1119:32:37"
            },
            "payable": false,
            "returnParameters": {
              "id": 9593,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9592,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 9596,
                  "src": "1175:14:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9591,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1175:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1174:16:37"
            },
            "scope": 9615,
            "src": "1100:182:37",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9613,
              "nodeType": "Block",
              "src": "1348:130:37",
              "statements": [
                {
                  "assignments": [
                    9604
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9604,
                      "name": "payload",
                      "nodeType": "VariableDeclaration",
                      "scope": 9614,
                      "src": "1358:20:37",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 9603,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1358:5:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9609,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "34",
                        "id": 9607,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1391:1:37",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "value": "4"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        }
                      ],
                      "id": 9606,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "1381:9:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                        "typeString": "function (uint256) pure returns (bytes memory)"
                      },
                      "typeName": {
                        "id": 9605,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1385:5:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    },
                    "id": 9608,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1381:12:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1358:35:37"
                },
                {
                  "externalReferences": [
                    {
                      "_sig": {
                        "declaration": 9598,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1441:4:37",
                        "valueSize": 1
                      }
                    },
                    {
                      "payload": {
                        "declaration": 9604,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1425:7:37",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 9610,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    mstore(add(payload, 0x20), _sig)\n}",
                  "src": "1403:60:37"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9611,
                    "name": "payload",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9604,
                    "src": "1464:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 9602,
                  "id": 9612,
                  "nodeType": "Return",
                  "src": "1457:14:37"
                }
              ]
            },
            "documentation": null,
            "id": 9614,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "toBytes",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9599,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9598,
                  "name": "_sig",
                  "nodeType": "VariableDeclaration",
                  "scope": 9614,
                  "src": "1305:11:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 9597,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1305:6:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1304:13:37"
            },
            "payable": false,
            "returnParameters": {
              "id": 9602,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9601,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9614,
                  "src": "1341:5:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9600,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1341:5:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1340:7:37"
            },
            "scope": 9615,
            "src": "1288:190:37",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 9616,
        "src": "71:1409:37"
      }
    ],
    "src": "44:1437:37"
  },
  "legacyAST": {
    "absolutePath": "@aragon/os/contracts/evmscript/ScriptHelpers.sol",
    "exportedSymbols": {
      "ScriptHelpers": [
        9615
      ]
    },
    "id": 9616,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 9525,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "44:24:37"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": null,
        "fullyImplemented": true,
        "id": 9615,
        "linearizedBaseContracts": [
          9615
        ],
        "name": "ScriptHelpers",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 9537,
              "nodeType": "Block",
              "src": "164:44:37",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9533,
                        "name": "_script",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9527,
                        "src": "190:7:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 9534,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "199:1:37",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 9532,
                      "name": "uint32At",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9585,
                      "src": "181:8:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint32)"
                      }
                    },
                    "id": 9535,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "181:20:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "functionReturnParameters": 9531,
                  "id": 9536,
                  "nodeType": "Return",
                  "src": "174:27:37"
                }
              ]
            },
            "documentation": null,
            "id": 9538,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getSpecId",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9528,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9527,
                  "name": "_script",
                  "nodeType": "VariableDeclaration",
                  "scope": 9538,
                  "src": "118:13:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9526,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "118:5:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "117:15:37"
            },
            "payable": false,
            "returnParameters": {
              "id": 9531,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9530,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9538,
                  "src": "156:6:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 9529,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "156:6:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "155:8:37"
            },
            "scope": 9615,
            "src": "99:109:37",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9548,
              "nodeType": "Block",
              "src": "304:98:37",
              "statements": [
                {
                  "externalReferences": [
                    {
                      "result": {
                        "declaration": 9545,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "337:6:37",
                        "valueSize": 1
                      }
                    },
                    {
                      "_data": {
                        "declaration": 9540,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "357:5:37",
                        "valueSize": 1
                      }
                    },
                    {
                      "_location": {
                        "declaration": 9542,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "374:9:37",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 9547,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    result := mload(add(_data, add(0x20, _location)))\n}",
                  "src": "314:88:37"
                }
              ]
            },
            "documentation": null,
            "id": 9549,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "uint256At",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9543,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9540,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 9549,
                  "src": "233:11:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9539,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "233:5:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9542,
                  "name": "_location",
                  "nodeType": "VariableDeclaration",
                  "scope": 9549,
                  "src": "246:17:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9541,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "246:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "232:32:37"
            },
            "payable": false,
            "returnParameters": {
              "id": 9546,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9545,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 9549,
                  "src": "288:14:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9544,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "288:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "287:16:37"
            },
            "scope": 9615,
            "src": "214:188:37",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9566,
              "nodeType": "Block",
              "src": "498:235:37",
              "statements": [
                {
                  "assignments": [
                    9559
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9559,
                      "name": "word",
                      "nodeType": "VariableDeclaration",
                      "scope": 9567,
                      "src": "508:12:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9558,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "508:7:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9564,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9561,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9551,
                        "src": "533:5:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9562,
                        "name": "_location",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9553,
                        "src": "540:9:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 9560,
                      "name": "uint256At",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9549,
                      "src": "523:9:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 9563,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "523:27:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "508:42:37"
                },
                {
                  "externalReferences": [
                    {
                      "result": {
                        "declaration": 9556,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "584:6:37",
                        "valueSize": 1
                      }
                    },
                    {
                      "word": {
                        "declaration": 9559,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "602:4:37",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 9565,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    result := div(and(word, 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000), 0x1000000000000000000000000)\n}",
                  "src": "561:172:37"
                }
              ]
            },
            "documentation": null,
            "id": 9567,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "addressAt",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9554,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9551,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 9567,
                  "src": "427:11:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9550,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "427:5:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9553,
                  "name": "_location",
                  "nodeType": "VariableDeclaration",
                  "scope": 9567,
                  "src": "440:17:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9552,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "440:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "426:32:37"
            },
            "payable": false,
            "returnParameters": {
              "id": 9557,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9556,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 9567,
                  "src": "482:14:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9555,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "482:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "481:16:37"
            },
            "scope": 9615,
            "src": "408:325:37",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9584,
              "nodeType": "Block",
              "src": "827:267:37",
              "statements": [
                {
                  "assignments": [
                    9577
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9577,
                      "name": "word",
                      "nodeType": "VariableDeclaration",
                      "scope": 9585,
                      "src": "837:12:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9576,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "837:7:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9582,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9579,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9569,
                        "src": "862:5:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9580,
                        "name": "_location",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9571,
                        "src": "869:9:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 9578,
                      "name": "uint256At",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9549,
                      "src": "852:9:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 9581,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "852:27:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "837:42:37"
                },
                {
                  "externalReferences": [
                    {
                      "result": {
                        "declaration": 9574,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "913:6:37",
                        "valueSize": 1
                      }
                    },
                    {
                      "word": {
                        "declaration": 9577,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "931:4:37",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 9583,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    result := div(and(word, 0xffffffff00000000000000000000000000000000000000000000000000000000), 0x100000000000000000000000000000000000000000000000000000000)\n}",
                  "src": "890:204:37"
                }
              ]
            },
            "documentation": null,
            "id": 9585,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "uint32At",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9572,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9569,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 9585,
                  "src": "757:11:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9568,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "757:5:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9571,
                  "name": "_location",
                  "nodeType": "VariableDeclaration",
                  "scope": 9585,
                  "src": "770:17:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9570,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "770:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "756:32:37"
            },
            "payable": false,
            "returnParameters": {
              "id": 9575,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9574,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 9585,
                  "src": "812:13:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 9573,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "812:6:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "811:15:37"
            },
            "scope": 9615,
            "src": "739:355:37",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9595,
              "nodeType": "Block",
              "src": "1191:91:37",
              "statements": [
                {
                  "externalReferences": [
                    {
                      "result": {
                        "declaration": 9592,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1224:6:37",
                        "valueSize": 1
                      }
                    },
                    {
                      "_data": {
                        "declaration": 9587,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1238:5:37",
                        "valueSize": 1
                      }
                    },
                    {
                      "_location": {
                        "declaration": 9589,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1255:9:37",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 9594,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    result := add(_data, add(0x20, _location))\n}",
                  "src": "1201:81:37"
                }
              ]
            },
            "documentation": null,
            "id": 9596,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "locationOf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9590,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9587,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 9596,
                  "src": "1120:11:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9586,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1120:5:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9589,
                  "name": "_location",
                  "nodeType": "VariableDeclaration",
                  "scope": 9596,
                  "src": "1133:17:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9588,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1133:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1119:32:37"
            },
            "payable": false,
            "returnParameters": {
              "id": 9593,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9592,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 9596,
                  "src": "1175:14:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9591,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1175:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1174:16:37"
            },
            "scope": 9615,
            "src": "1100:182:37",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9613,
              "nodeType": "Block",
              "src": "1348:130:37",
              "statements": [
                {
                  "assignments": [
                    9604
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9604,
                      "name": "payload",
                      "nodeType": "VariableDeclaration",
                      "scope": 9614,
                      "src": "1358:20:37",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 9603,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1358:5:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9609,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "34",
                        "id": 9607,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1391:1:37",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "value": "4"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        }
                      ],
                      "id": 9606,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "1381:9:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                        "typeString": "function (uint256) pure returns (bytes memory)"
                      },
                      "typeName": {
                        "id": 9605,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1385:5:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    },
                    "id": 9608,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1381:12:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1358:35:37"
                },
                {
                  "externalReferences": [
                    {
                      "_sig": {
                        "declaration": 9598,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1441:4:37",
                        "valueSize": 1
                      }
                    },
                    {
                      "payload": {
                        "declaration": 9604,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1425:7:37",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 9610,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    mstore(add(payload, 0x20), _sig)\n}",
                  "src": "1403:60:37"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9611,
                    "name": "payload",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9604,
                    "src": "1464:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 9602,
                  "id": 9612,
                  "nodeType": "Return",
                  "src": "1457:14:37"
                }
              ]
            },
            "documentation": null,
            "id": 9614,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "toBytes",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9599,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9598,
                  "name": "_sig",
                  "nodeType": "VariableDeclaration",
                  "scope": 9614,
                  "src": "1305:11:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 9597,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1305:6:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1304:13:37"
            },
            "payable": false,
            "returnParameters": {
              "id": 9602,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9601,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9614,
                  "src": "1341:5:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9600,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1341:5:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1340:7:37"
            },
            "scope": 9615,
            "src": "1288:190:37",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 9616,
        "src": "71:1409:37"
      }
    ],
    "src": "44:1437:37"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.1",
  "updatedAt": "2019-03-29T09:45:33.512Z",
  "devdoc": {
    "methods": {}
  },
  "userdoc": {
    "methods": {}
  }
}