{
    "package": "google.protobuf",
    "syntax": "proto2",
    "options": {
        "java_package": "com.google.protobuf",
        "java_outer_classname": "DescriptorProtos",
        "optimize_for": "SPEED"
    },
    "messages": [
        {
            "name": "FileDescriptorSet",
            "syntax": "proto2",
            "fields": [
                {
                    "rule": "repeated",
                    "type": "FileDescriptorProto",
                    "name": "file",
                    "id": 1
                }
            ]
        },
        {
            "name": "FileDescriptorProto",
            "syntax": "proto2",
            "fields": [
                {
                    "rule": "optional",
                    "type": "string",
                    "name": "name",
                    "id": 1
                },
                {
                    "rule": "optional",
                    "type": "string",
                    "name": "package",
                    "id": 2
                },
                {
                    "rule": "repeated",
                    "type": "string",
                    "name": "dependency",
                    "id": 3
                },
                {
                    "rule": "repeated",
                    "type": "int32",
                    "name": "public_dependency",
                    "id": 10
                },
                {
                    "rule": "repeated",
                    "type": "int32",
                    "name": "weak_dependency",
                    "id": 11
                },
                {
                    "rule": "repeated",
                    "type": "DescriptorProto",
                    "name": "message_type",
                    "id": 4
                },
                {
                    "rule": "repeated",
                    "type": "EnumDescriptorProto",
                    "name": "enum_type",
                    "id": 5
                },
                {
                    "rule": "repeated",
                    "type": "ServiceDescriptorProto",
                    "name": "service",
                    "id": 6
                },
                {
                    "rule": "repeated",
                    "type": "FieldDescriptorProto",
                    "name": "extension",
                    "id": 7
                },
                {
                    "rule": "optional",
                    "type": "FileOptions",
                    "name": "options",
                    "id": 8
                },
                {
                    "rule": "optional",
                    "type": "SourceCodeInfo",
                    "name": "source_code_info",
                    "id": 9
                }
            ]
        },
        {
            "name": "DescriptorProto",
            "syntax": "proto2",
            "fields": [
                {
                    "rule": "optional",
                    "type": "string",
                    "name": "name",
                    "id": 1
                },
                {
                    "rule": "repeated",
                    "type": "FieldDescriptorProto",
                    "name": "field",
                    "id": 2
                },
                {
                    "rule": "repeated",
                    "type": "FieldDescriptorProto",
                    "name": "extension",
                    "id": 6
                },
                {
                    "rule": "repeated",
                    "type": "DescriptorProto",
                    "name": "nested_type",
                    "id": 3
                },
                {
                    "rule": "repeated",
                    "type": "EnumDescriptorProto",
                    "name": "enum_type",
                    "id": 4
                },
                {
                    "rule": "repeated",
                    "type": "ExtensionRange",
                    "name": "extension_range",
                    "id": 5
                },
                {
                    "rule": "optional",
                    "type": "MessageOptions",
                    "name": "options",
                    "id": 7
                }
            ],
            "messages": [
                {
                    "name": "ExtensionRange",
                    "syntax": "proto2",
                    "fields": [
                        {
                            "rule": "optional",
                            "type": "int32",
                            "name": "start",
                            "id": 1
                        },
                        {
                            "rule": "optional",
                            "type": "int32",
                            "name": "end",
                            "id": 2
                        }
                    ]
                }
            ]
        },
        {
            "name": "FieldDescriptorProto",
            "syntax": "proto2",
            "fields": [
                {
                    "rule": "optional",
                    "type": "string",
                    "name": "name",
                    "id": 1
                },
                {
                    "rule": "optional",
                    "type": "int32",
                    "name": "number",
                    "id": 3
                },
                {
                    "rule": "optional",
                    "type": "Label",
                    "name": "label",
                    "id": 4
                },
                {
                    "rule": "optional",
                    "type": "Type",
                    "name": "type",
                    "id": 5
                },
                {
                    "rule": "optional",
                    "type": "string",
                    "name": "type_name",
                    "id": 6
                },
                {
                    "rule": "optional",
                    "type": "string",
                    "name": "extendee",
                    "id": 2
                },
                {
                    "rule": "optional",
                    "type": "string",
                    "name": "default_value",
                    "id": 7
                },
                {
                    "rule": "optional",
                    "type": "FieldOptions",
                    "name": "options",
                    "id": 8
                }
            ],
            "enums": [
                {
                    "name": "Type",
                    "syntax": "proto2",
                    "values": [
                        {
                            "name": "TYPE_DOUBLE",
                            "id": 1
                        },
                        {
                            "name": "TYPE_FLOAT",
                            "id": 2
                        },
                        {
                            "name": "TYPE_INT64",
                            "id": 3
                        },
                        {
                            "name": "TYPE_UINT64",
                            "id": 4
                        },
                        {
                            "name": "TYPE_INT32",
                            "id": 5
                        },
                        {
                            "name": "TYPE_FIXED64",
                            "id": 6
                        },
                        {
                            "name": "TYPE_FIXED32",
                            "id": 7
                        },
                        {
                            "name": "TYPE_BOOL",
                            "id": 8
                        },
                        {
                            "name": "TYPE_STRING",
                            "id": 9
                        },
                        {
                            "name": "TYPE_GROUP",
                            "id": 10
                        },
                        {
                            "name": "TYPE_MESSAGE",
                            "id": 11
                        },
                        {
                            "name": "TYPE_BYTES",
                            "id": 12
                        },
                        {
                            "name": "TYPE_UINT32",
                            "id": 13
                        },
                        {
                            "name": "TYPE_ENUM",
                            "id": 14
                        },
                        {
                            "name": "TYPE_SFIXED32",
                            "id": 15
                        },
                        {
                            "name": "TYPE_SFIXED64",
                            "id": 16
                        },
                        {
                            "name": "TYPE_SINT32",
                            "id": 17
                        },
                        {
                            "name": "TYPE_SINT64",
                            "id": 18
                        }
                    ]
                },
                {
                    "name": "Label",
                    "syntax": "proto2",
                    "values": [
                        {
                            "name": "LABEL_OPTIONAL",
                            "id": 1
                        },
                        {
                            "name": "LABEL_REQUIRED",
                            "id": 2
                        },
                        {
                            "name": "LABEL_REPEATED",
                            "id": 3
                        }
                    ]
                }
            ]
        },
        {
            "name": "EnumDescriptorProto",
            "syntax": "proto2",
            "fields": [
                {
                    "rule": "optional",
                    "type": "string",
                    "name": "name",
                    "id": 1
                },
                {
                    "rule": "repeated",
                    "type": "EnumValueDescriptorProto",
                    "name": "value",
                    "id": 2
                },
                {
                    "rule": "optional",
                    "type": "EnumOptions",
                    "name": "options",
                    "id": 3
                }
            ]
        },
        {
            "name": "EnumValueDescriptorProto",
            "syntax": "proto2",
            "fields": [
                {
                    "rule": "optional",
                    "type": "string",
                    "name": "name",
                    "id": 1
                },
                {
                    "rule": "optional",
                    "type": "int32",
                    "name": "number",
                    "id": 2
                },
                {
                    "rule": "optional",
                    "type": "EnumValueOptions",
                    "name": "options",
                    "id": 3
                }
            ]
        },
        {
            "name": "ServiceDescriptorProto",
            "syntax": "proto2",
            "fields": [
                {
                    "rule": "optional",
                    "type": "string",
                    "name": "name",
                    "id": 1
                },
                {
                    "rule": "repeated",
                    "type": "MethodDescriptorProto",
                    "name": "method",
                    "id": 2
                },
                {
                    "rule": "optional",
                    "type": "ServiceOptions",
                    "name": "options",
                    "id": 3
                }
            ]
        },
        {
            "name": "MethodDescriptorProto",
            "syntax": "proto2",
            "fields": [
                {
                    "rule": "optional",
                    "type": "string",
                    "name": "name",
                    "id": 1
                },
                {
                    "rule": "optional",
                    "type": "string",
                    "name": "input_type",
                    "id": 2
                },
                {
                    "rule": "optional",
                    "type": "string",
                    "name": "output_type",
                    "id": 3
                },
                {
                    "rule": "optional",
                    "type": "MethodOptions",
                    "name": "options",
                    "id": 4
                }
            ]
        },
        {
            "name": "FileOptions",
            "syntax": "proto2",
            "fields": [
                {
                    "rule": "optional",
                    "type": "string",
                    "name": "java_package",
                    "id": 1
                },
                {
                    "rule": "optional",
                    "type": "string",
                    "name": "java_outer_classname",
                    "id": 8
                },
                {
                    "rule": "optional",
                    "type": "bool",
                    "name": "java_multiple_files",
                    "id": 10,
                    "options": {
                        "default": false
                    }
                },
                {
                    "rule": "optional",
                    "type": "bool",
                    "name": "java_generate_equals_and_hash",
                    "id": 20,
                    "options": {
                        "default": false
                    }
                },
                {
                    "rule": "optional",
                    "type": "OptimizeMode",
                    "name": "optimize_for",
                    "id": 9,
                    "options": {
                        "default": "SPEED"
                    }
                },
                {
                    "rule": "optional",
                    "type": "string",
                    "name": "go_package",
                    "id": 11
                },
                {
                    "rule": "optional",
                    "type": "bool",
                    "name": "cc_generic_services",
                    "id": 16,
                    "options": {
                        "default": false
                    }
                },
                {
                    "rule": "optional",
                    "type": "bool",
                    "name": "java_generic_services",
                    "id": 17,
                    "options": {
                        "default": false
                    }
                },
                {
                    "rule": "optional",
                    "type": "bool",
                    "name": "py_generic_services",
                    "id": 18,
                    "options": {
                        "default": false
                    }
                },
                {
                    "rule": "repeated",
                    "type": "UninterpretedOption",
                    "name": "uninterpreted_option",
                    "id": 999
                }
            ],
            "extensions": [
                [
                    1000,
                    536870911
                ]
            ],
            "enums": [
                {
                    "name": "OptimizeMode",
                    "syntax": "proto2",
                    "values": [
                        {
                            "name": "SPEED",
                            "id": 1
                        },
                        {
                            "name": "CODE_SIZE",
                            "id": 2
                        },
                        {
                            "name": "LITE_RUNTIME",
                            "id": 3
                        }
                    ]
                }
            ]
        },
        {
            "name": "MessageOptions",
            "syntax": "proto2",
            "fields": [
                {
                    "rule": "optional",
                    "type": "bool",
                    "name": "message_set_wire_format",
                    "id": 1,
                    "options": {
                        "default": false
                    }
                },
                {
                    "rule": "optional",
                    "type": "bool",
                    "name": "no_standard_descriptor_accessor",
                    "id": 2,
                    "options": {
                        "default": false
                    }
                },
                {
                    "rule": "repeated",
                    "type": "UninterpretedOption",
                    "name": "uninterpreted_option",
                    "id": 999
                }
            ],
            "extensions": [
                [
                    1000,
                    536870911
                ]
            ]
        },
        {
            "name": "FieldOptions",
            "syntax": "proto2",
            "fields": [
                {
                    "rule": "optional",
                    "type": "CType",
                    "name": "ctype",
                    "id": 1,
                    "options": {
                        "default": "STRING"
                    }
                },
                {
                    "rule": "optional",
                    "type": "bool",
                    "name": "packed",
                    "id": 2
                },
                {
                    "rule": "optional",
                    "type": "bool",
                    "name": "lazy",
                    "id": 5,
                    "options": {
                        "default": false
                    }
                },
                {
                    "rule": "optional",
                    "type": "bool",
                    "name": "deprecated",
                    "id": 3,
                    "options": {
                        "default": false
                    }
                },
                {
                    "rule": "optional",
                    "type": "string",
                    "name": "experimental_map_key",
                    "id": 9
                },
                {
                    "rule": "optional",
                    "type": "bool",
                    "name": "weak",
                    "id": 10,
                    "options": {
                        "default": false
                    }
                },
                {
                    "rule": "repeated",
                    "type": "UninterpretedOption",
                    "name": "uninterpreted_option",
                    "id": 999
                }
            ],
            "extensions": [
                [
                    1000,
                    536870911
                ]
            ],
            "enums": [
                {
                    "name": "CType",
                    "syntax": "proto2",
                    "values": [
                        {
                            "name": "STRING",
                            "id": 0
                        },
                        {
                            "name": "CORD",
                            "id": 1
                        },
                        {
                            "name": "STRING_PIECE",
                            "id": 2
                        }
                    ]
                }
            ]
        },
        {
            "name": "EnumOptions",
            "syntax": "proto2",
            "fields": [
                {
                    "rule": "optional",
                    "type": "bool",
                    "name": "allow_alias",
                    "id": 2,
                    "options": {
                        "default": true
                    }
                },
                {
                    "rule": "repeated",
                    "type": "UninterpretedOption",
                    "name": "uninterpreted_option",
                    "id": 999
                }
            ],
            "extensions": [
                [
                    1000,
                    536870911
                ]
            ]
        },
        {
            "name": "EnumValueOptions",
            "syntax": "proto2",
            "fields": [
                {
                    "rule": "repeated",
                    "type": "UninterpretedOption",
                    "name": "uninterpreted_option",
                    "id": 999
                }
            ],
            "extensions": [
                [
                    1000,
                    536870911
                ]
            ]
        },
        {
            "name": "ServiceOptions",
            "syntax": "proto2",
            "fields": [
                {
                    "rule": "repeated",
                    "type": "UninterpretedOption",
                    "name": "uninterpreted_option",
                    "id": 999
                }
            ],
            "extensions": [
                [
                    1000,
                    536870911
                ]
            ]
        },
        {
            "name": "MethodOptions",
            "syntax": "proto2",
            "fields": [
                {
                    "rule": "repeated",
                    "type": "UninterpretedOption",
                    "name": "uninterpreted_option",
                    "id": 999
                }
            ],
            "extensions": [
                [
                    1000,
                    536870911
                ]
            ]
        },
        {
            "name": "UninterpretedOption",
            "syntax": "proto2",
            "fields": [
                {
                    "rule": "repeated",
                    "type": "NamePart",
                    "name": "name",
                    "id": 2
                },
                {
                    "rule": "optional",
                    "type": "string",
                    "name": "identifier_value",
                    "id": 3
                },
                {
                    "rule": "optional",
                    "type": "uint64",
                    "name": "positive_int_value",
                    "id": 4
                },
                {
                    "rule": "optional",
                    "type": "int64",
                    "name": "negative_int_value",
                    "id": 5
                },
                {
                    "rule": "optional",
                    "type": "double",
                    "name": "double_value",
                    "id": 6
                },
                {
                    "rule": "optional",
                    "type": "bytes",
                    "name": "string_value",
                    "id": 7
                },
                {
                    "rule": "optional",
                    "type": "string",
                    "name": "aggregate_value",
                    "id": 8
                }
            ],
            "messages": [
                {
                    "name": "NamePart",
                    "syntax": "proto2",
                    "fields": [
                        {
                            "rule": "required",
                            "type": "string",
                            "name": "name_part",
                            "id": 1
                        },
                        {
                            "rule": "required",
                            "type": "bool",
                            "name": "is_extension",
                            "id": 2
                        }
                    ]
                }
            ]
        },
        {
            "name": "SourceCodeInfo",
            "syntax": "proto2",
            "fields": [
                {
                    "rule": "repeated",
                    "type": "Location",
                    "name": "location",
                    "id": 1
                }
            ],
            "messages": [
                {
                    "name": "Location",
                    "syntax": "proto2",
                    "fields": [
                        {
                            "rule": "repeated",
                            "type": "int32",
                            "name": "path",
                            "id": 1,
                            "options": {
                                "packed": true
                            }
                        },
                        {
                            "rule": "repeated",
                            "type": "int32",
                            "name": "span",
                            "id": 2,
                            "options": {
                                "packed": true
                            }
                        },
                        {
                            "rule": "optional",
                            "type": "string",
                            "name": "leading_comments",
                            "id": 3
                        },
                        {
                            "rule": "optional",
                            "type": "string",
                            "name": "trailing_comments",
                            "id": 4
                        }
                    ]
                }
            ]
        }
    ],
    "isNamespace": true
}