{
  "contractName": "KernelProxy",
  "abi": [
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "bytes32"
        },
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "apps",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isDepositable",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "recoveryVaultAppId",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_kernelImpl",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "payable": true,
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "ProxyDeposit",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "proxyType",
      "outputs": [
        {
          "name": "proxyTypeId",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "implementation",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506040516020806106328339810180604052810190808051906020019092919050505061004b81610114640100000000026401000000009004565b151561005657600080fd5b806000807fc681a85306374a5ab27f0bbc385296a54bcd314a1948b6cf61c4ea1bc44bb9f86001026000191660001916815260200190815260200160002060007f3b4bf6bf3ad5000ecf0f989d5befde585c6860fea3e574a4fab4c49d1c177d9c6001026000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610166565b600080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156101555760009150610160565b823b90506000811191505b50919050565b6104bd806101756000396000f30060806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c9146101655780634558850c1461019057806348a0c8dd1461020f5780635c60da1b1461023e57806386070cfe14610295575b60006127105a101561011a5760003411801561008c5750600080369050145b151561009757600080fd5b61009f6102c8565b15156100aa57600080fd5b7f15eeaa57c7bd188c1388020bcadc2c436ec60d647d36ef5b9eb3c742217ddee13334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1610162565b6101226102ff565b9050610161816000368080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050506103a0565b5b50005b34801561017157600080fd5b5061017a6103e3565b6040518082815260200191505060405180910390f35b34801561019c57600080fd5b506101cd600480360381019080803560001916906020019092919080356000191690602001909291905050506103ec565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561021b57600080fd5b506102246102c8565b604051808215151515815260200191505060405180910390f35b34801561024a57600080fd5b506102536102ff565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102a157600080fd5b506102aa61042e565b60405180826000191660001916815260200191505060405180910390f35b60006102fa7f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea60010260001916610434565b905090565b60008060007fc681a85306374a5ab27f0bbc385296a54bcd314a1948b6cf61c4ea1bc44bb9f86001026000191660001916815260200190815260200160002060007f3b4bf6bf3ad5000ecf0f989d5befde585c6860fea3e574a4fab4c49d1c177d9c6001026000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006103ab8361043f565b15156103b657600080fd5b612710905060008083516020850186855a03f43d604051816000823e82600081146103df578282f35b8282fd5b60006002905090565b60006020528160005260406000206020528060005260406000206000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015481565b600081549050919050565b600080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610480576000915061048b565b823b90506000811191505b509190505600a165627a7a72305820fe12c379ea39fa43cb0d5478ecb6af9ec0e6bc5e1c6e0c5a3451dae188aef4d50029",
  "deployedBytecode": "0x60806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c9146101655780634558850c1461019057806348a0c8dd1461020f5780635c60da1b1461023e57806386070cfe14610295575b60006127105a101561011a5760003411801561008c5750600080369050145b151561009757600080fd5b61009f6102c8565b15156100aa57600080fd5b7f15eeaa57c7bd188c1388020bcadc2c436ec60d647d36ef5b9eb3c742217ddee13334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1610162565b6101226102ff565b9050610161816000368080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050506103a0565b5b50005b34801561017157600080fd5b5061017a6103e3565b6040518082815260200191505060405180910390f35b34801561019c57600080fd5b506101cd600480360381019080803560001916906020019092919080356000191690602001909291905050506103ec565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561021b57600080fd5b506102246102c8565b604051808215151515815260200191505060405180910390f35b34801561024a57600080fd5b506102536102ff565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102a157600080fd5b506102aa61042e565b60405180826000191660001916815260200191505060405180910390f35b60006102fa7f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea60010260001916610434565b905090565b60008060007fc681a85306374a5ab27f0bbc385296a54bcd314a1948b6cf61c4ea1bc44bb9f86001026000191660001916815260200190815260200160002060007f3b4bf6bf3ad5000ecf0f989d5befde585c6860fea3e574a4fab4c49d1c177d9c6001026000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006103ab8361043f565b15156103b657600080fd5b612710905060008083516020850186855a03f43d604051816000823e82600081146103df578282f35b8282fd5b60006002905090565b60006020528160005260406000206020528060005260406000206000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015481565b600081549050919050565b600080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610480576000915061048b565b823b90506000811191505b509190505600a165627a7a72305820fe12c379ea39fa43cb0d5478ecb6af9ec0e6bc5e1c6e0c5a3451dae188aef4d50029",
  "sourceMap": "197:970:46:-;;;584:169;8:9:-1;5:2;;;30:1;27;20:12;5:2;584:169:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;642:32;661:11;642:10;;;:32;;;:::i;:::-;634:41;;;;;;;;735:11;685:4;:27;1115:66:45;690:21:46;;685:27;;;;;;;;;;;;;;;;;:47;426:66:45;713:18:46;;685:47;;;;;;;;;;;;;;;;;;:61;;;;;;;;;;;;;;;;;;584:169;197:970;;426:244:27;486:4;576:12;525:1;506:21;;:7;:21;;;502:64;;;550:5;543:12;;;;502:64;629:7;617:20;609:28;;662:1;655:4;:8;648:15;;426:244;;;;;:::o;197:970:46:-;;;;;;;",
  "deployedSourceMap": "197:970:46:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;546:14:21;192:5:20;295:9:21;:25;291:343;;;356:1;344:9;:13;:37;;;;;380:1;361:8;;:15;;:20;344:37;336:46;;;;;;;;404:15;:13;:15::i;:::-;396:24;;;;;;;;439:35;452:10;464:9;439:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;291:343;;;563:16;:14;:16::i;:::-;546:33;;593:30;606:6;614:8;;593:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:12;:30::i;:::-;291:343;225:415;197:970:46;854:98;;8:9:-1;5:2;;;30:1;27;20:12;5:2;854:98:46;;;;;;;;;;;;;;;;;;;;;;;93:61:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;93:61:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;323:113:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;323:113:22;;;;;;;;;;;;;;;;;;;;;;;;;;;1038:127:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1038:127:46;;;;;;;;;;;;;;;;;;;;;;;;;;;160:33:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;160:33:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;323:113:22;369:4;392:37;250:66;392:20;;:35;;;;:37::i;:::-;385:44;;323:113;:::o;1038:127:46:-;1085:7;1111:4;:27;1115:66:45;1116:21:46;;1111:27;;;;;;;;;;;;;;;;;:47;426:66:45;1139:18:46;;1111:47;;;;;;;;;;;;;;;;;;;;;;;;;;;1104:54;;1038:127;:::o;460:679:20:-;567:19;540:16;551:4;540:10;:16::i;:::-;532:25;;;;;;;;192:5;567:35;;735:1;732;720:9;714:16;707:4;696:9;692:20;686:4;672:11;667:3;663:21;650:87;762:14;806:4;800:11;847:4;844:1;839:3;824:28;1046:6;1058:1;1053:28;;;;1116:4;1111:3;1104:17;1053:28;1074:4;1069:3;1062:17;854:98:46;896:19;181:1:53;927:18:46;;854:98;:::o;93:61:47:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;160:33::-;;;;:::o;105:128:31:-;170:9;216:8;210:15;202:23;;200:27;;;:::o;426:244:27:-;486:4;576:12;525:1;506:21;;:7;:21;;;502:64;;;550:5;543:12;;;;502:64;629:7;617:20;609:28;;662:1;655:4;:8;648:15;;426:244;;;;;:::o",
  "source": "pragma solidity 0.4.24;\n\nimport \"./IKernel.sol\";\nimport \"./KernelConstants.sol\";\nimport \"./KernelStorage.sol\";\nimport \"../common/DepositableDelegateProxy.sol\";\nimport \"../common/IsContract.sol\";\n\n\ncontract KernelProxy is KernelStorage, KernelAppIds, KernelNamespaceConstants, IsContract, DepositableDelegateProxy {\n    /**\n    * @dev KernelProxy is a proxy contract to a kernel implementation. The implementation\n    *      can update the reference, which effectively upgrades the contract\n    * @param _kernelImpl Address of the contract used as implementation for kernel\n    */\n    constructor(IKernel _kernelImpl) public {\n        require(isContract(address(_kernelImpl)));\n        apps[KERNEL_CORE_NAMESPACE][KERNEL_CORE_APP_ID] = _kernelImpl;\n    }\n\n    /**\n     * @dev ERC897, whether it is a forwarding (1) or an upgradeable (2) proxy\n     */\n    function proxyType() public pure returns (uint256 proxyTypeId) {\n        return UPGRADEABLE;\n    }\n\n    /**\n    * @dev ERC897, the address the proxy would delegate calls to\n    */\n    function implementation() public view returns (address) {\n        return apps[KERNEL_CORE_NAMESPACE][KERNEL_CORE_APP_ID];\n    }\n}\n",
  "sourcePath": "@aragon/os/contracts/kernel/KernelProxy.sol",
  "ast": {
    "absolutePath": "@aragon/os/contracts/kernel/KernelProxy.sol",
    "exportedSymbols": {
      "KernelProxy": [
        10829
      ]
    },
    "id": 10830,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 10771,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:46"
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/IKernel.sol",
        "file": "./IKernel.sol",
        "id": 10772,
        "nodeType": "ImportDirective",
        "scope": 10830,
        "sourceUnit": 10249,
        "src": "25:23:46",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/KernelConstants.sol",
        "file": "./KernelConstants.sol",
        "id": 10773,
        "nodeType": "ImportDirective",
        "scope": 10830,
        "sourceUnit": 10770,
        "src": "49:31:46",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/KernelStorage.sol",
        "file": "./KernelStorage.sol",
        "id": 10774,
        "nodeType": "ImportDirective",
        "scope": 10830,
        "sourceUnit": 10841,
        "src": "81:29:46",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/DepositableDelegateProxy.sol",
        "file": "../common/DepositableDelegateProxy.sol",
        "id": 10775,
        "nodeType": "ImportDirective",
        "scope": 10830,
        "sourceUnit": 8582,
        "src": "111:48:46",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/IsContract.sol",
        "file": "../common/IsContract.sol",
        "id": 10776,
        "nodeType": "ImportDirective",
        "scope": 10830,
        "sourceUnit": 8790,
        "src": "160:34:46",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10777,
              "name": "KernelStorage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10840,
              "src": "221:13:46",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KernelStorage_$10840",
                "typeString": "contract KernelStorage"
              }
            },
            "id": 10778,
            "nodeType": "InheritanceSpecifier",
            "src": "221:13:46"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10779,
              "name": "KernelAppIds",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10759,
              "src": "236:12:46",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KernelAppIds_$10759",
                "typeString": "contract KernelAppIds"
              }
            },
            "id": 10780,
            "nodeType": "InheritanceSpecifier",
            "src": "236:12:46"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10781,
              "name": "KernelNamespaceConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10769,
              "src": "250:24:46",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KernelNamespaceConstants_$10769",
                "typeString": "contract KernelNamespaceConstants"
              }
            },
            "id": 10782,
            "nodeType": "InheritanceSpecifier",
            "src": "250:24:46"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10783,
              "name": "IsContract",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8789,
              "src": "276:10:46",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IsContract_$8789",
                "typeString": "contract IsContract"
              }
            },
            "id": 10784,
            "nodeType": "InheritanceSpecifier",
            "src": "276:10:46"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10785,
              "name": "DepositableDelegateProxy",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8581,
              "src": "288:24:46",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DepositableDelegateProxy_$8581",
                "typeString": "contract DepositableDelegateProxy"
              }
            },
            "id": 10786,
            "nodeType": "InheritanceSpecifier",
            "src": "288:24:46"
          }
        ],
        "contractDependencies": [
          8519,
          8581,
          8613,
          8789,
          10759,
          10769,
          10840,
          11872
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 10829,
        "linearizedBaseContracts": [
          10829,
          8581,
          8519,
          8789,
          11872,
          8613,
          10769,
          10759,
          10840
        ],
        "name": "KernelProxy",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 10807,
              "nodeType": "Block",
              "src": "624:129:46",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10794,
                                "name": "_kernelImpl",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10788,
                                "src": "661:11:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IKernel_$10248",
                                  "typeString": "contract IKernel"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IKernel_$10248",
                                  "typeString": "contract IKernel"
                                }
                              ],
                              "id": 10793,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "653:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 10795,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "653:20:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10792,
                          "name": "isContract",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8788,
                          "src": "642:10:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 10796,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "642:32:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 10791,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12673,
                      "src": "634:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 10797,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "634:41:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10798,
                  "nodeType": "ExpressionStatement",
                  "src": "634:41:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10805,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 10799,
                          "name": "apps",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10837,
                          "src": "685:4:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
                            "typeString": "mapping(bytes32 => mapping(bytes32 => address))"
                          }
                        },
                        "id": 10802,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 10800,
                          "name": "KERNEL_CORE_NAMESPACE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10762,
                          "src": "690:21:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "685:27:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 10803,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 10801,
                        "name": "KERNEL_CORE_APP_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10752,
                        "src": "713:18:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "685:47:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 10804,
                      "name": "_kernelImpl",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10788,
                      "src": "735:11:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IKernel_$10248",
                        "typeString": "contract IKernel"
                      }
                    },
                    "src": "685:61:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 10806,
                  "nodeType": "ExpressionStatement",
                  "src": "685:61:46"
                }
              ]
            },
            "documentation": "@dev KernelProxy is a proxy contract to a kernel implementation. The implementation\n     can update the reference, which effectively upgrades the contract\n@param _kernelImpl Address of the contract used as implementation for kernel",
            "id": 10808,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10789,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10788,
                  "name": "_kernelImpl",
                  "nodeType": "VariableDeclaration",
                  "scope": 10808,
                  "src": "596:19:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IKernel_$10248",
                    "typeString": "contract IKernel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10787,
                    "name": "IKernel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10248,
                    "src": "596:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IKernel_$10248",
                      "typeString": "contract IKernel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "595:21:46"
            },
            "payable": false,
            "returnParameters": {
              "id": 10790,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "624:0:46"
            },
            "scope": 10829,
            "src": "584:169:46",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10815,
              "nodeType": "Block",
              "src": "917:35:46",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10813,
                    "name": "UPGRADEABLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11861,
                    "src": "934:11:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 10812,
                  "id": 10814,
                  "nodeType": "Return",
                  "src": "927:18:46"
                }
              ]
            },
            "documentation": "@dev ERC897, whether it is a forwarding (1) or an upgradeable (2) proxy",
            "id": 10816,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "proxyType",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10809,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "872:2:46"
            },
            "payable": false,
            "returnParameters": {
              "id": 10812,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10811,
                  "name": "proxyTypeId",
                  "nodeType": "VariableDeclaration",
                  "scope": 10816,
                  "src": "896:19:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10810,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "896:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "895:21:46"
            },
            "scope": 10829,
            "src": "854:98:46",
            "stateMutability": "pure",
            "superFunction": 11866,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10827,
              "nodeType": "Block",
              "src": "1094:71:46",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 10821,
                        "name": "apps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10837,
                        "src": "1111:4:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
                          "typeString": "mapping(bytes32 => mapping(bytes32 => address))"
                        }
                      },
                      "id": 10823,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 10822,
                        "name": "KERNEL_CORE_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10762,
                        "src": "1116:21:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1111:27:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                        "typeString": "mapping(bytes32 => address)"
                      }
                    },
                    "id": 10825,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 10824,
                      "name": "KERNEL_CORE_APP_ID",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10752,
                      "src": "1139:18:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1111:47:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 10820,
                  "id": 10826,
                  "nodeType": "Return",
                  "src": "1104:54:46"
                }
              ]
            },
            "documentation": "@dev ERC897, the address the proxy would delegate calls to",
            "id": 10828,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "implementation",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10817,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1061:2:46"
            },
            "payable": false,
            "returnParameters": {
              "id": 10820,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10819,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10828,
                  "src": "1085:7:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10818,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1085:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1084:9:46"
            },
            "scope": 10829,
            "src": "1038:127:46",
            "stateMutability": "view",
            "superFunction": 11871,
            "visibility": "public"
          }
        ],
        "scope": 10830,
        "src": "197:970:46"
      }
    ],
    "src": "0:1168:46"
  },
  "legacyAST": {
    "absolutePath": "@aragon/os/contracts/kernel/KernelProxy.sol",
    "exportedSymbols": {
      "KernelProxy": [
        10829
      ]
    },
    "id": 10830,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 10771,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:46"
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/IKernel.sol",
        "file": "./IKernel.sol",
        "id": 10772,
        "nodeType": "ImportDirective",
        "scope": 10830,
        "sourceUnit": 10249,
        "src": "25:23:46",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/KernelConstants.sol",
        "file": "./KernelConstants.sol",
        "id": 10773,
        "nodeType": "ImportDirective",
        "scope": 10830,
        "sourceUnit": 10770,
        "src": "49:31:46",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/KernelStorage.sol",
        "file": "./KernelStorage.sol",
        "id": 10774,
        "nodeType": "ImportDirective",
        "scope": 10830,
        "sourceUnit": 10841,
        "src": "81:29:46",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/DepositableDelegateProxy.sol",
        "file": "../common/DepositableDelegateProxy.sol",
        "id": 10775,
        "nodeType": "ImportDirective",
        "scope": 10830,
        "sourceUnit": 8582,
        "src": "111:48:46",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/IsContract.sol",
        "file": "../common/IsContract.sol",
        "id": 10776,
        "nodeType": "ImportDirective",
        "scope": 10830,
        "sourceUnit": 8790,
        "src": "160:34:46",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10777,
              "name": "KernelStorage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10840,
              "src": "221:13:46",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KernelStorage_$10840",
                "typeString": "contract KernelStorage"
              }
            },
            "id": 10778,
            "nodeType": "InheritanceSpecifier",
            "src": "221:13:46"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10779,
              "name": "KernelAppIds",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10759,
              "src": "236:12:46",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KernelAppIds_$10759",
                "typeString": "contract KernelAppIds"
              }
            },
            "id": 10780,
            "nodeType": "InheritanceSpecifier",
            "src": "236:12:46"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10781,
              "name": "KernelNamespaceConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10769,
              "src": "250:24:46",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KernelNamespaceConstants_$10769",
                "typeString": "contract KernelNamespaceConstants"
              }
            },
            "id": 10782,
            "nodeType": "InheritanceSpecifier",
            "src": "250:24:46"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10783,
              "name": "IsContract",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8789,
              "src": "276:10:46",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IsContract_$8789",
                "typeString": "contract IsContract"
              }
            },
            "id": 10784,
            "nodeType": "InheritanceSpecifier",
            "src": "276:10:46"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10785,
              "name": "DepositableDelegateProxy",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8581,
              "src": "288:24:46",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DepositableDelegateProxy_$8581",
                "typeString": "contract DepositableDelegateProxy"
              }
            },
            "id": 10786,
            "nodeType": "InheritanceSpecifier",
            "src": "288:24:46"
          }
        ],
        "contractDependencies": [
          8519,
          8581,
          8613,
          8789,
          10759,
          10769,
          10840,
          11872
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 10829,
        "linearizedBaseContracts": [
          10829,
          8581,
          8519,
          8789,
          11872,
          8613,
          10769,
          10759,
          10840
        ],
        "name": "KernelProxy",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 10807,
              "nodeType": "Block",
              "src": "624:129:46",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10794,
                                "name": "_kernelImpl",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10788,
                                "src": "661:11:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IKernel_$10248",
                                  "typeString": "contract IKernel"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IKernel_$10248",
                                  "typeString": "contract IKernel"
                                }
                              ],
                              "id": 10793,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "653:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 10795,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "653:20:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10792,
                          "name": "isContract",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8788,
                          "src": "642:10:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 10796,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "642:32:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 10791,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12673,
                      "src": "634:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 10797,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "634:41:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10798,
                  "nodeType": "ExpressionStatement",
                  "src": "634:41:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10805,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 10799,
                          "name": "apps",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10837,
                          "src": "685:4:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
                            "typeString": "mapping(bytes32 => mapping(bytes32 => address))"
                          }
                        },
                        "id": 10802,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 10800,
                          "name": "KERNEL_CORE_NAMESPACE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10762,
                          "src": "690:21:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "685:27:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 10803,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 10801,
                        "name": "KERNEL_CORE_APP_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10752,
                        "src": "713:18:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "685:47:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 10804,
                      "name": "_kernelImpl",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10788,
                      "src": "735:11:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IKernel_$10248",
                        "typeString": "contract IKernel"
                      }
                    },
                    "src": "685:61:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 10806,
                  "nodeType": "ExpressionStatement",
                  "src": "685:61:46"
                }
              ]
            },
            "documentation": "@dev KernelProxy is a proxy contract to a kernel implementation. The implementation\n     can update the reference, which effectively upgrades the contract\n@param _kernelImpl Address of the contract used as implementation for kernel",
            "id": 10808,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10789,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10788,
                  "name": "_kernelImpl",
                  "nodeType": "VariableDeclaration",
                  "scope": 10808,
                  "src": "596:19:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IKernel_$10248",
                    "typeString": "contract IKernel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10787,
                    "name": "IKernel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10248,
                    "src": "596:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IKernel_$10248",
                      "typeString": "contract IKernel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "595:21:46"
            },
            "payable": false,
            "returnParameters": {
              "id": 10790,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "624:0:46"
            },
            "scope": 10829,
            "src": "584:169:46",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10815,
              "nodeType": "Block",
              "src": "917:35:46",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10813,
                    "name": "UPGRADEABLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11861,
                    "src": "934:11:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 10812,
                  "id": 10814,
                  "nodeType": "Return",
                  "src": "927:18:46"
                }
              ]
            },
            "documentation": "@dev ERC897, whether it is a forwarding (1) or an upgradeable (2) proxy",
            "id": 10816,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "proxyType",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10809,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "872:2:46"
            },
            "payable": false,
            "returnParameters": {
              "id": 10812,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10811,
                  "name": "proxyTypeId",
                  "nodeType": "VariableDeclaration",
                  "scope": 10816,
                  "src": "896:19:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10810,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "896:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "895:21:46"
            },
            "scope": 10829,
            "src": "854:98:46",
            "stateMutability": "pure",
            "superFunction": 11866,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10827,
              "nodeType": "Block",
              "src": "1094:71:46",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 10821,
                        "name": "apps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10837,
                        "src": "1111:4:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
                          "typeString": "mapping(bytes32 => mapping(bytes32 => address))"
                        }
                      },
                      "id": 10823,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 10822,
                        "name": "KERNEL_CORE_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10762,
                        "src": "1116:21:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1111:27:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                        "typeString": "mapping(bytes32 => address)"
                      }
                    },
                    "id": 10825,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 10824,
                      "name": "KERNEL_CORE_APP_ID",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10752,
                      "src": "1139:18:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1111:47:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 10820,
                  "id": 10826,
                  "nodeType": "Return",
                  "src": "1104:54:46"
                }
              ]
            },
            "documentation": "@dev ERC897, the address the proxy would delegate calls to",
            "id": 10828,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "implementation",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10817,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1061:2:46"
            },
            "payable": false,
            "returnParameters": {
              "id": 10820,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10819,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10828,
                  "src": "1085:7:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10818,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1085:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1084:9:46"
            },
            "scope": 10829,
            "src": "1038:127:46",
            "stateMutability": "view",
            "superFunction": 11871,
            "visibility": "public"
          }
        ],
        "scope": 10830,
        "src": "197:970:46"
      }
    ],
    "src": "0:1168:46"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.1",
  "updatedAt": "2019-03-29T09:45:33.525Z",
  "devdoc": {
    "methods": {
      "implementation()": {
        "details": "ERC897, the address the proxy would delegate calls to"
      },
      "proxyType()": {
        "details": "ERC897, whether it is a forwarding (1) or an upgradeable (2) proxy"
      }
    }
  },
  "userdoc": {
    "methods": {}
  }
}