{
  "contractName": "APMRegistryConstants",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "REPO_APP_NAME",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "APM_APP_NAME",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "ENS_SUB_APP_NAME",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x6060604052341561000f57600080fd5b6102dd8061001e6000396000f300606060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063023d6c031461005c5780631219d5c8146100ea578063231cb6ab14610178575b600080fd5b341561006757600080fd5b61006f610206565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100af578082015181840152602081019050610094565b50505050905090810190601f1680156100dc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156100f557600080fd5b6100fd61023f565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561013d578082015181840152602081019050610122565b50505050905090810190601f16801561016a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561018357600080fd5b61018b610278565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101cb5780820151818401526020810190506101b0565b50505050905090810190601f1680156101f85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6040805190810160405280600881526020017f61706d2d7265706f00000000000000000000000000000000000000000000000081525081565b6040805190810160405280600c81526020017f61706d2d7265676973747279000000000000000000000000000000000000000081525081565b6040805190810160405280600a81526020017f61706d2d656e7373756200000000000000000000000000000000000000000000815250815600a165627a7a7230582001ee0d387bbff9221bf4bc2d2fdfc15d43720b16c591281ad0141a25ef2d333f0029",
  "deployedBytecode": "0x606060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063023d6c031461005c5780631219d5c8146100ea578063231cb6ab14610178575b600080fd5b341561006757600080fd5b61006f610206565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100af578082015181840152602081019050610094565b50505050905090810190601f1680156100dc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156100f557600080fd5b6100fd61023f565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561013d578082015181840152602081019050610122565b50505050905090810190601f16801561016a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561018357600080fd5b61018b610278565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101cb5780820151818401526020810190506101b0565b50505050905090810190601f1680156101f85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6040805190810160405280600881526020017f61706d2d7265706f00000000000000000000000000000000000000000000000081525081565b6040805190810160405280600c81526020017f61706d2d7265676973747279000000000000000000000000000000000000000081525081565b6040805190810160405280600a81526020017f61706d2d656e7373756200000000000000000000000000000000000000000000815250815600a165627a7a7230582001ee0d387bbff9221bf4bc2d2fdfc15d43720b16c591281ad0141a25ef2d333f0029",
  "sourceMap": "226:301:14:-;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "226:301:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;415:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;357:52:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;470:54:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;415:49:14;;;;;;;;;;;;;;;;;;;;:::o;357:52::-;;;;;;;;;;;;;;;;;;;;:::o;470:54::-;;;;;;;;;;;;;;;;;;;;:::o",
  "source": "pragma solidity 0.4.18;\n\nimport \"../lib/ens/AbstractENS.sol\";\nimport \"../ens/ENSSubdomainRegistrar.sol\";\nimport \"../factory/AppProxyFactory.sol\";\nimport \"../apps/AragonApp.sol\";\nimport \"../acl/ACL.sol\";\nimport \"./Repo.sol\";\n\n\ncontract APMRegistryConstants {\n    // Cant have a regular APM appId because it is used to build APM\n    // TODO: recheck this\n    string constant public APM_APP_NAME = \"apm-registry\";\n    string constant public REPO_APP_NAME = \"apm-repo\";\n    string constant public ENS_SUB_APP_NAME = \"apm-enssub\";\n}\n\n\ncontract APMRegistry is AragonApp, AppProxyFactory, APMRegistryConstants {\n    AbstractENS ens;\n    ENSSubdomainRegistrar public registrar;\n\n    bytes32 constant public CREATE_REPO_ROLE = bytes32(1);\n\n    event NewRepo(bytes32 id, string name, address repo);\n\n    /**\n    * NEEDS CREATE_NAME_ROLE and POINT_ROOTNODE_ROLE permissions on registrar\n    * @param _registrar ENSSubdomainRegistrar instance that holds registry root node ownership\n    */\n    function initialize(ENSSubdomainRegistrar _registrar) onlyInit public {\n        initialized();\n\n        registrar = _registrar;\n        ens = registrar.ens();\n\n        registrar.pointRootNode(this);\n\n        // Check APM has all permissions it needss\n        ACL acl = ACL(kernel.acl());\n        require(acl.hasPermission(this, registrar, registrar.CREATE_NAME_ROLE()));\n        require(acl.hasPermission(this, acl, acl.CREATE_PERMISSIONS_ROLE()));\n    }\n\n    /**\n    * @notice Create new repo in registry with `_name`\n    * @param _name Repo name, must be ununsed\n    * @param _dev Address that will be given permission to create versions\n    */\n    function newRepo(string _name, address _dev) auth(CREATE_REPO_ROLE) public returns (Repo) {\n        return _newRepo(_name, _dev);\n    }\n\n    /**\n    * @notice Create new repo in registry with `_name` and first repo version\n    * @param _name Repo name\n    * @param _dev Address that will be given permission to create versions\n    * @param _initialSemanticVersion Semantic version for new repo version\n    * @param _contractAddress address for smart contract logic for version (if set to 0, it uses last versions' contractAddress)\n    * @param _contentURI External URI for fetching new version's content\n    */\n    function newRepoWithVersion(\n        string _name,\n        address _dev,\n        uint16[3] _initialSemanticVersion,\n        address _contractAddress,\n        bytes _contentURI\n    ) auth(CREATE_REPO_ROLE) public returns (Repo)\n    {\n        Repo repo = _newRepo(_name, this); // need to have permissions to create version\n        repo.newVersion(_initialSemanticVersion, _contractAddress, _contentURI);\n\n        // Give permissions to _dev\n        ACL acl = ACL(kernel.acl());\n        acl.revokePermission(this, repo, repo.CREATE_VERSION_ROLE());\n        acl.grantPermission(_dev, repo, repo.CREATE_VERSION_ROLE());\n        acl.setPermissionManager(_dev, repo, repo.CREATE_VERSION_ROLE());\n        return repo;\n    }\n\n    function _newRepo(string _name, address _dev) internal returns (Repo) {\n        require(bytes(_name).length > 0);\n\n        Repo repo = newClonedRepo();\n\n        ACL(kernel.acl()).createPermission(_dev, repo, repo.CREATE_VERSION_ROLE(), _dev);\n\n        // Creates [name] subdomain in the rootNode and sets registry as resolver\n        // This will fail if repo name already exists\n        bytes32 node = registrar.createNameAndPoint(keccak256(_name), repo);\n\n        NewRepo(node, _name, repo);\n\n        return repo;\n    }\n\n    function newClonedRepo() internal returns (Repo) {\n        return Repo(newAppProxy(kernel, repoAppId()));\n    }\n\n    function repoAppId() internal view returns (bytes32) {\n        return keccak256(registrar.rootNode(), keccak256(REPO_APP_NAME));\n    }\n}\n",
  "sourcePath": "@aragon/os/contracts/apm/APMRegistry.sol",
  "ast": {
    "attributes": {
      "absolutePath": "@aragon/os/contracts/apm/APMRegistry.sol",
      "exportedSymbols": {
        "APMRegistry": [
          6279
        ],
        "APMRegistryConstants": [
          6019
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "0.4",
            ".18"
          ]
        },
        "id": 6003,
        "name": "PragmaDirective",
        "src": "0:23:14"
      },
      {
        "attributes": {
          "SourceUnit": 10055,
          "absolutePath": "@aragon/os/contracts/lib/ens/AbstractENS.sol",
          "file": "../lib/ens/AbstractENS.sol",
          "scope": 6280,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6004,
        "name": "ImportDirective",
        "src": "25:36:14"
      },
      {
        "attributes": {
          "SourceUnit": 7584,
          "absolutePath": "@aragon/os/contracts/ens/ENSSubdomainRegistrar.sol",
          "file": "../ens/ENSSubdomainRegistrar.sol",
          "scope": 6280,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6005,
        "name": "ImportDirective",
        "src": "62:42:14"
      },
      {
        "attributes": {
          "SourceUnit": 9081,
          "absolutePath": "@aragon/os/contracts/factory/AppProxyFactory.sol",
          "file": "../factory/AppProxyFactory.sol",
          "scope": 6280,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6006,
        "name": "ImportDirective",
        "src": "105:40:14"
      },
      {
        "attributes": {
          "SourceUnit": 6969,
          "absolutePath": "@aragon/os/contracts/apps/AragonApp.sol",
          "file": "../apps/AragonApp.sol",
          "scope": 6280,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6007,
        "name": "ImportDirective",
        "src": "146:31:14"
      },
      {
        "attributes": {
          "SourceUnit": 5511,
          "absolutePath": "@aragon/os/contracts/acl/ACL.sol",
          "file": "../acl/ACL.sol",
          "scope": 6280,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6008,
        "name": "ImportDirective",
        "src": "178:24:14"
      },
      {
        "attributes": {
          "SourceUnit": 6655,
          "absolutePath": "@aragon/os/contracts/apm/Repo.sol",
          "file": "./Repo.sol",
          "scope": 6280,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6009,
        "name": "ImportDirective",
        "src": "203:20:14"
      },
      {
        "attributes": {
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            6019
          ],
          "name": "APMRegistryConstants",
          "scope": 6280
        },
        "children": [
          {
            "attributes": {
              "constant": true,
              "name": "APM_APP_NAME",
              "scope": 6019,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "string memory",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "string",
                  "type": "string storage pointer"
                },
                "id": 6010,
                "name": "ElementaryTypeName",
                "src": "357:6:14"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "hexvalue": "61706d2d7265676973747279",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "subdenomination": null,
                  "token": "string",
                  "type": "literal_string \"apm-registry\"",
                  "value": "apm-registry"
                },
                "id": 6011,
                "name": "Literal",
                "src": "395:14:14"
              }
            ],
            "id": 6012,
            "name": "VariableDeclaration",
            "src": "357:52:14"
          },
          {
            "attributes": {
              "constant": true,
              "name": "REPO_APP_NAME",
              "scope": 6019,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "string memory",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "string",
                  "type": "string storage pointer"
                },
                "id": 6013,
                "name": "ElementaryTypeName",
                "src": "415:6:14"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "hexvalue": "61706d2d7265706f",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "subdenomination": null,
                  "token": "string",
                  "type": "literal_string \"apm-repo\"",
                  "value": "apm-repo"
                },
                "id": 6014,
                "name": "Literal",
                "src": "454:10:14"
              }
            ],
            "id": 6015,
            "name": "VariableDeclaration",
            "src": "415:49:14"
          },
          {
            "attributes": {
              "constant": true,
              "name": "ENS_SUB_APP_NAME",
              "scope": 6019,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "string memory",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "string",
                  "type": "string storage pointer"
                },
                "id": 6016,
                "name": "ElementaryTypeName",
                "src": "470:6:14"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "hexvalue": "61706d2d656e73737562",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "subdenomination": null,
                  "token": "string",
                  "type": "literal_string \"apm-enssub\"",
                  "value": "apm-enssub"
                },
                "id": 6017,
                "name": "Literal",
                "src": "512:12:14"
              }
            ],
            "id": 6018,
            "name": "VariableDeclaration",
            "src": "470:54:14"
          }
        ],
        "id": 6019,
        "name": "ContractDefinition",
        "src": "226:301:14"
      },
      {
        "attributes": {
          "contractDependencies": [
            5905,
            6019,
            6870,
            6968,
            7261,
            7846,
            7877,
            9080
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            6279,
            6019,
            9080,
            6968,
            7846,
            7877,
            5905,
            7261,
            6870
          ],
          "name": "APMRegistry",
          "scope": 6280
        },
        "children": [
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "AragonApp",
                  "referencedDeclaration": 6968,
                  "type": "contract AragonApp"
                },
                "id": 6020,
                "name": "UserDefinedTypeName",
                "src": "554:9:14"
              }
            ],
            "id": 6021,
            "name": "InheritanceSpecifier",
            "src": "554:9:14"
          },
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "AppProxyFactory",
                  "referencedDeclaration": 9080,
                  "type": "contract AppProxyFactory"
                },
                "id": 6022,
                "name": "UserDefinedTypeName",
                "src": "565:15:14"
              }
            ],
            "id": 6023,
            "name": "InheritanceSpecifier",
            "src": "565:15:14"
          },
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "APMRegistryConstants",
                  "referencedDeclaration": 6019,
                  "type": "contract APMRegistryConstants"
                },
                "id": 6024,
                "name": "UserDefinedTypeName",
                "src": "582:20:14"
              }
            ],
            "id": 6025,
            "name": "InheritanceSpecifier",
            "src": "582:20:14"
          },
          {
            "attributes": {
              "constant": false,
              "name": "ens",
              "scope": 6279,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "contract AbstractENS",
              "value": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "AbstractENS",
                  "referencedDeclaration": 10054,
                  "type": "contract AbstractENS"
                },
                "id": 6026,
                "name": "UserDefinedTypeName",
                "src": "609:11:14"
              }
            ],
            "id": 6027,
            "name": "VariableDeclaration",
            "src": "609:15:14"
          },
          {
            "attributes": {
              "constant": false,
              "name": "registrar",
              "scope": 6279,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "contract ENSSubdomainRegistrar",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "ENSSubdomainRegistrar",
                  "referencedDeclaration": 7583,
                  "type": "contract ENSSubdomainRegistrar"
                },
                "id": 6028,
                "name": "UserDefinedTypeName",
                "src": "630:21:14"
              }
            ],
            "id": 6029,
            "name": "VariableDeclaration",
            "src": "630:38:14"
          },
          {
            "attributes": {
              "constant": true,
              "name": "CREATE_REPO_ROLE",
              "scope": 6279,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "bytes32",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "bytes32",
                  "type": "bytes32"
                },
                "id": 6030,
                "name": "ElementaryTypeName",
                "src": "675:7:14"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "isStructConstructorCall": false,
                  "lValueRequested": false,
                  "names": [
                    null
                  ],
                  "type": "bytes32",
                  "type_conversion": true
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "type": "type(bytes32)",
                      "value": "bytes32"
                    },
                    "id": 6031,
                    "name": "ElementaryTypeNameExpression",
                    "src": "718:7:14"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "hexvalue": "31",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "subdenomination": null,
                      "token": "number",
                      "type": "int_const 1",
                      "value": "1"
                    },
                    "id": 6032,
                    "name": "Literal",
                    "src": "726:1:14"
                  }
                ],
                "id": 6033,
                "name": "FunctionCall",
                "src": "718:10:14"
              }
            ],
            "id": 6034,
            "name": "VariableDeclaration",
            "src": "675:53:14"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "NewRepo"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "id",
                      "scope": 6042,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 6035,
                        "name": "ElementaryTypeName",
                        "src": "749:7:14"
                      }
                    ],
                    "id": 6036,
                    "name": "VariableDeclaration",
                    "src": "749:10:14"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "name",
                      "scope": 6042,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "string memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string storage pointer"
                        },
                        "id": 6037,
                        "name": "ElementaryTypeName",
                        "src": "761:6:14"
                      }
                    ],
                    "id": 6038,
                    "name": "VariableDeclaration",
                    "src": "761:11:14"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "repo",
                      "scope": 6042,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 6039,
                        "name": "ElementaryTypeName",
                        "src": "774:7:14"
                      }
                    ],
                    "id": 6040,
                    "name": "VariableDeclaration",
                    "src": "774:12:14"
                  }
                ],
                "id": 6041,
                "name": "ParameterList",
                "src": "748:39:14"
              }
            ],
            "id": 6042,
            "name": "EventDefinition",
            "src": "735:53:14"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "initialize",
              "payable": false,
              "scope": 6279,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_registrar",
                      "scope": 6099,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract ENSSubdomainRegistrar",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "ENSSubdomainRegistrar",
                          "referencedDeclaration": 7583,
                          "type": "contract ENSSubdomainRegistrar"
                        },
                        "id": 6043,
                        "name": "UserDefinedTypeName",
                        "src": "1002:21:14"
                      }
                    ],
                    "id": 6044,
                    "name": "VariableDeclaration",
                    "src": "1002:32:14"
                  }
                ],
                "id": 6045,
                "name": "ParameterList",
                "src": "1001:34:14"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6048,
                "name": "ParameterList",
                "src": "1052:0:14"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 7232,
                      "type": "modifier ()",
                      "value": "onlyInit"
                    },
                    "id": 6046,
                    "name": "Identifier",
                    "src": "1036:8:14"
                  }
                ],
                "id": 6047,
                "name": "ModifierInvocation",
                "src": "1036:8:14"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7251,
                              "type": "function ()",
                              "value": "initialized"
                            },
                            "id": 6049,
                            "name": "Identifier",
                            "src": "1062:11:14"
                          }
                        ],
                        "id": 6050,
                        "name": "FunctionCall",
                        "src": "1062:13:14"
                      }
                    ],
                    "id": 6051,
                    "name": "ExpressionStatement",
                    "src": "1062:13:14"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract ENSSubdomainRegistrar"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6029,
                              "type": "contract ENSSubdomainRegistrar",
                              "value": "registrar"
                            },
                            "id": 6052,
                            "name": "Identifier",
                            "src": "1086:9:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6044,
                              "type": "contract ENSSubdomainRegistrar",
                              "value": "_registrar"
                            },
                            "id": 6053,
                            "name": "Identifier",
                            "src": "1098:10:14"
                          }
                        ],
                        "id": 6054,
                        "name": "Assignment",
                        "src": "1086:22:14"
                      }
                    ],
                    "id": 6055,
                    "name": "ExpressionStatement",
                    "src": "1086:22:14"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract AbstractENS"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6027,
                              "type": "contract AbstractENS",
                              "value": "ens"
                            },
                            "id": 6056,
                            "name": "Identifier",
                            "src": "1118:3:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract AbstractENS",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "ens",
                                  "referencedDeclaration": 7318,
                                  "type": "function () view external returns (contract AbstractENS)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6029,
                                      "type": "contract ENSSubdomainRegistrar",
                                      "value": "registrar"
                                    },
                                    "id": 6057,
                                    "name": "Identifier",
                                    "src": "1124:9:14"
                                  }
                                ],
                                "id": 6058,
                                "name": "MemberAccess",
                                "src": "1124:13:14"
                              }
                            ],
                            "id": 6059,
                            "name": "FunctionCall",
                            "src": "1124:15:14"
                          }
                        ],
                        "id": 6060,
                        "name": "Assignment",
                        "src": "1118:21:14"
                      }
                    ],
                    "id": 6061,
                    "name": "ExpressionStatement",
                    "src": "1118:21:14"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_APMRegistry_$6279",
                                  "typeString": "contract APMRegistry"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "pointRootNode",
                              "referencedDeclaration": 7490,
                              "type": "function (address) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6029,
                                  "type": "contract ENSSubdomainRegistrar",
                                  "value": "registrar"
                                },
                                "id": 6062,
                                "name": "Identifier",
                                "src": "1150:9:14"
                              }
                            ],
                            "id": 6064,
                            "name": "MemberAccess",
                            "src": "1150:23:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12657,
                              "type": "contract APMRegistry",
                              "value": "this"
                            },
                            "id": 6065,
                            "name": "Identifier",
                            "src": "1174:4:14"
                          }
                        ],
                        "id": 6066,
                        "name": "FunctionCall",
                        "src": "1150:29:14"
                      }
                    ],
                    "id": 6067,
                    "name": "ExpressionStatement",
                    "src": "1150:29:14"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6069
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "acl",
                          "scope": 6099,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract ACL",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "ACL",
                              "referencedDeclaration": 5510,
                              "type": "contract ACL"
                            },
                            "id": 6068,
                            "name": "UserDefinedTypeName",
                            "src": "1241:3:14"
                          }
                        ],
                        "id": 6069,
                        "name": "VariableDeclaration",
                        "src": "1241:7:14"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract ACL",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IACL_$6001",
                                  "typeString": "contract IACL"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5510,
                              "type": "type(contract ACL)",
                              "value": "ACL"
                            },
                            "id": 6070,
                            "name": "Identifier",
                            "src": "1251:3:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract IACL",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "acl",
                                  "referencedDeclaration": 9518,
                                  "type": "function () view external returns (contract IACL)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6857,
                                      "type": "contract IKernel",
                                      "value": "kernel"
                                    },
                                    "id": 6071,
                                    "name": "Identifier",
                                    "src": "1255:6:14"
                                  }
                                ],
                                "id": 6072,
                                "name": "MemberAccess",
                                "src": "1255:10:14"
                              }
                            ],
                            "id": 6073,
                            "name": "FunctionCall",
                            "src": "1255:12:14"
                          }
                        ],
                        "id": 6074,
                        "name": "FunctionCall",
                        "src": "1251:17:14"
                      }
                    ],
                    "id": 6075,
                    "name": "VariableDeclarationStatement",
                    "src": "1241:27:14"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12593,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 6076,
                            "name": "Identifier",
                            "src": "1278:7:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_APMRegistry_$6279",
                                      "typeString": "contract APMRegistry"
                                    },
                                    {
                                      "typeIdentifier": "t_contract$_ENSSubdomainRegistrar_$7583",
                                      "typeString": "contract ENSSubdomainRegistrar"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "hasPermission",
                                  "referencedDeclaration": 4851,
                                  "type": "function (address,address,bytes32) view external returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6069,
                                      "type": "contract ACL",
                                      "value": "acl"
                                    },
                                    "id": 6077,
                                    "name": "Identifier",
                                    "src": "1286:3:14"
                                  }
                                ],
                                "id": 6078,
                                "name": "MemberAccess",
                                "src": "1286:17:14"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12657,
                                  "type": "contract APMRegistry",
                                  "value": "this"
                                },
                                "id": 6079,
                                "name": "Identifier",
                                "src": "1304:4:14"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6029,
                                  "type": "contract ENSSubdomainRegistrar",
                                  "value": "registrar"
                                },
                                "id": 6080,
                                "name": "Identifier",
                                "src": "1310:9:14"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes32",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "CREATE_NAME_ROLE",
                                      "referencedDeclaration": 7306,
                                      "type": "function () view external returns (bytes32)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6029,
                                          "type": "contract ENSSubdomainRegistrar",
                                          "value": "registrar"
                                        },
                                        "id": 6081,
                                        "name": "Identifier",
                                        "src": "1321:9:14"
                                      }
                                    ],
                                    "id": 6082,
                                    "name": "MemberAccess",
                                    "src": "1321:26:14"
                                  }
                                ],
                                "id": 6083,
                                "name": "FunctionCall",
                                "src": "1321:28:14"
                              }
                            ],
                            "id": 6084,
                            "name": "FunctionCall",
                            "src": "1286:64:14"
                          }
                        ],
                        "id": 6085,
                        "name": "FunctionCall",
                        "src": "1278:73:14"
                      }
                    ],
                    "id": 6086,
                    "name": "ExpressionStatement",
                    "src": "1278:73:14"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12593,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 6087,
                            "name": "Identifier",
                            "src": "1361:7:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_APMRegistry_$6279",
                                      "typeString": "contract APMRegistry"
                                    },
                                    {
                                      "typeIdentifier": "t_contract$_ACL_$5510",
                                      "typeString": "contract ACL"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "hasPermission",
                                  "referencedDeclaration": 4851,
                                  "type": "function (address,address,bytes32) view external returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6069,
                                      "type": "contract ACL",
                                      "value": "acl"
                                    },
                                    "id": 6088,
                                    "name": "Identifier",
                                    "src": "1369:3:14"
                                  }
                                ],
                                "id": 6089,
                                "name": "MemberAccess",
                                "src": "1369:17:14"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12657,
                                  "type": "contract APMRegistry",
                                  "value": "this"
                                },
                                "id": 6090,
                                "name": "Identifier",
                                "src": "1387:4:14"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6069,
                                  "type": "contract ACL",
                                  "value": "acl"
                                },
                                "id": 6091,
                                "name": "Identifier",
                                "src": "1393:3:14"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes32",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "CREATE_PERMISSIONS_ROLE",
                                      "referencedDeclaration": 4425,
                                      "type": "function () view external returns (bytes32)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6069,
                                          "type": "contract ACL",
                                          "value": "acl"
                                        },
                                        "id": 6092,
                                        "name": "Identifier",
                                        "src": "1398:3:14"
                                      }
                                    ],
                                    "id": 6093,
                                    "name": "MemberAccess",
                                    "src": "1398:27:14"
                                  }
                                ],
                                "id": 6094,
                                "name": "FunctionCall",
                                "src": "1398:29:14"
                              }
                            ],
                            "id": 6095,
                            "name": "FunctionCall",
                            "src": "1369:59:14"
                          }
                        ],
                        "id": 6096,
                        "name": "FunctionCall",
                        "src": "1361:68:14"
                      }
                    ],
                    "id": 6097,
                    "name": "ExpressionStatement",
                    "src": "1361:68:14"
                  }
                ],
                "id": 6098,
                "name": "Block",
                "src": "1052:384:14"
              }
            ],
            "id": 6099,
            "name": "FunctionDefinition",
            "src": "982:454:14"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "newRepo",
              "payable": false,
              "scope": 6279,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_name",
                      "scope": 6117,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "string memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string storage pointer"
                        },
                        "id": 6100,
                        "name": "ElementaryTypeName",
                        "src": "1650:6:14"
                      }
                    ],
                    "id": 6101,
                    "name": "VariableDeclaration",
                    "src": "1650:12:14"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_dev",
                      "scope": 6117,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 6102,
                        "name": "ElementaryTypeName",
                        "src": "1664:7:14"
                      }
                    ],
                    "id": 6103,
                    "name": "VariableDeclaration",
                    "src": "1664:12:14"
                  }
                ],
                "id": 6104,
                "name": "ParameterList",
                "src": "1649:28:14"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 6117,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract Repo",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Repo",
                          "referencedDeclaration": 6654,
                          "type": "contract Repo"
                        },
                        "id": 6108,
                        "name": "UserDefinedTypeName",
                        "src": "1717:4:14"
                      }
                    ],
                    "id": 6109,
                    "name": "VariableDeclaration",
                    "src": "1717:4:14"
                  }
                ],
                "id": 6110,
                "name": "ParameterList",
                "src": "1716:6:14"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6903,
                      "type": "modifier (bytes32)",
                      "value": "auth"
                    },
                    "id": 6105,
                    "name": "Identifier",
                    "src": "1678:4:14"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6034,
                      "type": "bytes32",
                      "value": "CREATE_REPO_ROLE"
                    },
                    "id": 6106,
                    "name": "Identifier",
                    "src": "1683:16:14"
                  }
                ],
                "id": 6107,
                "name": "ModifierInvocation",
                "src": "1678:22:14"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 6110
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract Repo",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6249,
                              "type": "function (string memory,address) returns (contract Repo)",
                              "value": "_newRepo"
                            },
                            "id": 6111,
                            "name": "Identifier",
                            "src": "1740:8:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6101,
                              "type": "string memory",
                              "value": "_name"
                            },
                            "id": 6112,
                            "name": "Identifier",
                            "src": "1749:5:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6103,
                              "type": "address",
                              "value": "_dev"
                            },
                            "id": 6113,
                            "name": "Identifier",
                            "src": "1756:4:14"
                          }
                        ],
                        "id": 6114,
                        "name": "FunctionCall",
                        "src": "1740:21:14"
                      }
                    ],
                    "id": 6115,
                    "name": "Return",
                    "src": "1733:28:14"
                  }
                ],
                "id": 6116,
                "name": "Block",
                "src": "1723:45:14"
              }
            ],
            "id": 6117,
            "name": "FunctionDefinition",
            "src": "1633:135:14"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "newRepoWithVersion",
              "payable": false,
              "scope": 6279,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_name",
                      "scope": 6193,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "string memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string storage pointer"
                        },
                        "id": 6118,
                        "name": "ElementaryTypeName",
                        "src": "2285:6:14"
                      }
                    ],
                    "id": 6119,
                    "name": "VariableDeclaration",
                    "src": "2285:12:14"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_dev",
                      "scope": 6193,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 6120,
                        "name": "ElementaryTypeName",
                        "src": "2307:7:14"
                      }
                    ],
                    "id": 6121,
                    "name": "VariableDeclaration",
                    "src": "2307:12:14"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_initialSemanticVersion",
                      "scope": 6193,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint16[3] memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint16[3] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint16",
                              "type": "uint16"
                            },
                            "id": 6122,
                            "name": "ElementaryTypeName",
                            "src": "2329:6:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "33",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 3",
                              "value": "3"
                            },
                            "id": 6123,
                            "name": "Literal",
                            "src": "2336:1:14"
                          }
                        ],
                        "id": 6124,
                        "name": "ArrayTypeName",
                        "src": "2329:9:14"
                      }
                    ],
                    "id": 6125,
                    "name": "VariableDeclaration",
                    "src": "2329:33:14"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_contractAddress",
                      "scope": 6193,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 6126,
                        "name": "ElementaryTypeName",
                        "src": "2372:7:14"
                      }
                    ],
                    "id": 6127,
                    "name": "VariableDeclaration",
                    "src": "2372:24:14"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_contentURI",
                      "scope": 6193,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 6128,
                        "name": "ElementaryTypeName",
                        "src": "2406:5:14"
                      }
                    ],
                    "id": 6129,
                    "name": "VariableDeclaration",
                    "src": "2406:17:14"
                  }
                ],
                "id": 6130,
                "name": "ParameterList",
                "src": "2275:154:14"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 6193,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract Repo",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Repo",
                          "referencedDeclaration": 6654,
                          "type": "contract Repo"
                        },
                        "id": 6134,
                        "name": "UserDefinedTypeName",
                        "src": "2469:4:14"
                      }
                    ],
                    "id": 6135,
                    "name": "VariableDeclaration",
                    "src": "2469:4:14"
                  }
                ],
                "id": 6136,
                "name": "ParameterList",
                "src": "2468:6:14"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6903,
                      "type": "modifier (bytes32)",
                      "value": "auth"
                    },
                    "id": 6131,
                    "name": "Identifier",
                    "src": "2430:4:14"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6034,
                      "type": "bytes32",
                      "value": "CREATE_REPO_ROLE"
                    },
                    "id": 6132,
                    "name": "Identifier",
                    "src": "2435:16:14"
                  }
                ],
                "id": 6133,
                "name": "ModifierInvocation",
                "src": "2430:22:14"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        6138
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "repo",
                          "scope": 6193,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract Repo",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Repo",
                              "referencedDeclaration": 6654,
                              "type": "contract Repo"
                            },
                            "id": 6137,
                            "name": "UserDefinedTypeName",
                            "src": "2489:4:14"
                          }
                        ],
                        "id": 6138,
                        "name": "VariableDeclaration",
                        "src": "2489:9:14"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract Repo",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_contract$_APMRegistry_$6279",
                                  "typeString": "contract APMRegistry"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6249,
                              "type": "function (string memory,address) returns (contract Repo)",
                              "value": "_newRepo"
                            },
                            "id": 6139,
                            "name": "Identifier",
                            "src": "2501:8:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6119,
                              "type": "string memory",
                              "value": "_name"
                            },
                            "id": 6140,
                            "name": "Identifier",
                            "src": "2510:5:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12657,
                              "type": "contract APMRegistry",
                              "value": "this"
                            },
                            "id": 6141,
                            "name": "Identifier",
                            "src": "2517:4:14"
                          }
                        ],
                        "id": 6142,
                        "name": "FunctionCall",
                        "src": "2501:21:14"
                      }
                    ],
                    "id": 6143,
                    "name": "VariableDeclarationStatement",
                    "src": "2489:33:14"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                  "typeString": "uint16[3] memory"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "newVersion",
                              "referencedDeclaration": 6437,
                              "type": "function (uint16[3] memory,address,bytes memory) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6138,
                                  "type": "contract Repo",
                                  "value": "repo"
                                },
                                "id": 6144,
                                "name": "Identifier",
                                "src": "2578:4:14"
                              }
                            ],
                            "id": 6146,
                            "name": "MemberAccess",
                            "src": "2578:15:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6125,
                              "type": "uint16[3] memory",
                              "value": "_initialSemanticVersion"
                            },
                            "id": 6147,
                            "name": "Identifier",
                            "src": "2594:23:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6127,
                              "type": "address",
                              "value": "_contractAddress"
                            },
                            "id": 6148,
                            "name": "Identifier",
                            "src": "2619:16:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6129,
                              "type": "bytes memory",
                              "value": "_contentURI"
                            },
                            "id": 6149,
                            "name": "Identifier",
                            "src": "2637:11:14"
                          }
                        ],
                        "id": 6150,
                        "name": "FunctionCall",
                        "src": "2578:71:14"
                      }
                    ],
                    "id": 6151,
                    "name": "ExpressionStatement",
                    "src": "2578:71:14"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6153
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "acl",
                          "scope": 6193,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract ACL",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "ACL",
                              "referencedDeclaration": 5510,
                              "type": "contract ACL"
                            },
                            "id": 6152,
                            "name": "UserDefinedTypeName",
                            "src": "2696:3:14"
                          }
                        ],
                        "id": 6153,
                        "name": "VariableDeclaration",
                        "src": "2696:7:14"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract ACL",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IACL_$6001",
                                  "typeString": "contract IACL"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5510,
                              "type": "type(contract ACL)",
                              "value": "ACL"
                            },
                            "id": 6154,
                            "name": "Identifier",
                            "src": "2706:3:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract IACL",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "acl",
                                  "referencedDeclaration": 9518,
                                  "type": "function () view external returns (contract IACL)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6857,
                                      "type": "contract IKernel",
                                      "value": "kernel"
                                    },
                                    "id": 6155,
                                    "name": "Identifier",
                                    "src": "2710:6:14"
                                  }
                                ],
                                "id": 6156,
                                "name": "MemberAccess",
                                "src": "2710:10:14"
                              }
                            ],
                            "id": 6157,
                            "name": "FunctionCall",
                            "src": "2710:12:14"
                          }
                        ],
                        "id": 6158,
                        "name": "FunctionCall",
                        "src": "2706:17:14"
                      }
                    ],
                    "id": 6159,
                    "name": "VariableDeclarationStatement",
                    "src": "2696:27:14"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_APMRegistry_$6279",
                                  "typeString": "contract APMRegistry"
                                },
                                {
                                  "typeIdentifier": "t_contract$_Repo_$6654",
                                  "typeString": "contract Repo"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "revokePermission",
                              "referencedDeclaration": 4680,
                              "type": "function (address,address,bytes32) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6153,
                                  "type": "contract ACL",
                                  "value": "acl"
                                },
                                "id": 6160,
                                "name": "Identifier",
                                "src": "2733:3:14"
                              }
                            ],
                            "id": 6162,
                            "name": "MemberAccess",
                            "src": "2733:20:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12657,
                              "type": "contract APMRegistry",
                              "value": "this"
                            },
                            "id": 6163,
                            "name": "Identifier",
                            "src": "2754:4:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6138,
                              "type": "contract Repo",
                              "value": "repo"
                            },
                            "id": 6164,
                            "name": "Identifier",
                            "src": "2760:4:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "CREATE_VERSION_ROLE",
                                  "referencedDeclaration": 6309,
                                  "type": "function () view external returns (bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6138,
                                      "type": "contract Repo",
                                      "value": "repo"
                                    },
                                    "id": 6165,
                                    "name": "Identifier",
                                    "src": "2766:4:14"
                                  }
                                ],
                                "id": 6166,
                                "name": "MemberAccess",
                                "src": "2766:24:14"
                              }
                            ],
                            "id": 6167,
                            "name": "FunctionCall",
                            "src": "2766:26:14"
                          }
                        ],
                        "id": 6168,
                        "name": "FunctionCall",
                        "src": "2733:60:14"
                      }
                    ],
                    "id": 6169,
                    "name": "ExpressionStatement",
                    "src": "2733:60:14"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_contract$_Repo_$6654",
                                  "typeString": "contract Repo"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "grantPermission",
                              "referencedDeclaration": 4604,
                              "type": "function (address,address,bytes32) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6153,
                                  "type": "contract ACL",
                                  "value": "acl"
                                },
                                "id": 6170,
                                "name": "Identifier",
                                "src": "2803:3:14"
                              }
                            ],
                            "id": 6172,
                            "name": "MemberAccess",
                            "src": "2803:19:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6121,
                              "type": "address",
                              "value": "_dev"
                            },
                            "id": 6173,
                            "name": "Identifier",
                            "src": "2823:4:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6138,
                              "type": "contract Repo",
                              "value": "repo"
                            },
                            "id": 6174,
                            "name": "Identifier",
                            "src": "2829:4:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "CREATE_VERSION_ROLE",
                                  "referencedDeclaration": 6309,
                                  "type": "function () view external returns (bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6138,
                                      "type": "contract Repo",
                                      "value": "repo"
                                    },
                                    "id": 6175,
                                    "name": "Identifier",
                                    "src": "2835:4:14"
                                  }
                                ],
                                "id": 6176,
                                "name": "MemberAccess",
                                "src": "2835:24:14"
                              }
                            ],
                            "id": 6177,
                            "name": "FunctionCall",
                            "src": "2835:26:14"
                          }
                        ],
                        "id": 6178,
                        "name": "FunctionCall",
                        "src": "2803:59:14"
                      }
                    ],
                    "id": 6179,
                    "name": "ExpressionStatement",
                    "src": "2803:59:14"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_contract$_Repo_$6654",
                                  "typeString": "contract Repo"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "setPermissionManager",
                              "referencedDeclaration": 4700,
                              "type": "function (address,address,bytes32) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6153,
                                  "type": "contract ACL",
                                  "value": "acl"
                                },
                                "id": 6180,
                                "name": "Identifier",
                                "src": "2872:3:14"
                              }
                            ],
                            "id": 6182,
                            "name": "MemberAccess",
                            "src": "2872:24:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6121,
                              "type": "address",
                              "value": "_dev"
                            },
                            "id": 6183,
                            "name": "Identifier",
                            "src": "2897:4:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6138,
                              "type": "contract Repo",
                              "value": "repo"
                            },
                            "id": 6184,
                            "name": "Identifier",
                            "src": "2903:4:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "CREATE_VERSION_ROLE",
                                  "referencedDeclaration": 6309,
                                  "type": "function () view external returns (bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6138,
                                      "type": "contract Repo",
                                      "value": "repo"
                                    },
                                    "id": 6185,
                                    "name": "Identifier",
                                    "src": "2909:4:14"
                                  }
                                ],
                                "id": 6186,
                                "name": "MemberAccess",
                                "src": "2909:24:14"
                              }
                            ],
                            "id": 6187,
                            "name": "FunctionCall",
                            "src": "2909:26:14"
                          }
                        ],
                        "id": 6188,
                        "name": "FunctionCall",
                        "src": "2872:64:14"
                      }
                    ],
                    "id": 6189,
                    "name": "ExpressionStatement",
                    "src": "2872:64:14"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 6136
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 6138,
                          "type": "contract Repo",
                          "value": "repo"
                        },
                        "id": 6190,
                        "name": "Identifier",
                        "src": "2953:4:14"
                      }
                    ],
                    "id": 6191,
                    "name": "Return",
                    "src": "2946:11:14"
                  }
                ],
                "id": 6192,
                "name": "Block",
                "src": "2479:485:14"
              }
            ],
            "id": 6193,
            "name": "FunctionDefinition",
            "src": "2248:716:14"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "_newRepo",
              "payable": false,
              "scope": 6279,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_name",
                      "scope": 6249,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "string memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string storage pointer"
                        },
                        "id": 6194,
                        "name": "ElementaryTypeName",
                        "src": "2988:6:14"
                      }
                    ],
                    "id": 6195,
                    "name": "VariableDeclaration",
                    "src": "2988:12:14"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_dev",
                      "scope": 6249,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 6196,
                        "name": "ElementaryTypeName",
                        "src": "3002:7:14"
                      }
                    ],
                    "id": 6197,
                    "name": "VariableDeclaration",
                    "src": "3002:12:14"
                  }
                ],
                "id": 6198,
                "name": "ParameterList",
                "src": "2987:28:14"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 6249,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract Repo",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Repo",
                          "referencedDeclaration": 6654,
                          "type": "contract Repo"
                        },
                        "id": 6199,
                        "name": "UserDefinedTypeName",
                        "src": "3034:4:14"
                      }
                    ],
                    "id": 6200,
                    "name": "VariableDeclaration",
                    "src": "3034:4:14"
                  }
                ],
                "id": 6201,
                "name": "ParameterList",
                "src": "3033:6:14"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12593,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 6202,
                            "name": "Identifier",
                            "src": "3050:7:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "length",
                                  "referencedDeclaration": null,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "bytes memory",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_string_memory_ptr",
                                              "typeString": "string memory"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(bytes storage pointer)",
                                          "value": "bytes"
                                        },
                                        "id": 6203,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "3058:5:14"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6195,
                                          "type": "string memory",
                                          "value": "_name"
                                        },
                                        "id": 6204,
                                        "name": "Identifier",
                                        "src": "3064:5:14"
                                      }
                                    ],
                                    "id": 6205,
                                    "name": "FunctionCall",
                                    "src": "3058:12:14"
                                  }
                                ],
                                "id": 6206,
                                "name": "MemberAccess",
                                "src": "3058:19:14"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 6207,
                                "name": "Literal",
                                "src": "3080:1:14"
                              }
                            ],
                            "id": 6208,
                            "name": "BinaryOperation",
                            "src": "3058:23:14"
                          }
                        ],
                        "id": 6209,
                        "name": "FunctionCall",
                        "src": "3050:32:14"
                      }
                    ],
                    "id": 6210,
                    "name": "ExpressionStatement",
                    "src": "3050:32:14"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6212
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "repo",
                          "scope": 6249,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract Repo",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Repo",
                              "referencedDeclaration": 6654,
                              "type": "contract Repo"
                            },
                            "id": 6211,
                            "name": "UserDefinedTypeName",
                            "src": "3093:4:14"
                          }
                        ],
                        "id": 6212,
                        "name": "VariableDeclaration",
                        "src": "3093:9:14"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract Repo",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6263,
                              "type": "function () returns (contract Repo)",
                              "value": "newClonedRepo"
                            },
                            "id": 6213,
                            "name": "Identifier",
                            "src": "3105:13:14"
                          }
                        ],
                        "id": 6214,
                        "name": "FunctionCall",
                        "src": "3105:15:14"
                      }
                    ],
                    "id": 6215,
                    "name": "VariableDeclarationStatement",
                    "src": "3093:27:14"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_contract$_Repo_$6654",
                                  "typeString": "contract Repo"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "createPermission",
                              "referencedDeclaration": 4583,
                              "type": "function (address,address,bytes32,address) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "contract ACL",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_IACL_$6001",
                                          "typeString": "contract IACL"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5510,
                                      "type": "type(contract ACL)",
                                      "value": "ACL"
                                    },
                                    "id": 6216,
                                    "name": "Identifier",
                                    "src": "3131:3:14"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "contract IACL",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            null
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "acl",
                                          "referencedDeclaration": 9518,
                                          "type": "function () view external returns (contract IACL)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6857,
                                              "type": "contract IKernel",
                                              "value": "kernel"
                                            },
                                            "id": 6217,
                                            "name": "Identifier",
                                            "src": "3135:6:14"
                                          }
                                        ],
                                        "id": 6218,
                                        "name": "MemberAccess",
                                        "src": "3135:10:14"
                                      }
                                    ],
                                    "id": 6219,
                                    "name": "FunctionCall",
                                    "src": "3135:12:14"
                                  }
                                ],
                                "id": 6220,
                                "name": "FunctionCall",
                                "src": "3131:17:14"
                              }
                            ],
                            "id": 6221,
                            "name": "MemberAccess",
                            "src": "3131:34:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6197,
                              "type": "address",
                              "value": "_dev"
                            },
                            "id": 6222,
                            "name": "Identifier",
                            "src": "3166:4:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6212,
                              "type": "contract Repo",
                              "value": "repo"
                            },
                            "id": 6223,
                            "name": "Identifier",
                            "src": "3172:4:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "CREATE_VERSION_ROLE",
                                  "referencedDeclaration": 6309,
                                  "type": "function () view external returns (bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6212,
                                      "type": "contract Repo",
                                      "value": "repo"
                                    },
                                    "id": 6224,
                                    "name": "Identifier",
                                    "src": "3178:4:14"
                                  }
                                ],
                                "id": 6225,
                                "name": "MemberAccess",
                                "src": "3178:24:14"
                              }
                            ],
                            "id": 6226,
                            "name": "FunctionCall",
                            "src": "3178:26:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6197,
                              "type": "address",
                              "value": "_dev"
                            },
                            "id": 6227,
                            "name": "Identifier",
                            "src": "3206:4:14"
                          }
                        ],
                        "id": 6228,
                        "name": "FunctionCall",
                        "src": "3131:80:14"
                      }
                    ],
                    "id": 6229,
                    "name": "ExpressionStatement",
                    "src": "3131:80:14"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6231
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "node",
                          "scope": 6249,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 6230,
                            "name": "ElementaryTypeName",
                            "src": "3358:7:14"
                          }
                        ],
                        "id": 6231,
                        "name": "VariableDeclaration",
                        "src": "3358:12:14"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_contract$_Repo_$6654",
                                  "typeString": "contract Repo"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "createNameAndPoint",
                              "referencedDeclaration": 7407,
                              "type": "function (bytes32,address) external returns (bytes32)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6029,
                                  "type": "contract ENSSubdomainRegistrar",
                                  "value": "registrar"
                                },
                                "id": 6232,
                                "name": "Identifier",
                                "src": "3373:9:14"
                              }
                            ],
                            "id": 6233,
                            "name": "MemberAccess",
                            "src": "3373:28:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12584,
                                  "type": "function () pure returns (bytes32)",
                                  "value": "keccak256"
                                },
                                "id": 6234,
                                "name": "Identifier",
                                "src": "3402:9:14"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6195,
                                  "type": "string memory",
                                  "value": "_name"
                                },
                                "id": 6235,
                                "name": "Identifier",
                                "src": "3412:5:14"
                              }
                            ],
                            "id": 6236,
                            "name": "FunctionCall",
                            "src": "3402:16:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6212,
                              "type": "contract Repo",
                              "value": "repo"
                            },
                            "id": 6237,
                            "name": "Identifier",
                            "src": "3420:4:14"
                          }
                        ],
                        "id": 6238,
                        "name": "FunctionCall",
                        "src": "3373:52:14"
                      }
                    ],
                    "id": 6239,
                    "name": "VariableDeclarationStatement",
                    "src": "3358:67:14"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_contract$_Repo_$6654",
                                  "typeString": "contract Repo"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6042,
                              "type": "function (bytes32,string memory,address)",
                              "value": "NewRepo"
                            },
                            "id": 6240,
                            "name": "Identifier",
                            "src": "3436:7:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6231,
                              "type": "bytes32",
                              "value": "node"
                            },
                            "id": 6241,
                            "name": "Identifier",
                            "src": "3444:4:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6195,
                              "type": "string memory",
                              "value": "_name"
                            },
                            "id": 6242,
                            "name": "Identifier",
                            "src": "3450:5:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6212,
                              "type": "contract Repo",
                              "value": "repo"
                            },
                            "id": 6243,
                            "name": "Identifier",
                            "src": "3457:4:14"
                          }
                        ],
                        "id": 6244,
                        "name": "FunctionCall",
                        "src": "3436:26:14"
                      }
                    ],
                    "id": 6245,
                    "name": "ExpressionStatement",
                    "src": "3436:26:14"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 6201
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 6212,
                          "type": "contract Repo",
                          "value": "repo"
                        },
                        "id": 6246,
                        "name": "Identifier",
                        "src": "3480:4:14"
                      }
                    ],
                    "id": 6247,
                    "name": "Return",
                    "src": "3473:11:14"
                  }
                ],
                "id": 6248,
                "name": "Block",
                "src": "3040:451:14"
              }
            ],
            "id": 6249,
            "name": "FunctionDefinition",
            "src": "2970:521:14"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "newClonedRepo",
              "payable": false,
              "scope": 6279,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6250,
                "name": "ParameterList",
                "src": "3519:2:14"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 6263,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract Repo",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Repo",
                          "referencedDeclaration": 6654,
                          "type": "contract Repo"
                        },
                        "id": 6251,
                        "name": "UserDefinedTypeName",
                        "src": "3540:4:14"
                      }
                    ],
                    "id": 6252,
                    "name": "VariableDeclaration",
                    "src": "3540:4:14"
                  }
                ],
                "id": 6253,
                "name": "ParameterList",
                "src": "3539:6:14"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 6253
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract Repo",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_AppProxyUpgradeable_$6852",
                                  "typeString": "contract AppProxyUpgradeable"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6654,
                              "type": "type(contract Repo)",
                              "value": "Repo"
                            },
                            "id": 6254,
                            "name": "Identifier",
                            "src": "3563:4:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract AppProxyUpgradeable",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IKernel_$9550",
                                      "typeString": "contract IKernel"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    9002,
                                    9031
                                  ],
                                  "referencedDeclaration": 9002,
                                  "type": "function (contract IKernel,bytes32) returns (contract AppProxyUpgradeable)",
                                  "value": "newAppProxy"
                                },
                                "id": 6255,
                                "name": "Identifier",
                                "src": "3568:11:14"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6857,
                                  "type": "contract IKernel",
                                  "value": "kernel"
                                },
                                "id": 6256,
                                "name": "Identifier",
                                "src": "3580:6:14"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes32",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6278,
                                      "type": "function () view returns (bytes32)",
                                      "value": "repoAppId"
                                    },
                                    "id": 6257,
                                    "name": "Identifier",
                                    "src": "3588:9:14"
                                  }
                                ],
                                "id": 6258,
                                "name": "FunctionCall",
                                "src": "3588:11:14"
                              }
                            ],
                            "id": 6259,
                            "name": "FunctionCall",
                            "src": "3568:32:14"
                          }
                        ],
                        "id": 6260,
                        "name": "FunctionCall",
                        "src": "3563:38:14"
                      }
                    ],
                    "id": 6261,
                    "name": "Return",
                    "src": "3556:45:14"
                  }
                ],
                "id": 6262,
                "name": "Block",
                "src": "3546:62:14"
              }
            ],
            "id": 6263,
            "name": "FunctionDefinition",
            "src": "3497:111:14"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "repoAppId",
              "payable": false,
              "scope": 6279,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6264,
                "name": "ParameterList",
                "src": "3632:2:14"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 6278,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 6265,
                        "name": "ElementaryTypeName",
                        "src": "3658:7:14"
                      }
                    ],
                    "id": 6266,
                    "name": "VariableDeclaration",
                    "src": "3658:7:14"
                  }
                ],
                "id": 6267,
                "name": "ParameterList",
                "src": "3657:9:14"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 6267
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12584,
                              "type": "function () pure returns (bytes32)",
                              "value": "keccak256"
                            },
                            "id": 6268,
                            "name": "Identifier",
                            "src": "3684:9:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "rootNode",
                                  "referencedDeclaration": 7320,
                                  "type": "function () view external returns (bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6029,
                                      "type": "contract ENSSubdomainRegistrar",
                                      "value": "registrar"
                                    },
                                    "id": 6269,
                                    "name": "Identifier",
                                    "src": "3694:9:14"
                                  }
                                ],
                                "id": 6270,
                                "name": "MemberAccess",
                                "src": "3694:18:14"
                              }
                            ],
                            "id": 6271,
                            "name": "FunctionCall",
                            "src": "3694:20:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12584,
                                  "type": "function () pure returns (bytes32)",
                                  "value": "keccak256"
                                },
                                "id": 6272,
                                "name": "Identifier",
                                "src": "3716:9:14"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6015,
                                  "type": "string memory",
                                  "value": "REPO_APP_NAME"
                                },
                                "id": 6273,
                                "name": "Identifier",
                                "src": "3726:13:14"
                              }
                            ],
                            "id": 6274,
                            "name": "FunctionCall",
                            "src": "3716:24:14"
                          }
                        ],
                        "id": 6275,
                        "name": "FunctionCall",
                        "src": "3684:57:14"
                      }
                    ],
                    "id": 6276,
                    "name": "Return",
                    "src": "3677:64:14"
                  }
                ],
                "id": 6277,
                "name": "Block",
                "src": "3667:81:14"
              }
            ],
            "id": 6278,
            "name": "FunctionDefinition",
            "src": "3614:134:14"
          }
        ],
        "id": 6279,
        "name": "ContractDefinition",
        "src": "530:3220:14"
      }
    ],
    "id": 6280,
    "name": "SourceUnit",
    "src": "0:3751:14"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.18+commit.9cf6e910.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "1.0.1",
  "updatedAt": "2018-03-14T08:41:25.086Z"
}