{
  "contractName": "EVMScriptRunner",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "hasInitialized",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "appId",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getInitializationBlock",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "kernel",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "executor",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "script",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "input",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "returnData",
          "type": "bytes"
        }
      ],
      "name": "ScriptResult",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_script",
          "type": "bytes"
        }
      ],
      "name": "getEVMScriptExecutor",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getEVMScriptRegistry",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506105c0806100206000396000f300608060405260043610610078576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630803fac01461007d5780632914b9bd146100ac57806380afdea8146101555780638b3dd74914610188578063a479e508146101b3578063d4aae0c41461020a575b600080fd5b34801561008957600080fd5b50610092610261565b604051808215151515815260200191505060405180910390f35b3480156100b857600080fd5b50610113600480360381019080803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061028c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561016157600080fd5b5061016a6103ab565b60405180826000191660001916815260200191505060405180910390f35b34801561019457600080fd5b5061019d6103e2565b6040518082815260200191505060405180910390f35b3480156101bf57600080fd5b506101c8610419565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561021657600080fd5b5061021f610534565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008061026c6103e2565b90506000811415801561028657508061028361056b565b10155b91505090565b6000610296610419565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561031d578082015181840152602081019050610302565b50505050905090810190601f16801561034a5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561036957600080fd5b505af115801561037d573d6000803e3d6000fd5b505050506040513d602081101561039357600080fd5b81019080805190602001909291905050509050919050565b60006103dd7fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b60010260001916610573565b905090565b60006104147febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e6001026000191661057e565b905090565b600080610424610534565b73ffffffffffffffffffffffffffffffffffffffff1663be00bbd87fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb6001027fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616001026040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050602060405180830381600087803b1580156104f057600080fd5b505af1158015610504573d6000803e3d6000fd5b505050506040513d602081101561051a57600080fd5b810190808051906020019092919050505090508091505090565b60006105667f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b60010260001916610589565b905090565b600043905090565b600081549050919050565b600081549050919050565b6000815490509190505600a165627a7a72305820dc4337c25cc32d32c19220f7a088418da4c0ff96e0bf50c049dd4c797f7528510029",
  "deployedBytecode": "0x608060405260043610610078576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630803fac01461007d5780632914b9bd146100ac57806380afdea8146101555780638b3dd74914610188578063a479e508146101b3578063d4aae0c41461020a575b600080fd5b34801561008957600080fd5b50610092610261565b604051808215151515815260200191505060405180910390f35b3480156100b857600080fd5b50610113600480360381019080803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061028c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561016157600080fd5b5061016a6103ab565b60405180826000191660001916815260200191505060405180910390f35b34801561019457600080fd5b5061019d6103e2565b6040518082815260200191505060405180910390f35b3480156101bf57600080fd5b506101c8610419565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561021657600080fd5b5061021f610534565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008061026c6103e2565b90506000811415801561028657508061028361056b565b10155b91505090565b6000610296610419565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561031d578082015181840152602081019050610302565b50505050905090810190601f16801561034a5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561036957600080fd5b505af115801561037d573d6000803e3d6000fd5b505050506040513d602081101561039357600080fd5b81019080805190602001909291905050509050919050565b60006103dd7fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b60010260001916610573565b905090565b60006104147febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e6001026000191661057e565b905090565b600080610424610534565b73ffffffffffffffffffffffffffffffffffffffff1663be00bbd87fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb6001027fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616001026040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050602060405180830381600087803b1580156104f057600080fd5b505af1158015610504573d6000803e3d6000fd5b505050506040513d602081101561051a57600080fd5b810190808051906020019092919050505090508091505090565b60006105667f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b60010260001916610589565b905090565b600043905090565b600081549050919050565b600081549050919050565b6000815490509190505600a165627a7a72305820dc4337c25cc32d32c19220f7a088418da4c0ff96e0bf50c049dd4c797f7528510029",
  "sourceMap": "254:2506:34:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;254:2506:34;;;;;;;",
  "deployedSourceMap": "254:2506:34:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1136:208:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1136:208:26;;;;;;;;;;;;;;;;;;;;;;;;;;;733:179:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;733:179:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;796:106:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;796:106:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;889:137:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;889:137:26;;;;;;;;;;;;;;;;;;;;;;;918:231:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;918:231:34;;;;;;;;;;;;;;;;;;;;;;;;;;;674:116:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;674:116:17;;;;;;;;;;;;;;;;;;;;;;;;;;;1136:208:26;1183:4;1199:27;1229:24;:22;:24::i;:::-;1199:54;;1293:1;1270:19;:24;;:67;;;;;1318:19;1298:16;:14;:16::i;:::-;:39;;1270:67;1263:74;;1136:208;;:::o;733:179:34:-;799:18;855:22;:20;:22::i;:::-;:40;;;896:7;855:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;855:49:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;855:49:34;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;855:49:34;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;855:49:34;;;;;;;;;;;;;;;;829:76;;733:179;;;:::o;796:106:17:-;834:7;860:35;601:66;860:15;;:33;;;;:35::i;:::-;853:42;;796:106;:::o;889:137:26:-;944:7;970:49;353:66;970:29;;:47;;;;:49::i;:::-;963:56;;889:137;:::o;918:231:34:-;971:18;1001:20;1024:8;:6;:8::i;:::-;:15;;;1368:66:45;1040:25:34;;330:66:36;1067:25:34;;1024:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1024:69:34;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1024:69:34;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1024:69:34;;;;;;;;;;;;;;;;1001:92;;1129:12;1103:39;;918:231;;:::o;674:116:17:-;713:7;747:35;485:66;747:15;;:33;;;;:35::i;:::-;732:51;;674:116;:::o;347:94:29:-;396:7;422:12;415:19;;347:94;:::o;379:134:31:-;447:12;496:8;490:15;482:23;;480:27;;;:::o;519:134::-;587:12;636:8;630:15;622:23;;620:27;;;:::o;239:134::-;307:12;356:8;350:15;342:23;;340:27;;;:::o",
  "source": "/*\n * SPDX-License-Identitifer:    MIT\n */\n\npragma solidity ^0.4.24;\n\nimport \"./IEVMScriptExecutor.sol\";\nimport \"./IEVMScriptRegistry.sol\";\n\nimport \"../apps/AppStorage.sol\";\nimport \"../kernel/KernelConstants.sol\";\nimport \"../common/Initializable.sol\";\n\n\ncontract EVMScriptRunner is AppStorage, Initializable, EVMScriptRegistryConstants, KernelNamespaceConstants {\n    string private constant ERROR_EXECUTOR_UNAVAILABLE = \"EVMRUN_EXECUTOR_UNAVAILABLE\";\n    string private constant ERROR_EXECUTION_REVERTED = \"EVMRUN_EXECUTION_REVERTED\";\n    string private constant ERROR_PROTECTED_STATE_MODIFIED = \"EVMRUN_PROTECTED_STATE_MODIFIED\";\n\n    event ScriptResult(address indexed executor, bytes script, bytes input, bytes returnData);\n\n    function getEVMScriptExecutor(bytes _script) public view returns (IEVMScriptExecutor) {\n        return IEVMScriptExecutor(getEVMScriptRegistry().getScriptExecutor(_script));\n    }\n\n    function getEVMScriptRegistry() public view returns (IEVMScriptRegistry) {\n        address registryAddr = kernel().getApp(KERNEL_APP_ADDR_NAMESPACE, EVMSCRIPT_REGISTRY_APP_ID);\n        return IEVMScriptRegistry(registryAddr);\n    }\n\n    function runScript(bytes _script, bytes _input, address[] _blacklist)\n        internal\n        isInitialized\n        protectState\n        returns (bytes)\n    {\n        // TODO: Too much data flying around, maybe extracting spec id here is cheaper\n        IEVMScriptExecutor executor = getEVMScriptExecutor(_script);\n        require(address(executor) != address(0), ERROR_EXECUTOR_UNAVAILABLE);\n\n        bytes4 sig = executor.execScript.selector;\n        bytes memory data = abi.encodeWithSelector(sig, _script, _input, _blacklist);\n        require(address(executor).delegatecall(data), ERROR_EXECUTION_REVERTED);\n\n        bytes memory output = returnedDataDecoded();\n\n        emit ScriptResult(address(executor), _script, _input, output);\n\n        return output;\n    }\n\n    /**\n    * @dev copies and returns last's call data. Needs to ABI decode first\n    */\n    function returnedDataDecoded() internal pure returns (bytes ret) {\n        assembly {\n            let size := returndatasize\n            switch size\n            case 0 {}\n            default {\n                ret := mload(0x40) // free mem ptr get\n                mstore(0x40, add(ret, add(size, 0x20))) // free mem ptr set\n                returndatacopy(ret, 0x20, sub(size, 0x20)) // copy return data\n            }\n        }\n        return ret;\n    }\n\n    modifier protectState {\n        address preKernel = address(kernel());\n        bytes32 preAppId = appId();\n        _; // exec\n        require(address(kernel()) == preKernel, ERROR_PROTECTED_STATE_MODIFIED);\n        require(appId() == preAppId, ERROR_PROTECTED_STATE_MODIFIED);\n    }\n}\n",
  "sourcePath": "@aragon/os/contracts/evmscript/EVMScriptRunner.sol",
  "ast": {
    "absolutePath": "@aragon/os/contracts/evmscript/EVMScriptRunner.sol",
    "exportedSymbols": {
      "EVMScriptRunner": [
        9476
      ]
    },
    "id": 9477,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 9289,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "44:24:34"
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/IEVMScriptExecutor.sol",
        "file": "./IEVMScriptExecutor.sol",
        "id": 9290,
        "nodeType": "ImportDirective",
        "scope": 9477,
        "sourceUnit": 9497,
        "src": "70:34:34",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/IEVMScriptRegistry.sol",
        "file": "./IEVMScriptRegistry.sol",
        "id": 9291,
        "nodeType": "ImportDirective",
        "scope": 9477,
        "sourceUnit": 9524,
        "src": "105:34:34",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/apps/AppStorage.sol",
        "file": "../apps/AppStorage.sol",
        "id": 9292,
        "nodeType": "ImportDirective",
        "scope": 9477,
        "sourceUnit": 8348,
        "src": "141:32:34",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/KernelConstants.sol",
        "file": "../kernel/KernelConstants.sol",
        "id": 9293,
        "nodeType": "ImportDirective",
        "scope": 9477,
        "sourceUnit": 10770,
        "src": "174:39:34",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/Initializable.sol",
        "file": "../common/Initializable.sol",
        "id": 9294,
        "nodeType": "ImportDirective",
        "scope": 9477,
        "sourceUnit": 8762,
        "src": "214:37:34",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9295,
              "name": "AppStorage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8347,
              "src": "282:10:34",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AppStorage_$8347",
                "typeString": "contract AppStorage"
              }
            },
            "id": 9296,
            "nodeType": "InheritanceSpecifier",
            "src": "282:10:34"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9297,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8761,
              "src": "294:13:34",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$8761",
                "typeString": "contract Initializable"
              }
            },
            "id": 9298,
            "nodeType": "InheritanceSpecifier",
            "src": "294:13:34"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9299,
              "name": "EVMScriptRegistryConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9503,
              "src": "309:26:34",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EVMScriptRegistryConstants_$9503",
                "typeString": "contract EVMScriptRegistryConstants"
              }
            },
            "id": 9300,
            "nodeType": "InheritanceSpecifier",
            "src": "309:26:34"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9301,
              "name": "KernelNamespaceConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10769,
              "src": "337:24:34",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KernelNamespaceConstants_$10769",
                "typeString": "contract KernelNamespaceConstants"
              }
            },
            "id": 9302,
            "nodeType": "InheritanceSpecifier",
            "src": "337:24:34"
          }
        ],
        "contractDependencies": [
          8347,
          8761,
          8869,
          9503,
          10769
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 9476,
        "linearizedBaseContracts": [
          9476,
          10769,
          9503,
          8761,
          8869,
          8347
        ],
        "name": "EVMScriptRunner",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 9305,
            "name": "ERROR_EXECUTOR_UNAVAILABLE",
            "nodeType": "VariableDeclaration",
            "scope": 9476,
            "src": "368:82:34",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 9303,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "368:6:34",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d52554e5f4558454355544f525f554e415641494c41424c45",
              "id": 9304,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "421:29:34",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_8eaa9277b7a571cc4e32be0346d713d2afa465c007646deacfabeba4f629e0be",
                "typeString": "literal_string \"EVMRUN_EXECUTOR_UNAVAILABLE\""
              },
              "value": "EVMRUN_EXECUTOR_UNAVAILABLE"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 9308,
            "name": "ERROR_EXECUTION_REVERTED",
            "nodeType": "VariableDeclaration",
            "scope": 9476,
            "src": "456:78:34",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 9306,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "456:6:34",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d52554e5f455845435554494f4e5f5245564552544544",
              "id": 9307,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "507:27:34",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_fa47b3abdfd7922e724eeccfd2f5931b98b6762d9ec2f983ed42fa5e06877fe3",
                "typeString": "literal_string \"EVMRUN_EXECUTION_REVERTED\""
              },
              "value": "EVMRUN_EXECUTION_REVERTED"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 9311,
            "name": "ERROR_PROTECTED_STATE_MODIFIED",
            "nodeType": "VariableDeclaration",
            "scope": 9476,
            "src": "540:90:34",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 9309,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "540:6:34",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d52554e5f50524f5445435445445f53544154455f4d4f444946494544",
              "id": 9310,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "597:33:34",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_93fe2db835b78d0be70801a075eae0aab8d5496824b1a06caec0dd78db98ba92",
                "typeString": "literal_string \"EVMRUN_PROTECTED_STATE_MODIFIED\""
              },
              "value": "EVMRUN_PROTECTED_STATE_MODIFIED"
            },
            "visibility": "private"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9321,
            "name": "ScriptResult",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9320,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9313,
                  "indexed": true,
                  "name": "executor",
                  "nodeType": "VariableDeclaration",
                  "scope": 9321,
                  "src": "656:24:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9312,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "656:7:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9315,
                  "indexed": false,
                  "name": "script",
                  "nodeType": "VariableDeclaration",
                  "scope": 9321,
                  "src": "682:12:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9314,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "682:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9317,
                  "indexed": false,
                  "name": "input",
                  "nodeType": "VariableDeclaration",
                  "scope": 9321,
                  "src": "696:11:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9316,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "696:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9319,
                  "indexed": false,
                  "name": "returnData",
                  "nodeType": "VariableDeclaration",
                  "scope": 9321,
                  "src": "709:16:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9318,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "709:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "655:71:34"
            },
            "src": "637:90:34"
          },
          {
            "body": {
              "id": 9336,
              "nodeType": "Block",
              "src": "819:93:34",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9332,
                            "name": "_script",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9323,
                            "src": "896:7:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 9329,
                              "name": "getEVMScriptRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9356,
                              "src": "855:20:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IEVMScriptRegistry_$9523_$",
                                "typeString": "function () view returns (contract IEVMScriptRegistry)"
                              }
                            },
                            "id": 9330,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "855:22:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IEVMScriptRegistry_$9523",
                              "typeString": "contract IEVMScriptRegistry"
                            }
                          },
                          "id": 9331,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getScriptExecutor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9522,
                          "src": "855:40:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes_memory_ptr_$returns$_t_contract$_IEVMScriptExecutor_$9496_$",
                            "typeString": "function (bytes memory) view external returns (contract IEVMScriptExecutor)"
                          }
                        },
                        "id": 9333,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "855:49:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      ],
                      "id": 9328,
                      "name": "IEVMScriptExecutor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9496,
                      "src": "836:18:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IEVMScriptExecutor_$9496_$",
                        "typeString": "type(contract IEVMScriptExecutor)"
                      }
                    },
                    "id": 9334,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "836:69:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "functionReturnParameters": 9327,
                  "id": 9335,
                  "nodeType": "Return",
                  "src": "829:76:34"
                }
              ]
            },
            "documentation": null,
            "id": 9337,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getEVMScriptExecutor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9324,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9323,
                  "name": "_script",
                  "nodeType": "VariableDeclaration",
                  "scope": 9337,
                  "src": "763:13:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9322,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "763:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "762:15:34"
            },
            "payable": false,
            "returnParameters": {
              "id": 9327,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9326,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9337,
                  "src": "799:18:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                    "typeString": "contract IEVMScriptExecutor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9325,
                    "name": "IEVMScriptExecutor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9496,
                    "src": "799:18:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "798:20:34"
            },
            "scope": 9476,
            "src": "733:179:34",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9355,
              "nodeType": "Block",
              "src": "991:158:34",
              "statements": [
                {
                  "assignments": [
                    9343
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9343,
                      "name": "registryAddr",
                      "nodeType": "VariableDeclaration",
                      "scope": 9356,
                      "src": "1001:20:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9342,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1001:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9350,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9347,
                        "name": "KERNEL_APP_ADDR_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10768,
                        "src": "1040:25:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9348,
                        "name": "EVMSCRIPT_REGISTRY_APP_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9502,
                        "src": "1067:25:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 9344,
                          "name": "kernel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8310,
                          "src": "1024:6:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IKernel_$10248_$",
                            "typeString": "function () view returns (contract IKernel)"
                          }
                        },
                        "id": 9345,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1024:8:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IKernel_$10248",
                          "typeString": "contract IKernel"
                        }
                      },
                      "id": 9346,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getApp",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10247,
                      "src": "1024:15:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32,bytes32) view external returns (address)"
                      }
                    },
                    "id": 9349,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1024:69:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1001:92:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9352,
                        "name": "registryAddr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9343,
                        "src": "1129:12:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 9351,
                      "name": "IEVMScriptRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9523,
                      "src": "1110:18:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IEVMScriptRegistry_$9523_$",
                        "typeString": "type(contract IEVMScriptRegistry)"
                      }
                    },
                    "id": 9353,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1110:32:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptRegistry_$9523",
                      "typeString": "contract IEVMScriptRegistry"
                    }
                  },
                  "functionReturnParameters": 9341,
                  "id": 9354,
                  "nodeType": "Return",
                  "src": "1103:39:34"
                }
              ]
            },
            "documentation": null,
            "id": 9356,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getEVMScriptRegistry",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9338,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "947:2:34"
            },
            "payable": false,
            "returnParameters": {
              "id": 9341,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9340,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9356,
                  "src": "971:18:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEVMScriptRegistry_$9523",
                    "typeString": "contract IEVMScriptRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9339,
                    "name": "IEVMScriptRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9523,
                    "src": "971:18:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptRegistry_$9523",
                      "typeString": "contract IEVMScriptRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "970:20:34"
            },
            "scope": 9476,
            "src": "918:231:34",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9431,
              "nodeType": "Block",
              "src": "1313:610:34",
              "statements": [
                {
                  "assignments": [
                    9373
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9373,
                      "name": "executor",
                      "nodeType": "VariableDeclaration",
                      "scope": 9432,
                      "src": "1410:27:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                        "typeString": "contract IEVMScriptExecutor"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 9372,
                        "name": "IEVMScriptExecutor",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9496,
                        "src": "1410:18:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9377,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9375,
                        "name": "_script",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9358,
                        "src": "1461:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 9374,
                      "name": "getEVMScriptExecutor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9337,
                      "src": "1440:20:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_contract$_IEVMScriptExecutor_$9496_$",
                        "typeString": "function (bytes memory) view returns (contract IEVMScriptExecutor)"
                      }
                    },
                    "id": 9376,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1440:29:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1410:59:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 9385,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9380,
                              "name": "executor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9373,
                              "src": "1495:8:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                                "typeString": "contract IEVMScriptExecutor"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                                "typeString": "contract IEVMScriptExecutor"
                              }
                            ],
                            "id": 9379,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1487:7:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 9381,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1487:17:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 9383,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1516:1:34",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 9382,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1508:7:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 9384,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1508:10:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1487:31:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9386,
                        "name": "ERROR_EXECUTOR_UNAVAILABLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9305,
                        "src": "1520:26:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 9378,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "1479:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9387,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1479:68:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9388,
                  "nodeType": "ExpressionStatement",
                  "src": "1479:68:34"
                },
                {
                  "assignments": [
                    9390
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9390,
                      "name": "sig",
                      "nodeType": "VariableDeclaration",
                      "scope": 9432,
                      "src": "1558:10:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 9389,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "1558:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9394,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9391,
                        "name": "executor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9373,
                        "src": "1571:8:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      },
                      "id": 9392,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "execScript",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9490,
                      "src": "1571:19:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,bytes memory,address[] memory) external returns (bytes memory)"
                      }
                    },
                    "id": 9393,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "selector",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "1571:28:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1558:41:34"
                },
                {
                  "assignments": [
                    9396
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9396,
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 9432,
                      "src": "1609:17:34",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 9395,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1609:5:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9404,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9399,
                        "name": "sig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9390,
                        "src": "1652:3:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9400,
                        "name": "_script",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9358,
                        "src": "1657:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9401,
                        "name": "_input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9360,
                        "src": "1666:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9402,
                        "name": "_blacklist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9363,
                        "src": "1674:10:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9397,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12657,
                        "src": "1629:3:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 9398,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encodeWithSelector",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1629:22:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes4) pure returns (bytes memory)"
                      }
                    },
                    "id": 9403,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1629:56:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1609:76:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9410,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9396,
                            "src": "1734:4:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 9407,
                                "name": "executor",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9373,
                                "src": "1711:8:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                                  "typeString": "contract IEVMScriptExecutor"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                                  "typeString": "contract IEVMScriptExecutor"
                                }
                              ],
                              "id": 9406,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1703:7:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 9408,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1703:17:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 9409,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "delegatecall",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1703:30:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_baredelegatecall_nonpayable$__$returns$_t_bool_$",
                            "typeString": "function () returns (bool)"
                          }
                        },
                        "id": 9411,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1703:36:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9412,
                        "name": "ERROR_EXECUTION_REVERTED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9308,
                        "src": "1741:24:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 9405,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "1695:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9413,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1695:71:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9414,
                  "nodeType": "ExpressionStatement",
                  "src": "1695:71:34"
                },
                {
                  "assignments": [
                    9416
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9416,
                      "name": "output",
                      "nodeType": "VariableDeclaration",
                      "scope": 9432,
                      "src": "1777:19:34",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 9415,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1777:5:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9419,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 9417,
                      "name": "returnedDataDecoded",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9441,
                      "src": "1799:19:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 9418,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1799:21:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1777:43:34"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9422,
                            "name": "executor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9373,
                            "src": "1857:8:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                              "typeString": "contract IEVMScriptExecutor"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                              "typeString": "contract IEVMScriptExecutor"
                            }
                          ],
                          "id": 9421,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1849:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 9423,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1849:17:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9424,
                        "name": "_script",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9358,
                        "src": "1868:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9425,
                        "name": "_input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9360,
                        "src": "1877:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9426,
                        "name": "output",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9416,
                        "src": "1885:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 9420,
                      "name": "ScriptResult",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9321,
                      "src": "1836:12:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,bytes memory,bytes memory,bytes memory)"
                      }
                    },
                    "id": 9427,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1836:56:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9428,
                  "nodeType": "EmitStatement",
                  "src": "1831:61:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9429,
                    "name": "output",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9416,
                    "src": "1910:6:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 9371,
                  "id": 9430,
                  "nodeType": "Return",
                  "src": "1903:13:34"
                }
              ]
            },
            "documentation": null,
            "id": 9432,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 9366,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9365,
                  "name": "isInitialized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8703,
                  "src": "1250:13:34",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1250:13:34"
              },
              {
                "arguments": null,
                "id": 9368,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9367,
                  "name": "protectState",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9475,
                  "src": "1272:12:34",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1272:12:34"
              }
            ],
            "name": "runScript",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9364,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9358,
                  "name": "_script",
                  "nodeType": "VariableDeclaration",
                  "scope": 9432,
                  "src": "1174:13:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9357,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1174:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9360,
                  "name": "_input",
                  "nodeType": "VariableDeclaration",
                  "scope": 9432,
                  "src": "1189:12:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9359,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1189:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9363,
                  "name": "_blacklist",
                  "nodeType": "VariableDeclaration",
                  "scope": 9432,
                  "src": "1203:20:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 9361,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1203:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 9362,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1203:9:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1173:51:34"
            },
            "payable": false,
            "returnParameters": {
              "id": 9371,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9370,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9432,
                  "src": "1302:5:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9369,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1302:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1301:7:34"
            },
            "scope": 9476,
            "src": "1155:768:34",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9440,
              "nodeType": "Block",
              "src": "2083:387:34",
              "statements": [
                {
                  "externalReferences": [
                    {
                      "ret": {
                        "declaration": 9435,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2227:3:34",
                        "valueSize": 1
                      }
                    },
                    {
                      "ret": {
                        "declaration": 9435,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2299:3:34",
                        "valueSize": 1
                      }
                    },
                    {
                      "ret": {
                        "declaration": 9435,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2373:3:34",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 9437,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    let size := returndatasize()\n    switch size\n    case 0 {\n    }\n    default {\n        ret := mload(0x40)\n        mstore(0x40, add(ret, add(size, 0x20)))\n        returndatacopy(ret, 0x20, sub(size, 0x20))\n    }\n}",
                  "src": "2093:366:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9438,
                    "name": "ret",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9435,
                    "src": "2460:3:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 9436,
                  "id": 9439,
                  "nodeType": "Return",
                  "src": "2453:10:34"
                }
              ]
            },
            "documentation": "@dev copies and returns last's call data. Needs to ABI decode first",
            "id": 9441,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "returnedDataDecoded",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9433,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2046:2:34"
            },
            "payable": false,
            "returnParameters": {
              "id": 9436,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9435,
                  "name": "ret",
                  "nodeType": "VariableDeclaration",
                  "scope": 9441,
                  "src": "2072:9:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9434,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2072:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2071:11:34"
            },
            "scope": 9476,
            "src": "2018:452:34",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9474,
              "nodeType": "Block",
              "src": "2498:260:34",
              "statements": [
                {
                  "assignments": [
                    9444
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9444,
                      "name": "preKernel",
                      "nodeType": "VariableDeclaration",
                      "scope": 9475,
                      "src": "2508:17:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9443,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2508:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9449,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 9446,
                          "name": "kernel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8310,
                          "src": "2536:6:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IKernel_$10248_$",
                            "typeString": "function () view returns (contract IKernel)"
                          }
                        },
                        "id": 9447,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2536:8:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IKernel_$10248",
                          "typeString": "contract IKernel"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IKernel_$10248",
                          "typeString": "contract IKernel"
                        }
                      ],
                      "id": 9445,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "2528:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 9448,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2528:17:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2508:37:34"
                },
                {
                  "assignments": [
                    9451
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9451,
                      "name": "preAppId",
                      "nodeType": "VariableDeclaration",
                      "scope": 9475,
                      "src": "2555:16:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 9450,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2555:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9454,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 9452,
                      "name": "appId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8320,
                      "src": "2574:5:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                        "typeString": "function () view returns (bytes32)"
                      }
                    },
                    "id": 9453,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2574:7:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2555:26:34"
                },
                {
                  "id": 9455,
                  "nodeType": "PlaceholderStatement",
                  "src": "2591:1:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 9462,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 9458,
                                "name": "kernel",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8310,
                                "src": "2626:6:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IKernel_$10248_$",
                                  "typeString": "function () view returns (contract IKernel)"
                                }
                              },
                              "id": 9459,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2626:8:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IKernel_$10248",
                                "typeString": "contract IKernel"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IKernel_$10248",
                                "typeString": "contract IKernel"
                              }
                            ],
                            "id": 9457,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2618:7:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 9460,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2618:17:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 9461,
                          "name": "preKernel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9444,
                          "src": "2639:9:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2618:30:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9463,
                        "name": "ERROR_PROTECTED_STATE_MODIFIED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9311,
                        "src": "2650:30:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 9456,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "2610:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9464,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2610:71:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9465,
                  "nodeType": "ExpressionStatement",
                  "src": "2610:71:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 9470,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 9467,
                            "name": "appId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8320,
                            "src": "2699:5:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                              "typeString": "function () view returns (bytes32)"
                            }
                          },
                          "id": 9468,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2699:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 9469,
                          "name": "preAppId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9451,
                          "src": "2710:8:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "2699:19:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9471,
                        "name": "ERROR_PROTECTED_STATE_MODIFIED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9311,
                        "src": "2720:30:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 9466,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "2691:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9472,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2691:60:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9473,
                  "nodeType": "ExpressionStatement",
                  "src": "2691:60:34"
                }
              ]
            },
            "documentation": null,
            "id": 9475,
            "name": "protectState",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 9442,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2498:0:34"
            },
            "src": "2476:282:34",
            "visibility": "internal"
          }
        ],
        "scope": 9477,
        "src": "254:2506:34"
      }
    ],
    "src": "44:2717:34"
  },
  "legacyAST": {
    "absolutePath": "@aragon/os/contracts/evmscript/EVMScriptRunner.sol",
    "exportedSymbols": {
      "EVMScriptRunner": [
        9476
      ]
    },
    "id": 9477,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 9289,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "44:24:34"
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/IEVMScriptExecutor.sol",
        "file": "./IEVMScriptExecutor.sol",
        "id": 9290,
        "nodeType": "ImportDirective",
        "scope": 9477,
        "sourceUnit": 9497,
        "src": "70:34:34",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/IEVMScriptRegistry.sol",
        "file": "./IEVMScriptRegistry.sol",
        "id": 9291,
        "nodeType": "ImportDirective",
        "scope": 9477,
        "sourceUnit": 9524,
        "src": "105:34:34",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/apps/AppStorage.sol",
        "file": "../apps/AppStorage.sol",
        "id": 9292,
        "nodeType": "ImportDirective",
        "scope": 9477,
        "sourceUnit": 8348,
        "src": "141:32:34",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/KernelConstants.sol",
        "file": "../kernel/KernelConstants.sol",
        "id": 9293,
        "nodeType": "ImportDirective",
        "scope": 9477,
        "sourceUnit": 10770,
        "src": "174:39:34",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/Initializable.sol",
        "file": "../common/Initializable.sol",
        "id": 9294,
        "nodeType": "ImportDirective",
        "scope": 9477,
        "sourceUnit": 8762,
        "src": "214:37:34",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9295,
              "name": "AppStorage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8347,
              "src": "282:10:34",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AppStorage_$8347",
                "typeString": "contract AppStorage"
              }
            },
            "id": 9296,
            "nodeType": "InheritanceSpecifier",
            "src": "282:10:34"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9297,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8761,
              "src": "294:13:34",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$8761",
                "typeString": "contract Initializable"
              }
            },
            "id": 9298,
            "nodeType": "InheritanceSpecifier",
            "src": "294:13:34"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9299,
              "name": "EVMScriptRegistryConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9503,
              "src": "309:26:34",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EVMScriptRegistryConstants_$9503",
                "typeString": "contract EVMScriptRegistryConstants"
              }
            },
            "id": 9300,
            "nodeType": "InheritanceSpecifier",
            "src": "309:26:34"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9301,
              "name": "KernelNamespaceConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10769,
              "src": "337:24:34",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KernelNamespaceConstants_$10769",
                "typeString": "contract KernelNamespaceConstants"
              }
            },
            "id": 9302,
            "nodeType": "InheritanceSpecifier",
            "src": "337:24:34"
          }
        ],
        "contractDependencies": [
          8347,
          8761,
          8869,
          9503,
          10769
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 9476,
        "linearizedBaseContracts": [
          9476,
          10769,
          9503,
          8761,
          8869,
          8347
        ],
        "name": "EVMScriptRunner",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 9305,
            "name": "ERROR_EXECUTOR_UNAVAILABLE",
            "nodeType": "VariableDeclaration",
            "scope": 9476,
            "src": "368:82:34",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 9303,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "368:6:34",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d52554e5f4558454355544f525f554e415641494c41424c45",
              "id": 9304,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "421:29:34",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_8eaa9277b7a571cc4e32be0346d713d2afa465c007646deacfabeba4f629e0be",
                "typeString": "literal_string \"EVMRUN_EXECUTOR_UNAVAILABLE\""
              },
              "value": "EVMRUN_EXECUTOR_UNAVAILABLE"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 9308,
            "name": "ERROR_EXECUTION_REVERTED",
            "nodeType": "VariableDeclaration",
            "scope": 9476,
            "src": "456:78:34",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 9306,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "456:6:34",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d52554e5f455845435554494f4e5f5245564552544544",
              "id": 9307,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "507:27:34",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_fa47b3abdfd7922e724eeccfd2f5931b98b6762d9ec2f983ed42fa5e06877fe3",
                "typeString": "literal_string \"EVMRUN_EXECUTION_REVERTED\""
              },
              "value": "EVMRUN_EXECUTION_REVERTED"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 9311,
            "name": "ERROR_PROTECTED_STATE_MODIFIED",
            "nodeType": "VariableDeclaration",
            "scope": 9476,
            "src": "540:90:34",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 9309,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "540:6:34",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d52554e5f50524f5445435445445f53544154455f4d4f444946494544",
              "id": 9310,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "597:33:34",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_93fe2db835b78d0be70801a075eae0aab8d5496824b1a06caec0dd78db98ba92",
                "typeString": "literal_string \"EVMRUN_PROTECTED_STATE_MODIFIED\""
              },
              "value": "EVMRUN_PROTECTED_STATE_MODIFIED"
            },
            "visibility": "private"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9321,
            "name": "ScriptResult",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9320,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9313,
                  "indexed": true,
                  "name": "executor",
                  "nodeType": "VariableDeclaration",
                  "scope": 9321,
                  "src": "656:24:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9312,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "656:7:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9315,
                  "indexed": false,
                  "name": "script",
                  "nodeType": "VariableDeclaration",
                  "scope": 9321,
                  "src": "682:12:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9314,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "682:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9317,
                  "indexed": false,
                  "name": "input",
                  "nodeType": "VariableDeclaration",
                  "scope": 9321,
                  "src": "696:11:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9316,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "696:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9319,
                  "indexed": false,
                  "name": "returnData",
                  "nodeType": "VariableDeclaration",
                  "scope": 9321,
                  "src": "709:16:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9318,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "709:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "655:71:34"
            },
            "src": "637:90:34"
          },
          {
            "body": {
              "id": 9336,
              "nodeType": "Block",
              "src": "819:93:34",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9332,
                            "name": "_script",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9323,
                            "src": "896:7:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 9329,
                              "name": "getEVMScriptRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9356,
                              "src": "855:20:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IEVMScriptRegistry_$9523_$",
                                "typeString": "function () view returns (contract IEVMScriptRegistry)"
                              }
                            },
                            "id": 9330,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "855:22:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IEVMScriptRegistry_$9523",
                              "typeString": "contract IEVMScriptRegistry"
                            }
                          },
                          "id": 9331,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getScriptExecutor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9522,
                          "src": "855:40:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes_memory_ptr_$returns$_t_contract$_IEVMScriptExecutor_$9496_$",
                            "typeString": "function (bytes memory) view external returns (contract IEVMScriptExecutor)"
                          }
                        },
                        "id": 9333,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "855:49:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      ],
                      "id": 9328,
                      "name": "IEVMScriptExecutor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9496,
                      "src": "836:18:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IEVMScriptExecutor_$9496_$",
                        "typeString": "type(contract IEVMScriptExecutor)"
                      }
                    },
                    "id": 9334,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "836:69:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "functionReturnParameters": 9327,
                  "id": 9335,
                  "nodeType": "Return",
                  "src": "829:76:34"
                }
              ]
            },
            "documentation": null,
            "id": 9337,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getEVMScriptExecutor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9324,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9323,
                  "name": "_script",
                  "nodeType": "VariableDeclaration",
                  "scope": 9337,
                  "src": "763:13:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9322,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "763:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "762:15:34"
            },
            "payable": false,
            "returnParameters": {
              "id": 9327,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9326,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9337,
                  "src": "799:18:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                    "typeString": "contract IEVMScriptExecutor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9325,
                    "name": "IEVMScriptExecutor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9496,
                    "src": "799:18:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "798:20:34"
            },
            "scope": 9476,
            "src": "733:179:34",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9355,
              "nodeType": "Block",
              "src": "991:158:34",
              "statements": [
                {
                  "assignments": [
                    9343
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9343,
                      "name": "registryAddr",
                      "nodeType": "VariableDeclaration",
                      "scope": 9356,
                      "src": "1001:20:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9342,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1001:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9350,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9347,
                        "name": "KERNEL_APP_ADDR_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10768,
                        "src": "1040:25:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9348,
                        "name": "EVMSCRIPT_REGISTRY_APP_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9502,
                        "src": "1067:25:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 9344,
                          "name": "kernel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8310,
                          "src": "1024:6:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IKernel_$10248_$",
                            "typeString": "function () view returns (contract IKernel)"
                          }
                        },
                        "id": 9345,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1024:8:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IKernel_$10248",
                          "typeString": "contract IKernel"
                        }
                      },
                      "id": 9346,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getApp",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10247,
                      "src": "1024:15:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32,bytes32) view external returns (address)"
                      }
                    },
                    "id": 9349,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1024:69:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1001:92:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9352,
                        "name": "registryAddr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9343,
                        "src": "1129:12:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 9351,
                      "name": "IEVMScriptRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9523,
                      "src": "1110:18:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IEVMScriptRegistry_$9523_$",
                        "typeString": "type(contract IEVMScriptRegistry)"
                      }
                    },
                    "id": 9353,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1110:32:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptRegistry_$9523",
                      "typeString": "contract IEVMScriptRegistry"
                    }
                  },
                  "functionReturnParameters": 9341,
                  "id": 9354,
                  "nodeType": "Return",
                  "src": "1103:39:34"
                }
              ]
            },
            "documentation": null,
            "id": 9356,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getEVMScriptRegistry",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9338,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "947:2:34"
            },
            "payable": false,
            "returnParameters": {
              "id": 9341,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9340,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9356,
                  "src": "971:18:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEVMScriptRegistry_$9523",
                    "typeString": "contract IEVMScriptRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9339,
                    "name": "IEVMScriptRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9523,
                    "src": "971:18:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptRegistry_$9523",
                      "typeString": "contract IEVMScriptRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "970:20:34"
            },
            "scope": 9476,
            "src": "918:231:34",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9431,
              "nodeType": "Block",
              "src": "1313:610:34",
              "statements": [
                {
                  "assignments": [
                    9373
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9373,
                      "name": "executor",
                      "nodeType": "VariableDeclaration",
                      "scope": 9432,
                      "src": "1410:27:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                        "typeString": "contract IEVMScriptExecutor"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 9372,
                        "name": "IEVMScriptExecutor",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9496,
                        "src": "1410:18:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9377,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9375,
                        "name": "_script",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9358,
                        "src": "1461:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 9374,
                      "name": "getEVMScriptExecutor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9337,
                      "src": "1440:20:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_contract$_IEVMScriptExecutor_$9496_$",
                        "typeString": "function (bytes memory) view returns (contract IEVMScriptExecutor)"
                      }
                    },
                    "id": 9376,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1440:29:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1410:59:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 9385,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9380,
                              "name": "executor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9373,
                              "src": "1495:8:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                                "typeString": "contract IEVMScriptExecutor"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                                "typeString": "contract IEVMScriptExecutor"
                              }
                            ],
                            "id": 9379,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1487:7:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 9381,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1487:17:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 9383,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1516:1:34",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 9382,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1508:7:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 9384,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1508:10:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1487:31:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9386,
                        "name": "ERROR_EXECUTOR_UNAVAILABLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9305,
                        "src": "1520:26:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 9378,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "1479:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9387,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1479:68:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9388,
                  "nodeType": "ExpressionStatement",
                  "src": "1479:68:34"
                },
                {
                  "assignments": [
                    9390
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9390,
                      "name": "sig",
                      "nodeType": "VariableDeclaration",
                      "scope": 9432,
                      "src": "1558:10:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 9389,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "1558:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9394,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9391,
                        "name": "executor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9373,
                        "src": "1571:8:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      },
                      "id": 9392,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "execScript",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9490,
                      "src": "1571:19:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,bytes memory,address[] memory) external returns (bytes memory)"
                      }
                    },
                    "id": 9393,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "selector",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "1571:28:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1558:41:34"
                },
                {
                  "assignments": [
                    9396
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9396,
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 9432,
                      "src": "1609:17:34",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 9395,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1609:5:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9404,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9399,
                        "name": "sig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9390,
                        "src": "1652:3:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9400,
                        "name": "_script",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9358,
                        "src": "1657:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9401,
                        "name": "_input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9360,
                        "src": "1666:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9402,
                        "name": "_blacklist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9363,
                        "src": "1674:10:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9397,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12657,
                        "src": "1629:3:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 9398,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encodeWithSelector",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1629:22:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes4) pure returns (bytes memory)"
                      }
                    },
                    "id": 9403,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1629:56:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1609:76:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9410,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9396,
                            "src": "1734:4:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 9407,
                                "name": "executor",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9373,
                                "src": "1711:8:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                                  "typeString": "contract IEVMScriptExecutor"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                                  "typeString": "contract IEVMScriptExecutor"
                                }
                              ],
                              "id": 9406,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1703:7:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 9408,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1703:17:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 9409,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "delegatecall",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1703:30:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_baredelegatecall_nonpayable$__$returns$_t_bool_$",
                            "typeString": "function () returns (bool)"
                          }
                        },
                        "id": 9411,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1703:36:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9412,
                        "name": "ERROR_EXECUTION_REVERTED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9308,
                        "src": "1741:24:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 9405,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "1695:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9413,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1695:71:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9414,
                  "nodeType": "ExpressionStatement",
                  "src": "1695:71:34"
                },
                {
                  "assignments": [
                    9416
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9416,
                      "name": "output",
                      "nodeType": "VariableDeclaration",
                      "scope": 9432,
                      "src": "1777:19:34",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 9415,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1777:5:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9419,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 9417,
                      "name": "returnedDataDecoded",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9441,
                      "src": "1799:19:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 9418,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1799:21:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1777:43:34"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9422,
                            "name": "executor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9373,
                            "src": "1857:8:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                              "typeString": "contract IEVMScriptExecutor"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IEVMScriptExecutor_$9496",
                              "typeString": "contract IEVMScriptExecutor"
                            }
                          ],
                          "id": 9421,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1849:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 9423,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1849:17:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9424,
                        "name": "_script",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9358,
                        "src": "1868:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9425,
                        "name": "_input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9360,
                        "src": "1877:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9426,
                        "name": "output",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9416,
                        "src": "1885:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 9420,
                      "name": "ScriptResult",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9321,
                      "src": "1836:12:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,bytes memory,bytes memory,bytes memory)"
                      }
                    },
                    "id": 9427,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1836:56:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9428,
                  "nodeType": "EmitStatement",
                  "src": "1831:61:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9429,
                    "name": "output",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9416,
                    "src": "1910:6:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 9371,
                  "id": 9430,
                  "nodeType": "Return",
                  "src": "1903:13:34"
                }
              ]
            },
            "documentation": null,
            "id": 9432,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 9366,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9365,
                  "name": "isInitialized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8703,
                  "src": "1250:13:34",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1250:13:34"
              },
              {
                "arguments": null,
                "id": 9368,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9367,
                  "name": "protectState",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9475,
                  "src": "1272:12:34",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1272:12:34"
              }
            ],
            "name": "runScript",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9364,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9358,
                  "name": "_script",
                  "nodeType": "VariableDeclaration",
                  "scope": 9432,
                  "src": "1174:13:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9357,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1174:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9360,
                  "name": "_input",
                  "nodeType": "VariableDeclaration",
                  "scope": 9432,
                  "src": "1189:12:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9359,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1189:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9363,
                  "name": "_blacklist",
                  "nodeType": "VariableDeclaration",
                  "scope": 9432,
                  "src": "1203:20:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 9361,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1203:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 9362,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1203:9:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1173:51:34"
            },
            "payable": false,
            "returnParameters": {
              "id": 9371,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9370,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9432,
                  "src": "1302:5:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9369,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1302:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1301:7:34"
            },
            "scope": 9476,
            "src": "1155:768:34",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9440,
              "nodeType": "Block",
              "src": "2083:387:34",
              "statements": [
                {
                  "externalReferences": [
                    {
                      "ret": {
                        "declaration": 9435,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2227:3:34",
                        "valueSize": 1
                      }
                    },
                    {
                      "ret": {
                        "declaration": 9435,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2299:3:34",
                        "valueSize": 1
                      }
                    },
                    {
                      "ret": {
                        "declaration": 9435,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2373:3:34",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 9437,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    let size := returndatasize()\n    switch size\n    case 0 {\n    }\n    default {\n        ret := mload(0x40)\n        mstore(0x40, add(ret, add(size, 0x20)))\n        returndatacopy(ret, 0x20, sub(size, 0x20))\n    }\n}",
                  "src": "2093:366:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9438,
                    "name": "ret",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9435,
                    "src": "2460:3:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 9436,
                  "id": 9439,
                  "nodeType": "Return",
                  "src": "2453:10:34"
                }
              ]
            },
            "documentation": "@dev copies and returns last's call data. Needs to ABI decode first",
            "id": 9441,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "returnedDataDecoded",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9433,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2046:2:34"
            },
            "payable": false,
            "returnParameters": {
              "id": 9436,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9435,
                  "name": "ret",
                  "nodeType": "VariableDeclaration",
                  "scope": 9441,
                  "src": "2072:9:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9434,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2072:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2071:11:34"
            },
            "scope": 9476,
            "src": "2018:452:34",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9474,
              "nodeType": "Block",
              "src": "2498:260:34",
              "statements": [
                {
                  "assignments": [
                    9444
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9444,
                      "name": "preKernel",
                      "nodeType": "VariableDeclaration",
                      "scope": 9475,
                      "src": "2508:17:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9443,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2508:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9449,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 9446,
                          "name": "kernel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8310,
                          "src": "2536:6:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IKernel_$10248_$",
                            "typeString": "function () view returns (contract IKernel)"
                          }
                        },
                        "id": 9447,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2536:8:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IKernel_$10248",
                          "typeString": "contract IKernel"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IKernel_$10248",
                          "typeString": "contract IKernel"
                        }
                      ],
                      "id": 9445,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "2528:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 9448,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2528:17:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2508:37:34"
                },
                {
                  "assignments": [
                    9451
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9451,
                      "name": "preAppId",
                      "nodeType": "VariableDeclaration",
                      "scope": 9475,
                      "src": "2555:16:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 9450,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2555:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9454,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 9452,
                      "name": "appId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8320,
                      "src": "2574:5:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                        "typeString": "function () view returns (bytes32)"
                      }
                    },
                    "id": 9453,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2574:7:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2555:26:34"
                },
                {
                  "id": 9455,
                  "nodeType": "PlaceholderStatement",
                  "src": "2591:1:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 9462,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 9458,
                                "name": "kernel",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8310,
                                "src": "2626:6:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IKernel_$10248_$",
                                  "typeString": "function () view returns (contract IKernel)"
                                }
                              },
                              "id": 9459,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2626:8:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IKernel_$10248",
                                "typeString": "contract IKernel"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IKernel_$10248",
                                "typeString": "contract IKernel"
                              }
                            ],
                            "id": 9457,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2618:7:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 9460,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2618:17:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 9461,
                          "name": "preKernel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9444,
                          "src": "2639:9:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2618:30:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9463,
                        "name": "ERROR_PROTECTED_STATE_MODIFIED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9311,
                        "src": "2650:30:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 9456,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "2610:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9464,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2610:71:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9465,
                  "nodeType": "ExpressionStatement",
                  "src": "2610:71:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 9470,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 9467,
                            "name": "appId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8320,
                            "src": "2699:5:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                              "typeString": "function () view returns (bytes32)"
                            }
                          },
                          "id": 9468,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2699:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 9469,
                          "name": "preAppId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9451,
                          "src": "2710:8:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "2699:19:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9471,
                        "name": "ERROR_PROTECTED_STATE_MODIFIED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9311,
                        "src": "2720:30:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 9466,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "2691:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9472,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2691:60:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9473,
                  "nodeType": "ExpressionStatement",
                  "src": "2691:60:34"
                }
              ]
            },
            "documentation": null,
            "id": 9475,
            "name": "protectState",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 9442,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2498:0:34"
            },
            "src": "2476:282:34",
            "visibility": "internal"
          }
        ],
        "scope": 9477,
        "src": "254:2506:34"
      }
    ],
    "src": "44:2717:34"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.1",
  "updatedAt": "2019-03-29T09:45:33.511Z",
  "devdoc": {
    "methods": {
      "getInitializationBlock()": {
        "return": "Block number in which the contract was initialized"
      },
      "hasInitialized()": {
        "return": "Whether the contract has been initialized by the time of the current block"
      }
    }
  },
  "userdoc": {
    "methods": {}
  }
}