internal/impl: fix WhichOneof() to work with synthetic oneofs

This is the equivalent of CL 638495, but for the Opaque API.

While the behavior is the same for non-synthetic oneofs between
the Open Struct API and Opaque API, the behavior for synthetic oneofs
is not the same: Because the Opaque API uses a bitfield to store
presence, we need to use the Opaque presence check in WhichOneof().

This CL extends the testproto generator to use the protoc
command-line flag for the test3 testproto (which specifies
syntax = "proto3";), as the in-file api_level is only available
in .proto files using editions (but editions does not use synthetic
oneofs for optional fields, only proto3 does).

For golang/protobuf#1659

Change-Id: I0a1fd6e5fc6f96eeab043f966728ce2a14dbd446
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/638515
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Chressie Himpel <chressie@google.com>
diff --git a/internal/cmd/generate-protos/main.go b/internal/cmd/generate-protos/main.go
index 5d95201..c42f908 100644
--- a/internal/cmd/generate-protos/main.go
+++ b/internal/cmd/generate-protos/main.go
@@ -182,7 +182,13 @@
 			if matches := goPackageRe.FindStringSubmatch(line); matches != nil {
 				goPkg := matches[1]
 				hybridGoPkg := strings.TrimSuffix(goPkg, "/") + "/" + filepath.Base(goPkg) + "_hybrid"
-				return `option go_package = "` + hybridGoPkg + `";` + "\n" +
+				goPackage := `option go_package = "` + hybridGoPkg + `";` + "\n"
+				if strings.HasPrefix(relPath, "internal/testprotos/test3/") {
+					// The test3 testproto must remain on syntax = "proto3";
+					// and therefore cannot use the editions-only api_level.
+					return goPackage
+				}
+				return goPackage +
 					`import "google/protobuf/go_features.proto";` + "\n" +
 					`option features.(pb.go).api_level = API_HYBRID;`
 			}
@@ -211,7 +217,13 @@
 			if matches := goPackageRe.FindStringSubmatch(line); matches != nil {
 				goPkg := matches[1]
 				opaqueGoPkg := strings.TrimSuffix(goPkg, "/") + "/" + filepath.Base(goPkg) + "_opaque"
-				return `option go_package = "` + opaqueGoPkg + `";` + "\n" +
+				goPackage := `option go_package = "` + opaqueGoPkg + `";` + "\n"
+				if strings.HasPrefix(relPath, "internal/testprotos/test3/") {
+					// The test3 testproto must remain on syntax = "proto3";
+					// and therefore cannot use the editions-only api_level.
+					return goPackage
+				}
+				return goPackage +
 					`import "google/protobuf/go_features.proto";` + "\n" +
 					`option features.(pb.go).api_level = API_OPAQUE;`
 			}
@@ -248,6 +260,12 @@
 	}{
 		{path: "internal/testprotos/required"},
 		{path: "internal/testprotos/testeditions"},
+		{
+			path: "internal/testprotos/test3",
+			exclude: map[string]bool{
+				"internal/testprotos/test3/test_extension.proto": true,
+			},
+		},
 		{path: "internal/testprotos/enums"},
 		{path: "internal/testprotos/textpbeditions"},
 		{path: "internal/testprotos/messageset"},
@@ -359,6 +377,18 @@
 			if d.annotate[filepath.ToSlash(relPath)] {
 				opts += ",annotate_code"
 			}
+			if strings.HasPrefix(relPath, "internal/testprotos/test3/") {
+				variant := strings.TrimPrefix(relPath, "internal/testprotos/test3/")
+				if idx := strings.IndexByte(variant, '/'); idx > -1 {
+					variant = variant[:idx]
+				}
+				switch variant {
+				case "test3_hybrid":
+					opts += fmt.Sprintf(",apilevelM%v=%v", relPath, "API_HYBRID")
+				case "test3_opaque":
+					opts += fmt.Sprintf(",apilevelM%v=%v", relPath, "API_OPAQUE")
+				}
+			}
 			protoc("-I"+filepath.Join(repoRoot, "src"), "-I"+filepath.Join(protoRoot, "src"), "-I"+repoRoot, "--go_out="+opts+":"+tmpDir, filepath.Join(repoRoot, relPath))
 			return nil
 		})
diff --git a/internal/impl/message_opaque.go b/internal/impl/message_opaque.go
index d407dd7..d7ec53f 100644
--- a/internal/impl/message_opaque.go
+++ b/internal/impl/message_opaque.go
@@ -88,9 +88,7 @@
 	mi.oneofs = map[protoreflect.Name]*oneofInfo{}
 	for i := 0; i < mi.Desc.Oneofs().Len(); i++ {
 		od := mi.Desc.Oneofs().Get(i)
-		if !od.IsSynthetic() {
-			mi.oneofs[od.Name()] = makeOneofInfo(od, si.structInfo, mi.Exporter)
-		}
+		mi.oneofs[od.Name()] = makeOneofInfoOpaque(mi, od, si.structInfo, mi.Exporter)
 	}
 
 	mi.denseFields = make([]*fieldInfo, fds.Len()*2)
@@ -119,6 +117,26 @@
 	return true
 }
 
+func makeOneofInfoOpaque(mi *MessageInfo, od protoreflect.OneofDescriptor, si structInfo, x exporter) *oneofInfo {
+	oi := &oneofInfo{oneofDesc: od}
+	if od.IsSynthetic() {
+		fd := od.Fields().Get(0)
+		index, _ := presenceIndex(mi.Desc, fd)
+		oi.which = func(p pointer) protoreflect.FieldNumber {
+			if p.IsNil() {
+				return 0
+			}
+			if !mi.present(p, index) {
+				return 0
+			}
+			return od.Fields().Get(0).Number()
+		}
+		return oi
+	}
+	// Dispatch to non-opaque oneof implementation for non-synthetic oneofs.
+	return makeOneofInfo(od, si, x)
+}
+
 func (mi *MessageInfo) fieldInfoForMapOpaque(si opaqueStructInfo, fd protoreflect.FieldDescriptor, fs reflect.StructField) fieldInfo {
 	ft := fs.Type
 	if ft.Kind() != reflect.Map {
diff --git a/internal/testprotos/test3/test3_hybrid/test.hybrid.pb.go b/internal/testprotos/test3/test3_hybrid/test.hybrid.pb.go
new file mode 100644
index 0000000..2188403
--- /dev/null
+++ b/internal/testprotos/test3/test3_hybrid/test.hybrid.pb.go
@@ -0,0 +1,2762 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: internal/testprotos/test3/test3_hybrid/test.hybrid.proto
+
+//go:build !protoopaque
+
+package test3_hybrid
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+)
+
+type ForeignEnum int32
+
+const (
+	ForeignEnum_FOREIGN_ZERO ForeignEnum = 0
+	ForeignEnum_FOREIGN_FOO  ForeignEnum = 4
+	ForeignEnum_FOREIGN_BAR  ForeignEnum = 5
+	ForeignEnum_FOREIGN_BAZ  ForeignEnum = 6
+)
+
+// Enum value maps for ForeignEnum.
+var (
+	ForeignEnum_name = map[int32]string{
+		0: "FOREIGN_ZERO",
+		4: "FOREIGN_FOO",
+		5: "FOREIGN_BAR",
+		6: "FOREIGN_BAZ",
+	}
+	ForeignEnum_value = map[string]int32{
+		"FOREIGN_ZERO": 0,
+		"FOREIGN_FOO":  4,
+		"FOREIGN_BAR":  5,
+		"FOREIGN_BAZ":  6,
+	}
+)
+
+func (x ForeignEnum) Enum() *ForeignEnum {
+	p := new(ForeignEnum)
+	*p = x
+	return p
+}
+
+func (x ForeignEnum) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ForeignEnum) Descriptor() protoreflect.EnumDescriptor {
+	return file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_enumTypes[0].Descriptor()
+}
+
+func (ForeignEnum) Type() protoreflect.EnumType {
+	return &file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_enumTypes[0]
+}
+
+func (x ForeignEnum) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+type TestAllTypes_NestedEnum int32
+
+const (
+	TestAllTypes_FOO TestAllTypes_NestedEnum = 0
+	TestAllTypes_BAR TestAllTypes_NestedEnum = 1
+	TestAllTypes_BAZ TestAllTypes_NestedEnum = 2
+	TestAllTypes_NEG TestAllTypes_NestedEnum = -1 // Intentionally negative.
+)
+
+// Enum value maps for TestAllTypes_NestedEnum.
+var (
+	TestAllTypes_NestedEnum_name = map[int32]string{
+		0:  "FOO",
+		1:  "BAR",
+		2:  "BAZ",
+		-1: "NEG",
+	}
+	TestAllTypes_NestedEnum_value = map[string]int32{
+		"FOO": 0,
+		"BAR": 1,
+		"BAZ": 2,
+		"NEG": -1,
+	}
+)
+
+func (x TestAllTypes_NestedEnum) Enum() *TestAllTypes_NestedEnum {
+	p := new(TestAllTypes_NestedEnum)
+	*p = x
+	return p
+}
+
+func (x TestAllTypes_NestedEnum) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (TestAllTypes_NestedEnum) Descriptor() protoreflect.EnumDescriptor {
+	return file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_enumTypes[1].Descriptor()
+}
+
+func (TestAllTypes_NestedEnum) Type() protoreflect.EnumType {
+	return &file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_enumTypes[1]
+}
+
+func (x TestAllTypes_NestedEnum) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+type TestAllTypes struct {
+	state                  protoimpl.MessageState                 `protogen:"hybrid.v1"`
+	SingularInt32          int32                                  `protobuf:"varint,81,opt,name=singular_int32,json=singularInt32,proto3" json:"singular_int32,omitempty"`
+	SingularInt64          int64                                  `protobuf:"varint,82,opt,name=singular_int64,json=singularInt64,proto3" json:"singular_int64,omitempty"`
+	SingularUint32         uint32                                 `protobuf:"varint,83,opt,name=singular_uint32,json=singularUint32,proto3" json:"singular_uint32,omitempty"`
+	SingularUint64         uint64                                 `protobuf:"varint,84,opt,name=singular_uint64,json=singularUint64,proto3" json:"singular_uint64,omitempty"`
+	SingularSint32         int32                                  `protobuf:"zigzag32,85,opt,name=singular_sint32,json=singularSint32,proto3" json:"singular_sint32,omitempty"`
+	SingularSint64         int64                                  `protobuf:"zigzag64,86,opt,name=singular_sint64,json=singularSint64,proto3" json:"singular_sint64,omitempty"`
+	SingularFixed32        uint32                                 `protobuf:"fixed32,87,opt,name=singular_fixed32,json=singularFixed32,proto3" json:"singular_fixed32,omitempty"`
+	SingularFixed64        uint64                                 `protobuf:"fixed64,88,opt,name=singular_fixed64,json=singularFixed64,proto3" json:"singular_fixed64,omitempty"`
+	SingularSfixed32       int32                                  `protobuf:"fixed32,89,opt,name=singular_sfixed32,json=singularSfixed32,proto3" json:"singular_sfixed32,omitempty"`
+	SingularSfixed64       int64                                  `protobuf:"fixed64,90,opt,name=singular_sfixed64,json=singularSfixed64,proto3" json:"singular_sfixed64,omitempty"`
+	SingularFloat          float32                                `protobuf:"fixed32,91,opt,name=singular_float,json=singularFloat,proto3" json:"singular_float,omitempty"`
+	SingularDouble         float64                                `protobuf:"fixed64,92,opt,name=singular_double,json=singularDouble,proto3" json:"singular_double,omitempty"`
+	SingularBool           bool                                   `protobuf:"varint,93,opt,name=singular_bool,json=singularBool,proto3" json:"singular_bool,omitempty"`
+	SingularString         string                                 `protobuf:"bytes,94,opt,name=singular_string,json=singularString,proto3" json:"singular_string,omitempty"`
+	SingularBytes          []byte                                 `protobuf:"bytes,95,opt,name=singular_bytes,json=singularBytes,proto3" json:"singular_bytes,omitempty"`
+	SingularNestedMessage  *TestAllTypes_NestedMessage            `protobuf:"bytes,98,opt,name=singular_nested_message,json=singularNestedMessage,proto3" json:"singular_nested_message,omitempty"`
+	SingularForeignMessage *ForeignMessage                        `protobuf:"bytes,99,opt,name=singular_foreign_message,json=singularForeignMessage,proto3" json:"singular_foreign_message,omitempty"`
+	SingularImportMessage  *ImportMessage                         `protobuf:"bytes,100,opt,name=singular_import_message,json=singularImportMessage,proto3" json:"singular_import_message,omitempty"`
+	SingularNestedEnum     TestAllTypes_NestedEnum                `protobuf:"varint,101,opt,name=singular_nested_enum,json=singularNestedEnum,proto3,enum=hybrid.goproto.proto.test3.TestAllTypes_NestedEnum" json:"singular_nested_enum,omitempty"`
+	SingularForeignEnum    ForeignEnum                            `protobuf:"varint,102,opt,name=singular_foreign_enum,json=singularForeignEnum,proto3,enum=hybrid.goproto.proto.test3.ForeignEnum" json:"singular_foreign_enum,omitempty"`
+	SingularImportEnum     ImportEnum                             `protobuf:"varint,103,opt,name=singular_import_enum,json=singularImportEnum,proto3,enum=hybrid.goproto.proto.test3.ImportEnum" json:"singular_import_enum,omitempty"`
+	OptionalInt32          *int32                                 `protobuf:"varint,1,opt,name=optional_int32,json=optionalInt32,proto3,oneof" json:"optional_int32,omitempty"`
+	OptionalInt64          *int64                                 `protobuf:"varint,2,opt,name=optional_int64,json=optionalInt64,proto3,oneof" json:"optional_int64,omitempty"`
+	OptionalUint32         *uint32                                `protobuf:"varint,3,opt,name=optional_uint32,json=optionalUint32,proto3,oneof" json:"optional_uint32,omitempty"`
+	OptionalUint64         *uint64                                `protobuf:"varint,4,opt,name=optional_uint64,json=optionalUint64,proto3,oneof" json:"optional_uint64,omitempty"`
+	OptionalSint32         *int32                                 `protobuf:"zigzag32,5,opt,name=optional_sint32,json=optionalSint32,proto3,oneof" json:"optional_sint32,omitempty"`
+	OptionalSint64         *int64                                 `protobuf:"zigzag64,6,opt,name=optional_sint64,json=optionalSint64,proto3,oneof" json:"optional_sint64,omitempty"`
+	OptionalFixed32        *uint32                                `protobuf:"fixed32,7,opt,name=optional_fixed32,json=optionalFixed32,proto3,oneof" json:"optional_fixed32,omitempty"`
+	OptionalFixed64        *uint64                                `protobuf:"fixed64,8,opt,name=optional_fixed64,json=optionalFixed64,proto3,oneof" json:"optional_fixed64,omitempty"`
+	OptionalSfixed32       *int32                                 `protobuf:"fixed32,9,opt,name=optional_sfixed32,json=optionalSfixed32,proto3,oneof" json:"optional_sfixed32,omitempty"`
+	OptionalSfixed64       *int64                                 `protobuf:"fixed64,10,opt,name=optional_sfixed64,json=optionalSfixed64,proto3,oneof" json:"optional_sfixed64,omitempty"`
+	OptionalFloat          *float32                               `protobuf:"fixed32,11,opt,name=optional_float,json=optionalFloat,proto3,oneof" json:"optional_float,omitempty"`
+	OptionalDouble         *float64                               `protobuf:"fixed64,12,opt,name=optional_double,json=optionalDouble,proto3,oneof" json:"optional_double,omitempty"`
+	OptionalBool           *bool                                  `protobuf:"varint,13,opt,name=optional_bool,json=optionalBool,proto3,oneof" json:"optional_bool,omitempty"`
+	OptionalString         *string                                `protobuf:"bytes,14,opt,name=optional_string,json=optionalString,proto3,oneof" json:"optional_string,omitempty"`
+	OptionalBytes          []byte                                 `protobuf:"bytes,15,opt,name=optional_bytes,json=optionalBytes,proto3,oneof" json:"optional_bytes,omitempty"`
+	OptionalNestedMessage  *TestAllTypes_NestedMessage            `protobuf:"bytes,18,opt,name=optional_nested_message,json=optionalNestedMessage,proto3,oneof" json:"optional_nested_message,omitempty"`
+	OptionalForeignMessage *ForeignMessage                        `protobuf:"bytes,19,opt,name=optional_foreign_message,json=optionalForeignMessage,proto3,oneof" json:"optional_foreign_message,omitempty"`
+	OptionalImportMessage  *ImportMessage                         `protobuf:"bytes,20,opt,name=optional_import_message,json=optionalImportMessage,proto3,oneof" json:"optional_import_message,omitempty"`
+	OptionalNestedEnum     *TestAllTypes_NestedEnum               `protobuf:"varint,21,opt,name=optional_nested_enum,json=optionalNestedEnum,proto3,enum=hybrid.goproto.proto.test3.TestAllTypes_NestedEnum,oneof" json:"optional_nested_enum,omitempty"`
+	OptionalForeignEnum    *ForeignEnum                           `protobuf:"varint,22,opt,name=optional_foreign_enum,json=optionalForeignEnum,proto3,enum=hybrid.goproto.proto.test3.ForeignEnum,oneof" json:"optional_foreign_enum,omitempty"`
+	OptionalImportEnum     *ImportEnum                            `protobuf:"varint,23,opt,name=optional_import_enum,json=optionalImportEnum,proto3,enum=hybrid.goproto.proto.test3.ImportEnum,oneof" json:"optional_import_enum,omitempty"`
+	RepeatedInt32          []int32                                `protobuf:"varint,31,rep,packed,name=repeated_int32,json=repeatedInt32,proto3" json:"repeated_int32,omitempty"`
+	RepeatedInt64          []int64                                `protobuf:"varint,32,rep,packed,name=repeated_int64,json=repeatedInt64,proto3" json:"repeated_int64,omitempty"`
+	RepeatedUint32         []uint32                               `protobuf:"varint,33,rep,packed,name=repeated_uint32,json=repeatedUint32,proto3" json:"repeated_uint32,omitempty"`
+	RepeatedUint64         []uint64                               `protobuf:"varint,34,rep,packed,name=repeated_uint64,json=repeatedUint64,proto3" json:"repeated_uint64,omitempty"`
+	RepeatedSint32         []int32                                `protobuf:"zigzag32,35,rep,packed,name=repeated_sint32,json=repeatedSint32,proto3" json:"repeated_sint32,omitempty"`
+	RepeatedSint64         []int64                                `protobuf:"zigzag64,36,rep,packed,name=repeated_sint64,json=repeatedSint64,proto3" json:"repeated_sint64,omitempty"`
+	RepeatedFixed32        []uint32                               `protobuf:"fixed32,37,rep,packed,name=repeated_fixed32,json=repeatedFixed32,proto3" json:"repeated_fixed32,omitempty"`
+	RepeatedFixed64        []uint64                               `protobuf:"fixed64,38,rep,packed,name=repeated_fixed64,json=repeatedFixed64,proto3" json:"repeated_fixed64,omitempty"`
+	RepeatedSfixed32       []int32                                `protobuf:"fixed32,39,rep,packed,name=repeated_sfixed32,json=repeatedSfixed32,proto3" json:"repeated_sfixed32,omitempty"`
+	RepeatedSfixed64       []int64                                `protobuf:"fixed64,40,rep,packed,name=repeated_sfixed64,json=repeatedSfixed64,proto3" json:"repeated_sfixed64,omitempty"`
+	RepeatedFloat          []float32                              `protobuf:"fixed32,41,rep,packed,name=repeated_float,json=repeatedFloat,proto3" json:"repeated_float,omitempty"`
+	RepeatedDouble         []float64                              `protobuf:"fixed64,42,rep,packed,name=repeated_double,json=repeatedDouble,proto3" json:"repeated_double,omitempty"`
+	RepeatedBool           []bool                                 `protobuf:"varint,43,rep,packed,name=repeated_bool,json=repeatedBool,proto3" json:"repeated_bool,omitempty"`
+	RepeatedString         []string                               `protobuf:"bytes,44,rep,name=repeated_string,json=repeatedString,proto3" json:"repeated_string,omitempty"`
+	RepeatedBytes          [][]byte                               `protobuf:"bytes,45,rep,name=repeated_bytes,json=repeatedBytes,proto3" json:"repeated_bytes,omitempty"`
+	RepeatedNestedMessage  []*TestAllTypes_NestedMessage          `protobuf:"bytes,48,rep,name=repeated_nested_message,json=repeatedNestedMessage,proto3" json:"repeated_nested_message,omitempty"`
+	RepeatedForeignMessage []*ForeignMessage                      `protobuf:"bytes,49,rep,name=repeated_foreign_message,json=repeatedForeignMessage,proto3" json:"repeated_foreign_message,omitempty"`
+	RepeatedImportmessage  []*ImportMessage                       `protobuf:"bytes,50,rep,name=repeated_importmessage,json=repeatedImportmessage,proto3" json:"repeated_importmessage,omitempty"`
+	RepeatedNestedEnum     []TestAllTypes_NestedEnum              `protobuf:"varint,51,rep,packed,name=repeated_nested_enum,json=repeatedNestedEnum,proto3,enum=hybrid.goproto.proto.test3.TestAllTypes_NestedEnum" json:"repeated_nested_enum,omitempty"`
+	RepeatedForeignEnum    []ForeignEnum                          `protobuf:"varint,52,rep,packed,name=repeated_foreign_enum,json=repeatedForeignEnum,proto3,enum=hybrid.goproto.proto.test3.ForeignEnum" json:"repeated_foreign_enum,omitempty"`
+	RepeatedImportenum     []ImportEnum                           `protobuf:"varint,53,rep,packed,name=repeated_importenum,json=repeatedImportenum,proto3,enum=hybrid.goproto.proto.test3.ImportEnum" json:"repeated_importenum,omitempty"`
+	MapInt32Int32          map[int32]int32                        `protobuf:"bytes,56,rep,name=map_int32_int32,json=mapInt32Int32,proto3" json:"map_int32_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapInt64Int64          map[int64]int64                        `protobuf:"bytes,57,rep,name=map_int64_int64,json=mapInt64Int64,proto3" json:"map_int64_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapUint32Uint32        map[uint32]uint32                      `protobuf:"bytes,58,rep,name=map_uint32_uint32,json=mapUint32Uint32,proto3" json:"map_uint32_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapUint64Uint64        map[uint64]uint64                      `protobuf:"bytes,59,rep,name=map_uint64_uint64,json=mapUint64Uint64,proto3" json:"map_uint64_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapSint32Sint32        map[int32]int32                        `protobuf:"bytes,60,rep,name=map_sint32_sint32,json=mapSint32Sint32,proto3" json:"map_sint32_sint32,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
+	MapSint64Sint64        map[int64]int64                        `protobuf:"bytes,61,rep,name=map_sint64_sint64,json=mapSint64Sint64,proto3" json:"map_sint64_sint64,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
+	MapFixed32Fixed32      map[uint32]uint32                      `protobuf:"bytes,62,rep,name=map_fixed32_fixed32,json=mapFixed32Fixed32,proto3" json:"map_fixed32_fixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapFixed64Fixed64      map[uint64]uint64                      `protobuf:"bytes,63,rep,name=map_fixed64_fixed64,json=mapFixed64Fixed64,proto3" json:"map_fixed64_fixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapSfixed32Sfixed32    map[int32]int32                        `protobuf:"bytes,64,rep,name=map_sfixed32_sfixed32,json=mapSfixed32Sfixed32,proto3" json:"map_sfixed32_sfixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapSfixed64Sfixed64    map[int64]int64                        `protobuf:"bytes,65,rep,name=map_sfixed64_sfixed64,json=mapSfixed64Sfixed64,proto3" json:"map_sfixed64_sfixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapInt32Float          map[int32]float32                      `protobuf:"bytes,66,rep,name=map_int32_float,json=mapInt32Float,proto3" json:"map_int32_float,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	MapInt32Double         map[int32]float64                      `protobuf:"bytes,67,rep,name=map_int32_double,json=mapInt32Double,proto3" json:"map_int32_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	MapBoolBool            map[bool]bool                          `protobuf:"bytes,68,rep,name=map_bool_bool,json=mapBoolBool,proto3" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapStringString        map[string]string                      `protobuf:"bytes,69,rep,name=map_string_string,json=mapStringString,proto3" json:"map_string_string,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapStringBytes         map[string][]byte                      `protobuf:"bytes,70,rep,name=map_string_bytes,json=mapStringBytes,proto3" json:"map_string_bytes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapStringNestedMessage map[string]*TestAllTypes_NestedMessage `protobuf:"bytes,71,rep,name=map_string_nested_message,json=mapStringNestedMessage,proto3" json:"map_string_nested_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MapStringNestedEnum    map[string]TestAllTypes_NestedEnum     `protobuf:"bytes,73,rep,name=map_string_nested_enum,json=mapStringNestedEnum,proto3" json:"map_string_nested_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=hybrid.goproto.proto.test3.TestAllTypes_NestedEnum"`
+	// Types that are valid to be assigned to OneofField:
+	//
+	//	*TestAllTypes_OneofUint32
+	//	*TestAllTypes_OneofNestedMessage
+	//	*TestAllTypes_OneofString
+	//	*TestAllTypes_OneofBytes
+	//	*TestAllTypes_OneofBool
+	//	*TestAllTypes_OneofUint64
+	//	*TestAllTypes_OneofFloat
+	//	*TestAllTypes_OneofDouble
+	//	*TestAllTypes_OneofEnum
+	OneofField    isTestAllTypes_OneofField `protobuf_oneof:"oneof_field"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *TestAllTypes) Reset() {
+	*x = TestAllTypes{}
+	mi := &file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestAllTypes) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestAllTypes) ProtoMessage() {}
+
+func (x *TestAllTypes) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestAllTypes) GetSingularInt32() int32 {
+	if x != nil {
+		return x.SingularInt32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularInt64() int64 {
+	if x != nil {
+		return x.SingularInt64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularUint32() uint32 {
+	if x != nil {
+		return x.SingularUint32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularUint64() uint64 {
+	if x != nil {
+		return x.SingularUint64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularSint32() int32 {
+	if x != nil {
+		return x.SingularSint32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularSint64() int64 {
+	if x != nil {
+		return x.SingularSint64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularFixed32() uint32 {
+	if x != nil {
+		return x.SingularFixed32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularFixed64() uint64 {
+	if x != nil {
+		return x.SingularFixed64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularSfixed32() int32 {
+	if x != nil {
+		return x.SingularSfixed32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularSfixed64() int64 {
+	if x != nil {
+		return x.SingularSfixed64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularFloat() float32 {
+	if x != nil {
+		return x.SingularFloat
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularDouble() float64 {
+	if x != nil {
+		return x.SingularDouble
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularBool() bool {
+	if x != nil {
+		return x.SingularBool
+	}
+	return false
+}
+
+func (x *TestAllTypes) GetSingularString() string {
+	if x != nil {
+		return x.SingularString
+	}
+	return ""
+}
+
+func (x *TestAllTypes) GetSingularBytes() []byte {
+	if x != nil {
+		return x.SingularBytes
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetSingularNestedMessage() *TestAllTypes_NestedMessage {
+	if x != nil {
+		return x.SingularNestedMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetSingularForeignMessage() *ForeignMessage {
+	if x != nil {
+		return x.SingularForeignMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetSingularImportMessage() *ImportMessage {
+	if x != nil {
+		return x.SingularImportMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetSingularNestedEnum() TestAllTypes_NestedEnum {
+	if x != nil {
+		return x.SingularNestedEnum
+	}
+	return TestAllTypes_FOO
+}
+
+func (x *TestAllTypes) GetSingularForeignEnum() ForeignEnum {
+	if x != nil {
+		return x.SingularForeignEnum
+	}
+	return ForeignEnum_FOREIGN_ZERO
+}
+
+func (x *TestAllTypes) GetSingularImportEnum() ImportEnum {
+	if x != nil {
+		return x.SingularImportEnum
+	}
+	return ImportEnum_IMPORT_ZERO
+}
+
+func (x *TestAllTypes) GetOptionalInt32() int32 {
+	if x != nil && x.OptionalInt32 != nil {
+		return *x.OptionalInt32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalInt64() int64 {
+	if x != nil && x.OptionalInt64 != nil {
+		return *x.OptionalInt64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalUint32() uint32 {
+	if x != nil && x.OptionalUint32 != nil {
+		return *x.OptionalUint32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalUint64() uint64 {
+	if x != nil && x.OptionalUint64 != nil {
+		return *x.OptionalUint64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalSint32() int32 {
+	if x != nil && x.OptionalSint32 != nil {
+		return *x.OptionalSint32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalSint64() int64 {
+	if x != nil && x.OptionalSint64 != nil {
+		return *x.OptionalSint64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalFixed32() uint32 {
+	if x != nil && x.OptionalFixed32 != nil {
+		return *x.OptionalFixed32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalFixed64() uint64 {
+	if x != nil && x.OptionalFixed64 != nil {
+		return *x.OptionalFixed64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalSfixed32() int32 {
+	if x != nil && x.OptionalSfixed32 != nil {
+		return *x.OptionalSfixed32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalSfixed64() int64 {
+	if x != nil && x.OptionalSfixed64 != nil {
+		return *x.OptionalSfixed64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalFloat() float32 {
+	if x != nil && x.OptionalFloat != nil {
+		return *x.OptionalFloat
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalDouble() float64 {
+	if x != nil && x.OptionalDouble != nil {
+		return *x.OptionalDouble
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalBool() bool {
+	if x != nil && x.OptionalBool != nil {
+		return *x.OptionalBool
+	}
+	return false
+}
+
+func (x *TestAllTypes) GetOptionalString() string {
+	if x != nil && x.OptionalString != nil {
+		return *x.OptionalString
+	}
+	return ""
+}
+
+func (x *TestAllTypes) GetOptionalBytes() []byte {
+	if x != nil {
+		return x.OptionalBytes
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOptionalNestedMessage() *TestAllTypes_NestedMessage {
+	if x != nil {
+		return x.OptionalNestedMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOptionalForeignMessage() *ForeignMessage {
+	if x != nil {
+		return x.OptionalForeignMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOptionalImportMessage() *ImportMessage {
+	if x != nil {
+		return x.OptionalImportMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOptionalNestedEnum() TestAllTypes_NestedEnum {
+	if x != nil && x.OptionalNestedEnum != nil {
+		return *x.OptionalNestedEnum
+	}
+	return TestAllTypes_FOO
+}
+
+func (x *TestAllTypes) GetOptionalForeignEnum() ForeignEnum {
+	if x != nil && x.OptionalForeignEnum != nil {
+		return *x.OptionalForeignEnum
+	}
+	return ForeignEnum_FOREIGN_ZERO
+}
+
+func (x *TestAllTypes) GetOptionalImportEnum() ImportEnum {
+	if x != nil && x.OptionalImportEnum != nil {
+		return *x.OptionalImportEnum
+	}
+	return ImportEnum_IMPORT_ZERO
+}
+
+func (x *TestAllTypes) GetRepeatedInt32() []int32 {
+	if x != nil {
+		return x.RepeatedInt32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedInt64() []int64 {
+	if x != nil {
+		return x.RepeatedInt64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedUint32() []uint32 {
+	if x != nil {
+		return x.RepeatedUint32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedUint64() []uint64 {
+	if x != nil {
+		return x.RepeatedUint64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedSint32() []int32 {
+	if x != nil {
+		return x.RepeatedSint32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedSint64() []int64 {
+	if x != nil {
+		return x.RepeatedSint64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedFixed32() []uint32 {
+	if x != nil {
+		return x.RepeatedFixed32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedFixed64() []uint64 {
+	if x != nil {
+		return x.RepeatedFixed64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedSfixed32() []int32 {
+	if x != nil {
+		return x.RepeatedSfixed32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedSfixed64() []int64 {
+	if x != nil {
+		return x.RepeatedSfixed64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedFloat() []float32 {
+	if x != nil {
+		return x.RepeatedFloat
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedDouble() []float64 {
+	if x != nil {
+		return x.RepeatedDouble
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedBool() []bool {
+	if x != nil {
+		return x.RepeatedBool
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedString() []string {
+	if x != nil {
+		return x.RepeatedString
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedBytes() [][]byte {
+	if x != nil {
+		return x.RepeatedBytes
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedNestedMessage() []*TestAllTypes_NestedMessage {
+	if x != nil {
+		return x.RepeatedNestedMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedForeignMessage() []*ForeignMessage {
+	if x != nil {
+		return x.RepeatedForeignMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedImportmessage() []*ImportMessage {
+	if x != nil {
+		return x.RepeatedImportmessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedNestedEnum() []TestAllTypes_NestedEnum {
+	if x != nil {
+		return x.RepeatedNestedEnum
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedForeignEnum() []ForeignEnum {
+	if x != nil {
+		return x.RepeatedForeignEnum
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedImportenum() []ImportEnum {
+	if x != nil {
+		return x.RepeatedImportenum
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapInt32Int32() map[int32]int32 {
+	if x != nil {
+		return x.MapInt32Int32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapInt64Int64() map[int64]int64 {
+	if x != nil {
+		return x.MapInt64Int64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapUint32Uint32() map[uint32]uint32 {
+	if x != nil {
+		return x.MapUint32Uint32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapUint64Uint64() map[uint64]uint64 {
+	if x != nil {
+		return x.MapUint64Uint64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapSint32Sint32() map[int32]int32 {
+	if x != nil {
+		return x.MapSint32Sint32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapSint64Sint64() map[int64]int64 {
+	if x != nil {
+		return x.MapSint64Sint64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapFixed32Fixed32() map[uint32]uint32 {
+	if x != nil {
+		return x.MapFixed32Fixed32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapFixed64Fixed64() map[uint64]uint64 {
+	if x != nil {
+		return x.MapFixed64Fixed64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapSfixed32Sfixed32() map[int32]int32 {
+	if x != nil {
+		return x.MapSfixed32Sfixed32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapSfixed64Sfixed64() map[int64]int64 {
+	if x != nil {
+		return x.MapSfixed64Sfixed64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapInt32Float() map[int32]float32 {
+	if x != nil {
+		return x.MapInt32Float
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapInt32Double() map[int32]float64 {
+	if x != nil {
+		return x.MapInt32Double
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapBoolBool() map[bool]bool {
+	if x != nil {
+		return x.MapBoolBool
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapStringString() map[string]string {
+	if x != nil {
+		return x.MapStringString
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapStringBytes() map[string][]byte {
+	if x != nil {
+		return x.MapStringBytes
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapStringNestedMessage() map[string]*TestAllTypes_NestedMessage {
+	if x != nil {
+		return x.MapStringNestedMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapStringNestedEnum() map[string]TestAllTypes_NestedEnum {
+	if x != nil {
+		return x.MapStringNestedEnum
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOneofField() isTestAllTypes_OneofField {
+	if x != nil {
+		return x.OneofField
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOneofUint32() uint32 {
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofUint32); ok {
+			return x.OneofUint32
+		}
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOneofNestedMessage() *TestAllTypes_NestedMessage {
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofNestedMessage); ok {
+			return x.OneofNestedMessage
+		}
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOneofString() string {
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofString); ok {
+			return x.OneofString
+		}
+	}
+	return ""
+}
+
+func (x *TestAllTypes) GetOneofBytes() []byte {
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofBytes); ok {
+			return x.OneofBytes
+		}
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOneofBool() bool {
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofBool); ok {
+			return x.OneofBool
+		}
+	}
+	return false
+}
+
+func (x *TestAllTypes) GetOneofUint64() uint64 {
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofUint64); ok {
+			return x.OneofUint64
+		}
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOneofFloat() float32 {
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofFloat); ok {
+			return x.OneofFloat
+		}
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOneofDouble() float64 {
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofDouble); ok {
+			return x.OneofDouble
+		}
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOneofEnum() TestAllTypes_NestedEnum {
+	if x != nil {
+		if x, ok := x.OneofField.(*TestAllTypes_OneofEnum); ok {
+			return x.OneofEnum
+		}
+	}
+	return TestAllTypes_FOO
+}
+
+func (x *TestAllTypes) SetSingularInt32(v int32) {
+	x.SingularInt32 = v
+}
+
+func (x *TestAllTypes) SetSingularInt64(v int64) {
+	x.SingularInt64 = v
+}
+
+func (x *TestAllTypes) SetSingularUint32(v uint32) {
+	x.SingularUint32 = v
+}
+
+func (x *TestAllTypes) SetSingularUint64(v uint64) {
+	x.SingularUint64 = v
+}
+
+func (x *TestAllTypes) SetSingularSint32(v int32) {
+	x.SingularSint32 = v
+}
+
+func (x *TestAllTypes) SetSingularSint64(v int64) {
+	x.SingularSint64 = v
+}
+
+func (x *TestAllTypes) SetSingularFixed32(v uint32) {
+	x.SingularFixed32 = v
+}
+
+func (x *TestAllTypes) SetSingularFixed64(v uint64) {
+	x.SingularFixed64 = v
+}
+
+func (x *TestAllTypes) SetSingularSfixed32(v int32) {
+	x.SingularSfixed32 = v
+}
+
+func (x *TestAllTypes) SetSingularSfixed64(v int64) {
+	x.SingularSfixed64 = v
+}
+
+func (x *TestAllTypes) SetSingularFloat(v float32) {
+	x.SingularFloat = v
+}
+
+func (x *TestAllTypes) SetSingularDouble(v float64) {
+	x.SingularDouble = v
+}
+
+func (x *TestAllTypes) SetSingularBool(v bool) {
+	x.SingularBool = v
+}
+
+func (x *TestAllTypes) SetSingularString(v string) {
+	x.SingularString = v
+}
+
+func (x *TestAllTypes) SetSingularBytes(v []byte) {
+	if v == nil {
+		v = []byte{}
+	}
+	x.SingularBytes = v
+}
+
+func (x *TestAllTypes) SetSingularNestedMessage(v *TestAllTypes_NestedMessage) {
+	x.SingularNestedMessage = v
+}
+
+func (x *TestAllTypes) SetSingularForeignMessage(v *ForeignMessage) {
+	x.SingularForeignMessage = v
+}
+
+func (x *TestAllTypes) SetSingularImportMessage(v *ImportMessage) {
+	x.SingularImportMessage = v
+}
+
+func (x *TestAllTypes) SetSingularNestedEnum(v TestAllTypes_NestedEnum) {
+	x.SingularNestedEnum = v
+}
+
+func (x *TestAllTypes) SetSingularForeignEnum(v ForeignEnum) {
+	x.SingularForeignEnum = v
+}
+
+func (x *TestAllTypes) SetSingularImportEnum(v ImportEnum) {
+	x.SingularImportEnum = v
+}
+
+func (x *TestAllTypes) SetOptionalInt32(v int32) {
+	x.OptionalInt32 = &v
+}
+
+func (x *TestAllTypes) SetOptionalInt64(v int64) {
+	x.OptionalInt64 = &v
+}
+
+func (x *TestAllTypes) SetOptionalUint32(v uint32) {
+	x.OptionalUint32 = &v
+}
+
+func (x *TestAllTypes) SetOptionalUint64(v uint64) {
+	x.OptionalUint64 = &v
+}
+
+func (x *TestAllTypes) SetOptionalSint32(v int32) {
+	x.OptionalSint32 = &v
+}
+
+func (x *TestAllTypes) SetOptionalSint64(v int64) {
+	x.OptionalSint64 = &v
+}
+
+func (x *TestAllTypes) SetOptionalFixed32(v uint32) {
+	x.OptionalFixed32 = &v
+}
+
+func (x *TestAllTypes) SetOptionalFixed64(v uint64) {
+	x.OptionalFixed64 = &v
+}
+
+func (x *TestAllTypes) SetOptionalSfixed32(v int32) {
+	x.OptionalSfixed32 = &v
+}
+
+func (x *TestAllTypes) SetOptionalSfixed64(v int64) {
+	x.OptionalSfixed64 = &v
+}
+
+func (x *TestAllTypes) SetOptionalFloat(v float32) {
+	x.OptionalFloat = &v
+}
+
+func (x *TestAllTypes) SetOptionalDouble(v float64) {
+	x.OptionalDouble = &v
+}
+
+func (x *TestAllTypes) SetOptionalBool(v bool) {
+	x.OptionalBool = &v
+}
+
+func (x *TestAllTypes) SetOptionalString(v string) {
+	x.OptionalString = &v
+}
+
+func (x *TestAllTypes) SetOptionalBytes(v []byte) {
+	if v == nil {
+		v = []byte{}
+	}
+	x.OptionalBytes = v
+}
+
+func (x *TestAllTypes) SetOptionalNestedMessage(v *TestAllTypes_NestedMessage) {
+	x.OptionalNestedMessage = v
+}
+
+func (x *TestAllTypes) SetOptionalForeignMessage(v *ForeignMessage) {
+	x.OptionalForeignMessage = v
+}
+
+func (x *TestAllTypes) SetOptionalImportMessage(v *ImportMessage) {
+	x.OptionalImportMessage = v
+}
+
+func (x *TestAllTypes) SetOptionalNestedEnum(v TestAllTypes_NestedEnum) {
+	x.OptionalNestedEnum = &v
+}
+
+func (x *TestAllTypes) SetOptionalForeignEnum(v ForeignEnum) {
+	x.OptionalForeignEnum = &v
+}
+
+func (x *TestAllTypes) SetOptionalImportEnum(v ImportEnum) {
+	x.OptionalImportEnum = &v
+}
+
+func (x *TestAllTypes) SetRepeatedInt32(v []int32) {
+	x.RepeatedInt32 = v
+}
+
+func (x *TestAllTypes) SetRepeatedInt64(v []int64) {
+	x.RepeatedInt64 = v
+}
+
+func (x *TestAllTypes) SetRepeatedUint32(v []uint32) {
+	x.RepeatedUint32 = v
+}
+
+func (x *TestAllTypes) SetRepeatedUint64(v []uint64) {
+	x.RepeatedUint64 = v
+}
+
+func (x *TestAllTypes) SetRepeatedSint32(v []int32) {
+	x.RepeatedSint32 = v
+}
+
+func (x *TestAllTypes) SetRepeatedSint64(v []int64) {
+	x.RepeatedSint64 = v
+}
+
+func (x *TestAllTypes) SetRepeatedFixed32(v []uint32) {
+	x.RepeatedFixed32 = v
+}
+
+func (x *TestAllTypes) SetRepeatedFixed64(v []uint64) {
+	x.RepeatedFixed64 = v
+}
+
+func (x *TestAllTypes) SetRepeatedSfixed32(v []int32) {
+	x.RepeatedSfixed32 = v
+}
+
+func (x *TestAllTypes) SetRepeatedSfixed64(v []int64) {
+	x.RepeatedSfixed64 = v
+}
+
+func (x *TestAllTypes) SetRepeatedFloat(v []float32) {
+	x.RepeatedFloat = v
+}
+
+func (x *TestAllTypes) SetRepeatedDouble(v []float64) {
+	x.RepeatedDouble = v
+}
+
+func (x *TestAllTypes) SetRepeatedBool(v []bool) {
+	x.RepeatedBool = v
+}
+
+func (x *TestAllTypes) SetRepeatedString(v []string) {
+	x.RepeatedString = v
+}
+
+func (x *TestAllTypes) SetRepeatedBytes(v [][]byte) {
+	x.RepeatedBytes = v
+}
+
+func (x *TestAllTypes) SetRepeatedNestedMessage(v []*TestAllTypes_NestedMessage) {
+	x.RepeatedNestedMessage = v
+}
+
+func (x *TestAllTypes) SetRepeatedForeignMessage(v []*ForeignMessage) {
+	x.RepeatedForeignMessage = v
+}
+
+func (x *TestAllTypes) SetRepeatedImportmessage(v []*ImportMessage) {
+	x.RepeatedImportmessage = v
+}
+
+func (x *TestAllTypes) SetRepeatedNestedEnum(v []TestAllTypes_NestedEnum) {
+	x.RepeatedNestedEnum = v
+}
+
+func (x *TestAllTypes) SetRepeatedForeignEnum(v []ForeignEnum) {
+	x.RepeatedForeignEnum = v
+}
+
+func (x *TestAllTypes) SetRepeatedImportenum(v []ImportEnum) {
+	x.RepeatedImportenum = v
+}
+
+func (x *TestAllTypes) SetMapInt32Int32(v map[int32]int32) {
+	x.MapInt32Int32 = v
+}
+
+func (x *TestAllTypes) SetMapInt64Int64(v map[int64]int64) {
+	x.MapInt64Int64 = v
+}
+
+func (x *TestAllTypes) SetMapUint32Uint32(v map[uint32]uint32) {
+	x.MapUint32Uint32 = v
+}
+
+func (x *TestAllTypes) SetMapUint64Uint64(v map[uint64]uint64) {
+	x.MapUint64Uint64 = v
+}
+
+func (x *TestAllTypes) SetMapSint32Sint32(v map[int32]int32) {
+	x.MapSint32Sint32 = v
+}
+
+func (x *TestAllTypes) SetMapSint64Sint64(v map[int64]int64) {
+	x.MapSint64Sint64 = v
+}
+
+func (x *TestAllTypes) SetMapFixed32Fixed32(v map[uint32]uint32) {
+	x.MapFixed32Fixed32 = v
+}
+
+func (x *TestAllTypes) SetMapFixed64Fixed64(v map[uint64]uint64) {
+	x.MapFixed64Fixed64 = v
+}
+
+func (x *TestAllTypes) SetMapSfixed32Sfixed32(v map[int32]int32) {
+	x.MapSfixed32Sfixed32 = v
+}
+
+func (x *TestAllTypes) SetMapSfixed64Sfixed64(v map[int64]int64) {
+	x.MapSfixed64Sfixed64 = v
+}
+
+func (x *TestAllTypes) SetMapInt32Float(v map[int32]float32) {
+	x.MapInt32Float = v
+}
+
+func (x *TestAllTypes) SetMapInt32Double(v map[int32]float64) {
+	x.MapInt32Double = v
+}
+
+func (x *TestAllTypes) SetMapBoolBool(v map[bool]bool) {
+	x.MapBoolBool = v
+}
+
+func (x *TestAllTypes) SetMapStringString(v map[string]string) {
+	x.MapStringString = v
+}
+
+func (x *TestAllTypes) SetMapStringBytes(v map[string][]byte) {
+	x.MapStringBytes = v
+}
+
+func (x *TestAllTypes) SetMapStringNestedMessage(v map[string]*TestAllTypes_NestedMessage) {
+	x.MapStringNestedMessage = v
+}
+
+func (x *TestAllTypes) SetMapStringNestedEnum(v map[string]TestAllTypes_NestedEnum) {
+	x.MapStringNestedEnum = v
+}
+
+func (x *TestAllTypes) SetOneofUint32(v uint32) {
+	x.OneofField = &TestAllTypes_OneofUint32{v}
+}
+
+func (x *TestAllTypes) SetOneofNestedMessage(v *TestAllTypes_NestedMessage) {
+	if v == nil {
+		x.OneofField = nil
+		return
+	}
+	x.OneofField = &TestAllTypes_OneofNestedMessage{v}
+}
+
+func (x *TestAllTypes) SetOneofString(v string) {
+	x.OneofField = &TestAllTypes_OneofString{v}
+}
+
+func (x *TestAllTypes) SetOneofBytes(v []byte) {
+	if v == nil {
+		v = []byte{}
+	}
+	x.OneofField = &TestAllTypes_OneofBytes{v}
+}
+
+func (x *TestAllTypes) SetOneofBool(v bool) {
+	x.OneofField = &TestAllTypes_OneofBool{v}
+}
+
+func (x *TestAllTypes) SetOneofUint64(v uint64) {
+	x.OneofField = &TestAllTypes_OneofUint64{v}
+}
+
+func (x *TestAllTypes) SetOneofFloat(v float32) {
+	x.OneofField = &TestAllTypes_OneofFloat{v}
+}
+
+func (x *TestAllTypes) SetOneofDouble(v float64) {
+	x.OneofField = &TestAllTypes_OneofDouble{v}
+}
+
+func (x *TestAllTypes) SetOneofEnum(v TestAllTypes_NestedEnum) {
+	x.OneofField = &TestAllTypes_OneofEnum{v}
+}
+
+func (x *TestAllTypes) HasSingularNestedMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.SingularNestedMessage != nil
+}
+
+func (x *TestAllTypes) HasSingularForeignMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.SingularForeignMessage != nil
+}
+
+func (x *TestAllTypes) HasSingularImportMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.SingularImportMessage != nil
+}
+
+func (x *TestAllTypes) HasOptionalInt32() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalInt32 != nil
+}
+
+func (x *TestAllTypes) HasOptionalInt64() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalInt64 != nil
+}
+
+func (x *TestAllTypes) HasOptionalUint32() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalUint32 != nil
+}
+
+func (x *TestAllTypes) HasOptionalUint64() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalUint64 != nil
+}
+
+func (x *TestAllTypes) HasOptionalSint32() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalSint32 != nil
+}
+
+func (x *TestAllTypes) HasOptionalSint64() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalSint64 != nil
+}
+
+func (x *TestAllTypes) HasOptionalFixed32() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalFixed32 != nil
+}
+
+func (x *TestAllTypes) HasOptionalFixed64() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalFixed64 != nil
+}
+
+func (x *TestAllTypes) HasOptionalSfixed32() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalSfixed32 != nil
+}
+
+func (x *TestAllTypes) HasOptionalSfixed64() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalSfixed64 != nil
+}
+
+func (x *TestAllTypes) HasOptionalFloat() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalFloat != nil
+}
+
+func (x *TestAllTypes) HasOptionalDouble() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalDouble != nil
+}
+
+func (x *TestAllTypes) HasOptionalBool() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalBool != nil
+}
+
+func (x *TestAllTypes) HasOptionalString() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalString != nil
+}
+
+func (x *TestAllTypes) HasOptionalBytes() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalBytes != nil
+}
+
+func (x *TestAllTypes) HasOptionalNestedMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalNestedMessage != nil
+}
+
+func (x *TestAllTypes) HasOptionalForeignMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalForeignMessage != nil
+}
+
+func (x *TestAllTypes) HasOptionalImportMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalImportMessage != nil
+}
+
+func (x *TestAllTypes) HasOptionalNestedEnum() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalNestedEnum != nil
+}
+
+func (x *TestAllTypes) HasOptionalForeignEnum() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalForeignEnum != nil
+}
+
+func (x *TestAllTypes) HasOptionalImportEnum() bool {
+	if x == nil {
+		return false
+	}
+	return x.OptionalImportEnum != nil
+}
+
+func (x *TestAllTypes) HasOneofField() bool {
+	if x == nil {
+		return false
+	}
+	return x.OneofField != nil
+}
+
+func (x *TestAllTypes) HasOneofUint32() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.OneofField.(*TestAllTypes_OneofUint32)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofNestedMessage() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.OneofField.(*TestAllTypes_OneofNestedMessage)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofString() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.OneofField.(*TestAllTypes_OneofString)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofBytes() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.OneofField.(*TestAllTypes_OneofBytes)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofBool() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.OneofField.(*TestAllTypes_OneofBool)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofUint64() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.OneofField.(*TestAllTypes_OneofUint64)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofFloat() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.OneofField.(*TestAllTypes_OneofFloat)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofDouble() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.OneofField.(*TestAllTypes_OneofDouble)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofEnum() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.OneofField.(*TestAllTypes_OneofEnum)
+	return ok
+}
+
+func (x *TestAllTypes) ClearSingularNestedMessage() {
+	x.SingularNestedMessage = nil
+}
+
+func (x *TestAllTypes) ClearSingularForeignMessage() {
+	x.SingularForeignMessage = nil
+}
+
+func (x *TestAllTypes) ClearSingularImportMessage() {
+	x.SingularImportMessage = nil
+}
+
+func (x *TestAllTypes) ClearOptionalInt32() {
+	x.OptionalInt32 = nil
+}
+
+func (x *TestAllTypes) ClearOptionalInt64() {
+	x.OptionalInt64 = nil
+}
+
+func (x *TestAllTypes) ClearOptionalUint32() {
+	x.OptionalUint32 = nil
+}
+
+func (x *TestAllTypes) ClearOptionalUint64() {
+	x.OptionalUint64 = nil
+}
+
+func (x *TestAllTypes) ClearOptionalSint32() {
+	x.OptionalSint32 = nil
+}
+
+func (x *TestAllTypes) ClearOptionalSint64() {
+	x.OptionalSint64 = nil
+}
+
+func (x *TestAllTypes) ClearOptionalFixed32() {
+	x.OptionalFixed32 = nil
+}
+
+func (x *TestAllTypes) ClearOptionalFixed64() {
+	x.OptionalFixed64 = nil
+}
+
+func (x *TestAllTypes) ClearOptionalSfixed32() {
+	x.OptionalSfixed32 = nil
+}
+
+func (x *TestAllTypes) ClearOptionalSfixed64() {
+	x.OptionalSfixed64 = nil
+}
+
+func (x *TestAllTypes) ClearOptionalFloat() {
+	x.OptionalFloat = nil
+}
+
+func (x *TestAllTypes) ClearOptionalDouble() {
+	x.OptionalDouble = nil
+}
+
+func (x *TestAllTypes) ClearOptionalBool() {
+	x.OptionalBool = nil
+}
+
+func (x *TestAllTypes) ClearOptionalString() {
+	x.OptionalString = nil
+}
+
+func (x *TestAllTypes) ClearOptionalBytes() {
+	x.OptionalBytes = nil
+}
+
+func (x *TestAllTypes) ClearOptionalNestedMessage() {
+	x.OptionalNestedMessage = nil
+}
+
+func (x *TestAllTypes) ClearOptionalForeignMessage() {
+	x.OptionalForeignMessage = nil
+}
+
+func (x *TestAllTypes) ClearOptionalImportMessage() {
+	x.OptionalImportMessage = nil
+}
+
+func (x *TestAllTypes) ClearOptionalNestedEnum() {
+	x.OptionalNestedEnum = nil
+}
+
+func (x *TestAllTypes) ClearOptionalForeignEnum() {
+	x.OptionalForeignEnum = nil
+}
+
+func (x *TestAllTypes) ClearOptionalImportEnum() {
+	x.OptionalImportEnum = nil
+}
+
+func (x *TestAllTypes) ClearOneofField() {
+	x.OneofField = nil
+}
+
+func (x *TestAllTypes) ClearOneofUint32() {
+	if _, ok := x.OneofField.(*TestAllTypes_OneofUint32); ok {
+		x.OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofNestedMessage() {
+	if _, ok := x.OneofField.(*TestAllTypes_OneofNestedMessage); ok {
+		x.OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofString() {
+	if _, ok := x.OneofField.(*TestAllTypes_OneofString); ok {
+		x.OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofBytes() {
+	if _, ok := x.OneofField.(*TestAllTypes_OneofBytes); ok {
+		x.OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofBool() {
+	if _, ok := x.OneofField.(*TestAllTypes_OneofBool); ok {
+		x.OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofUint64() {
+	if _, ok := x.OneofField.(*TestAllTypes_OneofUint64); ok {
+		x.OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofFloat() {
+	if _, ok := x.OneofField.(*TestAllTypes_OneofFloat); ok {
+		x.OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofDouble() {
+	if _, ok := x.OneofField.(*TestAllTypes_OneofDouble); ok {
+		x.OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofEnum() {
+	if _, ok := x.OneofField.(*TestAllTypes_OneofEnum); ok {
+		x.OneofField = nil
+	}
+}
+
+const TestAllTypes_OneofField_not_set_case case_TestAllTypes_OneofField = 0
+const TestAllTypes_OneofUint32_case case_TestAllTypes_OneofField = 111
+const TestAllTypes_OneofNestedMessage_case case_TestAllTypes_OneofField = 112
+const TestAllTypes_OneofString_case case_TestAllTypes_OneofField = 113
+const TestAllTypes_OneofBytes_case case_TestAllTypes_OneofField = 114
+const TestAllTypes_OneofBool_case case_TestAllTypes_OneofField = 115
+const TestAllTypes_OneofUint64_case case_TestAllTypes_OneofField = 116
+const TestAllTypes_OneofFloat_case case_TestAllTypes_OneofField = 117
+const TestAllTypes_OneofDouble_case case_TestAllTypes_OneofField = 118
+const TestAllTypes_OneofEnum_case case_TestAllTypes_OneofField = 119
+
+func (x *TestAllTypes) WhichOneofField() case_TestAllTypes_OneofField {
+	if x == nil {
+		return TestAllTypes_OneofField_not_set_case
+	}
+	switch x.OneofField.(type) {
+	case *TestAllTypes_OneofUint32:
+		return TestAllTypes_OneofUint32_case
+	case *TestAllTypes_OneofNestedMessage:
+		return TestAllTypes_OneofNestedMessage_case
+	case *TestAllTypes_OneofString:
+		return TestAllTypes_OneofString_case
+	case *TestAllTypes_OneofBytes:
+		return TestAllTypes_OneofBytes_case
+	case *TestAllTypes_OneofBool:
+		return TestAllTypes_OneofBool_case
+	case *TestAllTypes_OneofUint64:
+		return TestAllTypes_OneofUint64_case
+	case *TestAllTypes_OneofFloat:
+		return TestAllTypes_OneofFloat_case
+	case *TestAllTypes_OneofDouble:
+		return TestAllTypes_OneofDouble_case
+	case *TestAllTypes_OneofEnum:
+		return TestAllTypes_OneofEnum_case
+	default:
+		return TestAllTypes_OneofField_not_set_case
+	}
+}
+
+type TestAllTypes_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	SingularInt32          int32
+	SingularInt64          int64
+	SingularUint32         uint32
+	SingularUint64         uint64
+	SingularSint32         int32
+	SingularSint64         int64
+	SingularFixed32        uint32
+	SingularFixed64        uint64
+	SingularSfixed32       int32
+	SingularSfixed64       int64
+	SingularFloat          float32
+	SingularDouble         float64
+	SingularBool           bool
+	SingularString         string
+	SingularBytes          []byte
+	SingularNestedMessage  *TestAllTypes_NestedMessage
+	SingularForeignMessage *ForeignMessage
+	SingularImportMessage  *ImportMessage
+	SingularNestedEnum     TestAllTypes_NestedEnum
+	SingularForeignEnum    ForeignEnum
+	SingularImportEnum     ImportEnum
+	OptionalInt32          *int32
+	OptionalInt64          *int64
+	OptionalUint32         *uint32
+	OptionalUint64         *uint64
+	OptionalSint32         *int32
+	OptionalSint64         *int64
+	OptionalFixed32        *uint32
+	OptionalFixed64        *uint64
+	OptionalSfixed32       *int32
+	OptionalSfixed64       *int64
+	OptionalFloat          *float32
+	OptionalDouble         *float64
+	OptionalBool           *bool
+	OptionalString         *string
+	OptionalBytes          []byte
+	OptionalNestedMessage  *TestAllTypes_NestedMessage
+	OptionalForeignMessage *ForeignMessage
+	OptionalImportMessage  *ImportMessage
+	OptionalNestedEnum     *TestAllTypes_NestedEnum
+	OptionalForeignEnum    *ForeignEnum
+	OptionalImportEnum     *ImportEnum
+	RepeatedInt32          []int32
+	RepeatedInt64          []int64
+	RepeatedUint32         []uint32
+	RepeatedUint64         []uint64
+	RepeatedSint32         []int32
+	RepeatedSint64         []int64
+	RepeatedFixed32        []uint32
+	RepeatedFixed64        []uint64
+	RepeatedSfixed32       []int32
+	RepeatedSfixed64       []int64
+	RepeatedFloat          []float32
+	RepeatedDouble         []float64
+	RepeatedBool           []bool
+	RepeatedString         []string
+	RepeatedBytes          [][]byte
+	RepeatedNestedMessage  []*TestAllTypes_NestedMessage
+	RepeatedForeignMessage []*ForeignMessage
+	RepeatedImportmessage  []*ImportMessage
+	RepeatedNestedEnum     []TestAllTypes_NestedEnum
+	RepeatedForeignEnum    []ForeignEnum
+	RepeatedImportenum     []ImportEnum
+	MapInt32Int32          map[int32]int32
+	MapInt64Int64          map[int64]int64
+	MapUint32Uint32        map[uint32]uint32
+	MapUint64Uint64        map[uint64]uint64
+	MapSint32Sint32        map[int32]int32
+	MapSint64Sint64        map[int64]int64
+	MapFixed32Fixed32      map[uint32]uint32
+	MapFixed64Fixed64      map[uint64]uint64
+	MapSfixed32Sfixed32    map[int32]int32
+	MapSfixed64Sfixed64    map[int64]int64
+	MapInt32Float          map[int32]float32
+	MapInt32Double         map[int32]float64
+	MapBoolBool            map[bool]bool
+	MapStringString        map[string]string
+	MapStringBytes         map[string][]byte
+	MapStringNestedMessage map[string]*TestAllTypes_NestedMessage
+	MapStringNestedEnum    map[string]TestAllTypes_NestedEnum
+	// Fields of oneof OneofField:
+	OneofUint32        *uint32
+	OneofNestedMessage *TestAllTypes_NestedMessage
+	OneofString        *string
+	OneofBytes         []byte
+	OneofBool          *bool
+	OneofUint64        *uint64
+	OneofFloat         *float32
+	OneofDouble        *float64
+	OneofEnum          *TestAllTypes_NestedEnum
+	// -- end of OneofField
+}
+
+func (b0 TestAllTypes_builder) Build() *TestAllTypes {
+	m0 := &TestAllTypes{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.SingularInt32 = b.SingularInt32
+	x.SingularInt64 = b.SingularInt64
+	x.SingularUint32 = b.SingularUint32
+	x.SingularUint64 = b.SingularUint64
+	x.SingularSint32 = b.SingularSint32
+	x.SingularSint64 = b.SingularSint64
+	x.SingularFixed32 = b.SingularFixed32
+	x.SingularFixed64 = b.SingularFixed64
+	x.SingularSfixed32 = b.SingularSfixed32
+	x.SingularSfixed64 = b.SingularSfixed64
+	x.SingularFloat = b.SingularFloat
+	x.SingularDouble = b.SingularDouble
+	x.SingularBool = b.SingularBool
+	x.SingularString = b.SingularString
+	x.SingularBytes = b.SingularBytes
+	x.SingularNestedMessage = b.SingularNestedMessage
+	x.SingularForeignMessage = b.SingularForeignMessage
+	x.SingularImportMessage = b.SingularImportMessage
+	x.SingularNestedEnum = b.SingularNestedEnum
+	x.SingularForeignEnum = b.SingularForeignEnum
+	x.SingularImportEnum = b.SingularImportEnum
+	x.OptionalInt32 = b.OptionalInt32
+	x.OptionalInt64 = b.OptionalInt64
+	x.OptionalUint32 = b.OptionalUint32
+	x.OptionalUint64 = b.OptionalUint64
+	x.OptionalSint32 = b.OptionalSint32
+	x.OptionalSint64 = b.OptionalSint64
+	x.OptionalFixed32 = b.OptionalFixed32
+	x.OptionalFixed64 = b.OptionalFixed64
+	x.OptionalSfixed32 = b.OptionalSfixed32
+	x.OptionalSfixed64 = b.OptionalSfixed64
+	x.OptionalFloat = b.OptionalFloat
+	x.OptionalDouble = b.OptionalDouble
+	x.OptionalBool = b.OptionalBool
+	x.OptionalString = b.OptionalString
+	x.OptionalBytes = b.OptionalBytes
+	x.OptionalNestedMessage = b.OptionalNestedMessage
+	x.OptionalForeignMessage = b.OptionalForeignMessage
+	x.OptionalImportMessage = b.OptionalImportMessage
+	x.OptionalNestedEnum = b.OptionalNestedEnum
+	x.OptionalForeignEnum = b.OptionalForeignEnum
+	x.OptionalImportEnum = b.OptionalImportEnum
+	x.RepeatedInt32 = b.RepeatedInt32
+	x.RepeatedInt64 = b.RepeatedInt64
+	x.RepeatedUint32 = b.RepeatedUint32
+	x.RepeatedUint64 = b.RepeatedUint64
+	x.RepeatedSint32 = b.RepeatedSint32
+	x.RepeatedSint64 = b.RepeatedSint64
+	x.RepeatedFixed32 = b.RepeatedFixed32
+	x.RepeatedFixed64 = b.RepeatedFixed64
+	x.RepeatedSfixed32 = b.RepeatedSfixed32
+	x.RepeatedSfixed64 = b.RepeatedSfixed64
+	x.RepeatedFloat = b.RepeatedFloat
+	x.RepeatedDouble = b.RepeatedDouble
+	x.RepeatedBool = b.RepeatedBool
+	x.RepeatedString = b.RepeatedString
+	x.RepeatedBytes = b.RepeatedBytes
+	x.RepeatedNestedMessage = b.RepeatedNestedMessage
+	x.RepeatedForeignMessage = b.RepeatedForeignMessage
+	x.RepeatedImportmessage = b.RepeatedImportmessage
+	x.RepeatedNestedEnum = b.RepeatedNestedEnum
+	x.RepeatedForeignEnum = b.RepeatedForeignEnum
+	x.RepeatedImportenum = b.RepeatedImportenum
+	x.MapInt32Int32 = b.MapInt32Int32
+	x.MapInt64Int64 = b.MapInt64Int64
+	x.MapUint32Uint32 = b.MapUint32Uint32
+	x.MapUint64Uint64 = b.MapUint64Uint64
+	x.MapSint32Sint32 = b.MapSint32Sint32
+	x.MapSint64Sint64 = b.MapSint64Sint64
+	x.MapFixed32Fixed32 = b.MapFixed32Fixed32
+	x.MapFixed64Fixed64 = b.MapFixed64Fixed64
+	x.MapSfixed32Sfixed32 = b.MapSfixed32Sfixed32
+	x.MapSfixed64Sfixed64 = b.MapSfixed64Sfixed64
+	x.MapInt32Float = b.MapInt32Float
+	x.MapInt32Double = b.MapInt32Double
+	x.MapBoolBool = b.MapBoolBool
+	x.MapStringString = b.MapStringString
+	x.MapStringBytes = b.MapStringBytes
+	x.MapStringNestedMessage = b.MapStringNestedMessage
+	x.MapStringNestedEnum = b.MapStringNestedEnum
+	if b.OneofUint32 != nil {
+		x.OneofField = &TestAllTypes_OneofUint32{*b.OneofUint32}
+	}
+	if b.OneofNestedMessage != nil {
+		x.OneofField = &TestAllTypes_OneofNestedMessage{b.OneofNestedMessage}
+	}
+	if b.OneofString != nil {
+		x.OneofField = &TestAllTypes_OneofString{*b.OneofString}
+	}
+	if b.OneofBytes != nil {
+		x.OneofField = &TestAllTypes_OneofBytes{b.OneofBytes}
+	}
+	if b.OneofBool != nil {
+		x.OneofField = &TestAllTypes_OneofBool{*b.OneofBool}
+	}
+	if b.OneofUint64 != nil {
+		x.OneofField = &TestAllTypes_OneofUint64{*b.OneofUint64}
+	}
+	if b.OneofFloat != nil {
+		x.OneofField = &TestAllTypes_OneofFloat{*b.OneofFloat}
+	}
+	if b.OneofDouble != nil {
+		x.OneofField = &TestAllTypes_OneofDouble{*b.OneofDouble}
+	}
+	if b.OneofEnum != nil {
+		x.OneofField = &TestAllTypes_OneofEnum{*b.OneofEnum}
+	}
+	return m0
+}
+
+type case_TestAllTypes_OneofField protoreflect.FieldNumber
+
+func (x case_TestAllTypes_OneofField) String() string {
+	md := file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_msgTypes[0].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isTestAllTypes_OneofField interface {
+	isTestAllTypes_OneofField()
+}
+
+type TestAllTypes_OneofUint32 struct {
+	OneofUint32 uint32 `protobuf:"varint,111,opt,name=oneof_uint32,json=oneofUint32,proto3,oneof"`
+}
+
+type TestAllTypes_OneofNestedMessage struct {
+	OneofNestedMessage *TestAllTypes_NestedMessage `protobuf:"bytes,112,opt,name=oneof_nested_message,json=oneofNestedMessage,proto3,oneof"`
+}
+
+type TestAllTypes_OneofString struct {
+	OneofString string `protobuf:"bytes,113,opt,name=oneof_string,json=oneofString,proto3,oneof"`
+}
+
+type TestAllTypes_OneofBytes struct {
+	OneofBytes []byte `protobuf:"bytes,114,opt,name=oneof_bytes,json=oneofBytes,proto3,oneof"`
+}
+
+type TestAllTypes_OneofBool struct {
+	OneofBool bool `protobuf:"varint,115,opt,name=oneof_bool,json=oneofBool,proto3,oneof"`
+}
+
+type TestAllTypes_OneofUint64 struct {
+	OneofUint64 uint64 `protobuf:"varint,116,opt,name=oneof_uint64,json=oneofUint64,proto3,oneof"`
+}
+
+type TestAllTypes_OneofFloat struct {
+	OneofFloat float32 `protobuf:"fixed32,117,opt,name=oneof_float,json=oneofFloat,proto3,oneof"`
+}
+
+type TestAllTypes_OneofDouble struct {
+	OneofDouble float64 `protobuf:"fixed64,118,opt,name=oneof_double,json=oneofDouble,proto3,oneof"`
+}
+
+type TestAllTypes_OneofEnum struct {
+	OneofEnum TestAllTypes_NestedEnum `protobuf:"varint,119,opt,name=oneof_enum,json=oneofEnum,proto3,enum=hybrid.goproto.proto.test3.TestAllTypes_NestedEnum,oneof"`
+}
+
+func (*TestAllTypes_OneofUint32) isTestAllTypes_OneofField() {}
+
+func (*TestAllTypes_OneofNestedMessage) isTestAllTypes_OneofField() {}
+
+func (*TestAllTypes_OneofString) isTestAllTypes_OneofField() {}
+
+func (*TestAllTypes_OneofBytes) isTestAllTypes_OneofField() {}
+
+func (*TestAllTypes_OneofBool) isTestAllTypes_OneofField() {}
+
+func (*TestAllTypes_OneofUint64) isTestAllTypes_OneofField() {}
+
+func (*TestAllTypes_OneofFloat) isTestAllTypes_OneofField() {}
+
+func (*TestAllTypes_OneofDouble) isTestAllTypes_OneofField() {}
+
+func (*TestAllTypes_OneofEnum) isTestAllTypes_OneofField() {}
+
+type ForeignMessage struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	C             int32                  `protobuf:"varint,1,opt,name=c,proto3" json:"c,omitempty"`
+	D             int32                  `protobuf:"varint,2,opt,name=d,proto3" json:"d,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *ForeignMessage) Reset() {
+	*x = ForeignMessage{}
+	mi := &file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ForeignMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ForeignMessage) ProtoMessage() {}
+
+func (x *ForeignMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *ForeignMessage) GetC() int32 {
+	if x != nil {
+		return x.C
+	}
+	return 0
+}
+
+func (x *ForeignMessage) GetD() int32 {
+	if x != nil {
+		return x.D
+	}
+	return 0
+}
+
+func (x *ForeignMessage) SetC(v int32) {
+	x.C = v
+}
+
+func (x *ForeignMessage) SetD(v int32) {
+	x.D = v
+}
+
+type ForeignMessage_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	C int32
+	D int32
+}
+
+func (b0 ForeignMessage_builder) Build() *ForeignMessage {
+	m0 := &ForeignMessage{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.C = b.C
+	x.D = b.D
+	return m0
+}
+
+type TestAllTypes_NestedMessage struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	A             int32                  `protobuf:"varint,1,opt,name=a,proto3" json:"a,omitempty"`
+	Corecursive   *TestAllTypes          `protobuf:"bytes,2,opt,name=corecursive,proto3" json:"corecursive,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *TestAllTypes_NestedMessage) Reset() {
+	*x = TestAllTypes_NestedMessage{}
+	mi := &file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestAllTypes_NestedMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestAllTypes_NestedMessage) ProtoMessage() {}
+
+func (x *TestAllTypes_NestedMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestAllTypes_NestedMessage) GetA() int32 {
+	if x != nil {
+		return x.A
+	}
+	return 0
+}
+
+func (x *TestAllTypes_NestedMessage) GetCorecursive() *TestAllTypes {
+	if x != nil {
+		return x.Corecursive
+	}
+	return nil
+}
+
+func (x *TestAllTypes_NestedMessage) SetA(v int32) {
+	x.A = v
+}
+
+func (x *TestAllTypes_NestedMessage) SetCorecursive(v *TestAllTypes) {
+	x.Corecursive = v
+}
+
+func (x *TestAllTypes_NestedMessage) HasCorecursive() bool {
+	if x == nil {
+		return false
+	}
+	return x.Corecursive != nil
+}
+
+func (x *TestAllTypes_NestedMessage) ClearCorecursive() {
+	x.Corecursive = nil
+}
+
+type TestAllTypes_NestedMessage_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	A           int32
+	Corecursive *TestAllTypes
+}
+
+func (b0 TestAllTypes_NestedMessage_builder) Build() *TestAllTypes_NestedMessage {
+	m0 := &TestAllTypes_NestedMessage{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.A = b.A
+	x.Corecursive = b.Corecursive
+	return m0
+}
+
+var File_internal_testprotos_test3_test3_hybrid_test_hybrid_proto protoreflect.FileDescriptor
+
+var file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_rawDesc = []byte{
+	0x0a, 0x38, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2f, 0x74, 0x65, 0x73, 0x74,
+	0x33, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x68, 0x79,
+	0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x1a, 0x3f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c,
+	0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74,
+	0x33, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x33, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2f, 0x74,
+	0x65, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa9, 0x3e, 0x0a, 0x0c, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x69, 0x6e, 0x67,
+	0x75, 0x6c, 0x61, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x51, 0x20, 0x01, 0x28, 0x05,
+	0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12,
+	0x25, 0x0a, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x36,
+	0x34, 0x18, 0x52, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61,
+	0x72, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
+	0x61, 0x72, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x53, 0x20, 0x01, 0x28, 0x0d, 0x52,
+	0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12,
+	0x27, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x75, 0x69, 0x6e, 0x74,
+	0x36, 0x34, 0x18, 0x54, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
+	0x61, 0x72, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67,
+	0x75, 0x6c, 0x61, 0x72, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x55, 0x20, 0x01, 0x28,
+	0x11, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x53, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x73, 0x69,
+	0x6e, 0x74, 0x36, 0x34, 0x18, 0x56, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67,
+	0x75, 0x6c, 0x61, 0x72, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x69,
+	0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x57,
+	0x20, 0x01, 0x28, 0x07, 0x52, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x46, 0x69,
+	0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61,
+	0x72, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x58, 0x20, 0x01, 0x28, 0x06, 0x52,
+	0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
+	0x12, 0x2b, 0x0a, 0x11, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x73, 0x66, 0x69,
+	0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x59, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x10, 0x73, 0x69, 0x6e,
+	0x67, 0x75, 0x6c, 0x61, 0x72, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2b, 0x0a,
+	0x11, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x36, 0x34, 0x18, 0x5a, 0x20, 0x01, 0x28, 0x10, 0x52, 0x10, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
+	0x61, 0x72, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x69,
+	0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x5b, 0x20, 0x01,
+	0x28, 0x02, 0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x46, 0x6c, 0x6f, 0x61,
+	0x74, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x64, 0x6f,
+	0x75, 0x62, 0x6c, 0x65, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67,
+	0x75, 0x6c, 0x61, 0x72, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x69,
+	0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x5d, 0x20, 0x01, 0x28,
+	0x08, 0x52, 0x0c, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x42, 0x6f, 0x6f, 0x6c, 0x12,
+	0x27, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x73, 0x74, 0x72, 0x69,
+	0x6e, 0x67, 0x18, 0x5e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
+	0x61, 0x72, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x69, 0x6e, 0x67,
+	0x75, 0x6c, 0x61, 0x72, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x5f, 0x20, 0x01, 0x28, 0x0c,
+	0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12,
+	0x6e, 0x0a, 0x17, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x6e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x62, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x36, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
+	0x61, 0x72, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12,
+	0x64, 0x0a, 0x18, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x66, 0x6f, 0x72, 0x65,
+	0x69, 0x67, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x63, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x2a, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x46,
+	0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x16, 0x73,
+	0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x61, 0x0a, 0x17, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61,
+	0x72, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x33, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x52, 0x15, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x49, 0x6d, 0x70, 0x6f, 0x72,
+	0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x65, 0x0a, 0x14, 0x73, 0x69, 0x6e, 0x67,
+	0x75, 0x6c, 0x61, 0x72, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d,
+	0x18, 0x65, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12, 0x73, 0x69, 0x6e,
+	0x67, 0x75, 0x6c, 0x61, 0x72, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12,
+	0x5b, 0x0a, 0x15, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x66, 0x6f, 0x72, 0x65,
+	0x69, 0x67, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27,
+	0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x46, 0x6f, 0x72, 0x65,
+	0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x13, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61,
+	0x72, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x58, 0x0a, 0x14,
+	0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f,
+	0x65, 0x6e, 0x75, 0x6d, 0x18, 0x67, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e,
+	0x75, 0x6d, 0x52, 0x12, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x49, 0x6d, 0x70, 0x6f,
+	0x72, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x2a, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01,
+	0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x88,
+	0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69,
+	0x6e, 0x74, 0x36, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x0d, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x2c,
+	0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x03, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
+	0x6c, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x05, 0x20,
+	0x01, 0x28, 0x11, 0x48, 0x05, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53,
+	0x69, 0x6e, 0x74, 0x33, 0x32, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x06, 0x20, 0x01, 0x28,
+	0x12, 0x48, 0x06, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x07,
+	0x48, 0x07, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, 0x78, 0x65,
+	0x64, 0x33, 0x32, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x08, 0x20, 0x01, 0x28, 0x06,
+	0x48, 0x08, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, 0x78, 0x65,
+	0x64, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28,
+	0x0f, 0x48, 0x09, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x66, 0x69,
+	0x78, 0x65, 0x64, 0x33, 0x32, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x0a, 0x20,
+	0x01, 0x28, 0x10, 0x48, 0x0a, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01,
+	0x28, 0x02, 0x48, 0x0b, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x6c,
+	0x6f, 0x61, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x48,
+	0x0c, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x75, 0x62, 0x6c,
+	0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+	0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x48, 0x0d, 0x52, 0x0c, 0x6f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2c,
+	0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e,
+	0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x48, 0x0e, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0f,
+	0x20, 0x01, 0x28, 0x0c, 0x48, 0x0f, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+	0x42, 0x79, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x73, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
+	0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x48, 0x10, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a,
+	0x18, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67,
+	0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x2a, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x46, 0x6f, 0x72,
+	0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x11, 0x52, 0x16, 0x6f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x66, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x48, 0x12, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+	0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01,
+	0x12, 0x6a, 0x0a, 0x14, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33,
+	0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45,
+	0x6e, 0x75, 0x6d, 0x48, 0x13, 0x52, 0x12, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x15,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e,
+	0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x68, 0x79,
+	0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e,
+	0x45, 0x6e, 0x75, 0x6d, 0x48, 0x14, 0x52, 0x13, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+	0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x5d,
+	0x0a, 0x14, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72,
+	0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x68,
+	0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74,
+	0x45, 0x6e, 0x75, 0x6d, 0x48, 0x15, 0x52, 0x12, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+	0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a,
+	0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18,
+	0x1f, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49,
+	0x6e, 0x74, 0x33, 0x32, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x20, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0d, 0x72, 0x65,
+	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x21,
+	0x20, 0x03, 0x28, 0x0d, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x55, 0x69,
+	0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x22, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0e, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a,
+	0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x18, 0x23, 0x20, 0x03, 0x28, 0x11, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
+	0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x24, 0x20, 0x03, 0x28, 0x12, 0x52,
+	0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
+	0x29, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65,
+	0x64, 0x33, 0x32, 0x18, 0x25, 0x20, 0x03, 0x28, 0x07, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65,
+	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x26,
+	0x20, 0x03, 0x28, 0x06, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69,
+	0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x27, 0x20, 0x03, 0x28, 0x0f,
+	0x52, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x33, 0x32, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x28, 0x20, 0x03, 0x28, 0x10, 0x52, 0x10, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12,
+	0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61,
+	0x74, 0x18, 0x29, 0x20, 0x03, 0x28, 0x02, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
+	0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x2a, 0x20, 0x03, 0x28, 0x01, 0x52,
+	0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12,
+	0x23, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x6f, 0x6f, 0x6c,
+	0x18, 0x2b, 0x20, 0x03, 0x28, 0x08, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x2c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a,
+	0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18,
+	0x2d, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42,
+	0x79, 0x74, 0x65, 0x73, 0x12, 0x6e, 0x0a, 0x17, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18,
+	0x30, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x12, 0x64, 0x0a, 0x18, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x18, 0x31, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x33, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x52, 0x16, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x65,
+	0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x60, 0x0a, 0x16, 0x72, 0x65,
+	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x6d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x18, 0x32, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49,
+	0x6d, 0x70, 0x6f, 0x72, 0x74, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x65, 0x0a, 0x14,
+	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f,
+	0x65, 0x6e, 0x75, 0x6d, 0x18, 0x33, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52,
+	0x12, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45,
+	0x6e, 0x75, 0x6d, 0x12, 0x5b, 0x0a, 0x15, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f,
+	0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x34, 0x20, 0x03,
+	0x28, 0x0e, 0x32, 0x27, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e,
+	0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x13, 0x72, 0x65, 0x70,
+	0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d,
+	0x12, 0x57, 0x0a, 0x13, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6d, 0x70,
+	0x6f, 0x72, 0x74, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x35, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x26, 0x2e,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72,
+	0x74, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49,
+	0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x63, 0x0a, 0x0f, 0x6d, 0x61, 0x70,
+	0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x38, 0x20, 0x03,
+	0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70,
+	0x49, 0x6e, 0x74, 0x33, 0x32, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
+	0x0d, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x63,
+	0x0a, 0x0f, 0x6d, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x69, 0x6e, 0x74, 0x36,
+	0x34, 0x18, 0x39, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x45,
+	0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x49, 0x6e,
+	0x74, 0x36, 0x34, 0x12, 0x69, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x3a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d,
+	0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74,
+	0x33, 0x32, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d,
+	0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x69,
+	0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x75, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x18, 0x3b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
+	0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x55, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x55, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x69, 0x0a, 0x11, 0x6d, 0x61, 0x70,
+	0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x3c,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d,
+	0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e,
+	0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x53, 0x69,
+	0x6e, 0x74, 0x33, 0x32, 0x12, 0x69, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x69, 0x6e, 0x74,
+	0x36, 0x34, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x3d, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x3d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f,
+	0x6d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
+	0x6f, 0x0a, 0x13, 0x6d, 0x61, 0x70, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x5f, 0x66,
+	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x3e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x68,
+	0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33,
+	0x32, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x6d,
+	0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
+	0x12, 0x6f, 0x0a, 0x13, 0x6d, 0x61, 0x70, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x5f,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x3f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
+	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64,
+	0x36, 0x34, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11,
+	0x6d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36,
+	0x34, 0x12, 0x75, 0x0a, 0x15, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,
+	0x32, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x40, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x41, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x66,
+	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45, 0x6e,
+	0x74, 0x72, 0x79, 0x52, 0x13, 0x6d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
+	0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x75, 0x0a, 0x15, 0x6d, 0x61, 0x70, 0x5f,
+	0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
+	0x34, 0x18, 0x41, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x53, 0x66, 0x69,
+	0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x6d, 0x61, 0x70, 0x53,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12,
+	0x63, 0x0a, 0x0f, 0x6d, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x66, 0x6c, 0x6f,
+	0x61, 0x74, 0x18, 0x42, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70,
+	0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x46, 0x6c, 0x6f, 0x61, 0x74,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x46,
+	0x6c, 0x6f, 0x61, 0x74, 0x12, 0x66, 0x0a, 0x10, 0x6d, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x43, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c,
+	0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33,
+	0x32, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x6d, 0x61,
+	0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x5d, 0x0a, 0x0d,
+	0x6d, 0x61, 0x70, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x44, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61,
+	0x70, 0x42, 0x6f, 0x6f, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b,
+	0x6d, 0x61, 0x70, 0x42, 0x6f, 0x6f, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x69, 0x0a, 0x11, 0x6d,
+	0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
+	0x18, 0x45, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
+	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x66, 0x0a, 0x10, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74,
+	0x72, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x46, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x3c, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74,
+	0x72, 0x69, 0x6e, 0x67, 0x42, 0x79, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e,
+	0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x7f,
+	0x0a, 0x19, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x47, 0x20, 0x03, 0x28,
+	0x0b, 0x32, 0x44, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54,
+	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53,
+	0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x16, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69,
+	0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12,
+	0x76, 0x0a, 0x16, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x49, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x41, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72,
+	0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74,
+	0x72, 0x79, 0x52, 0x13, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
+	0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x6f, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52,
+	0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x6a, 0x0a, 0x14,
+	0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x18, 0x70, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x48, 0x00, 0x52, 0x12, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x4e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f,
+	0x66, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x71, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,
+	0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x0a,
+	0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x72, 0x20, 0x01,
+	0x28, 0x0c, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x42, 0x79, 0x74, 0x65, 0x73,
+	0x12, 0x1f, 0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x73,
+	0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x42, 0x6f, 0x6f,
+	0x6c, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36,
+	0x34, 0x18, 0x74, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
+	0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x21, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f,
+	0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x75, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x6f,
+	0x6e, 0x65, 0x6f, 0x66, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65,
+	0x6f, 0x66, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x76, 0x20, 0x01, 0x28, 0x01, 0x48,
+	0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x54,
+	0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x77, 0x20, 0x01,
+	0x28, 0x0e, 0x32, 0x33, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
+	0x45, 0x6e, 0x75, 0x6d, 0x1a, 0x69, 0x0a, 0x0d, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
+	0x52, 0x01, 0x61, 0x12, 0x4a, 0x0a, 0x0b, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69,
+	0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70,
+	0x65, 0x73, 0x52, 0x0b, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x1a,
+	0x40, 0x0a, 0x12, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x49, 0x6e, 0x74, 0x33, 0x32,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
+	0x01, 0x1a, 0x40, 0x0a, 0x12, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x49, 0x6e, 0x74,
+	0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
+	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
+	0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
+	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
+	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61,
+	0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x55, 0x69,
+	0x6e, 0x74, 0x36, 0x34, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
+	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6b, 0x65,
+	0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04,
+	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d,
+	0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e,
+	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11,
+	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
+	0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x53, 0x69, 0x6e, 0x74,
+	0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x12, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
+	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x12, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
+	0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33,
+	0x32, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
+	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x07, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
+	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x07, 0x52, 0x05,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x4d, 0x61, 0x70,
+	0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e,
+	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x06,
+	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x06, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
+	0x46, 0x0a, 0x18, 0x4d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x53, 0x66,
+	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
+	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
+	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x05, 0x76, 0x61,
+	0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x46, 0x0a, 0x18, 0x4d, 0x61, 0x70, 0x53, 0x66,
+	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e,
+	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x10,
+	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x10, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
+	0x40, 0x0a, 0x12, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x46, 0x6c, 0x6f, 0x61, 0x74,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
+	0x01, 0x1a, 0x41, 0x0a, 0x13, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x44, 0x6f, 0x75,
+	0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
+	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x4d, 0x61, 0x70, 0x42, 0x6f, 0x6f, 0x6c, 0x42,
+	0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
+	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e,
+	0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
+	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
+	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76,
+	0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x4d, 0x61, 0x70, 0x53,
+	0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x79, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
+	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
+	0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c,
+	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x81, 0x01, 0x0a, 0x1b,
+	0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
+	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4c, 0x0a,
+	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x68,
+	0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
+	0x7b, 0x0a, 0x18, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
+	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x49, 0x0a,
+	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x68,
+	0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75,
+	0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x39, 0x0a, 0x0a,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x07, 0x0a, 0x03, 0x46, 0x4f,
+	0x4f, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x41, 0x52, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03,
+	0x42, 0x41, 0x5a, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x45, 0x47, 0x10, 0xff, 0xff, 0xff,
+	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
+	0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x42, 0x12, 0x0a, 0x10,
+	0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69,
+	0x6e, 0x74, 0x36, 0x34, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
+	0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6f, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x42, 0x13, 0x0a, 0x11,
+	0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,
+	0x32, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66,
+	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x42, 0x14, 0x0a, 0x12,
+	0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x36, 0x34, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f,
+	0x66, 0x6c, 0x6f, 0x61, 0x74, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x42, 0x12, 0x0a, 0x10, 0x5f,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42,
+	0x11, 0x0a, 0x0f, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74,
+	0x65, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f,
+	0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x1b,
+	0x0a, 0x19, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65,
+	0x69, 0x67, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f,
+	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d,
+	0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6f,
+	0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65,
+	0x6e, 0x75, 0x6d, 0x22, 0x2c, 0x0a, 0x0e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
+	0x52, 0x01, 0x63, 0x12, 0x0c, 0x0a, 0x01, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01,
+	0x64, 0x2a, 0x52, 0x0a, 0x0b, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d,
+	0x12, 0x10, 0x0a, 0x0c, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x5a, 0x45, 0x52, 0x4f,
+	0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x46, 0x4f,
+	0x4f, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x42,
+	0x41, 0x52, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f,
+	0x42, 0x41, 0x5a, 0x10, 0x06, 0x42, 0x43, 0x5a, 0x41, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+	0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73,
+	0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2f, 0x74, 0x65,
+	0x73, 0x74, 0x33, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x33,
+}
+
+var file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
+var file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
+var file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_goTypes = []any{
+	(ForeignEnum)(0),                   // 0: hybrid.goproto.proto.test3.ForeignEnum
+	(TestAllTypes_NestedEnum)(0),       // 1: hybrid.goproto.proto.test3.TestAllTypes.NestedEnum
+	(*TestAllTypes)(nil),               // 2: hybrid.goproto.proto.test3.TestAllTypes
+	(*ForeignMessage)(nil),             // 3: hybrid.goproto.proto.test3.ForeignMessage
+	(*TestAllTypes_NestedMessage)(nil), // 4: hybrid.goproto.proto.test3.TestAllTypes.NestedMessage
+	nil,                                // 5: hybrid.goproto.proto.test3.TestAllTypes.MapInt32Int32Entry
+	nil,                                // 6: hybrid.goproto.proto.test3.TestAllTypes.MapInt64Int64Entry
+	nil,                                // 7: hybrid.goproto.proto.test3.TestAllTypes.MapUint32Uint32Entry
+	nil,                                // 8: hybrid.goproto.proto.test3.TestAllTypes.MapUint64Uint64Entry
+	nil,                                // 9: hybrid.goproto.proto.test3.TestAllTypes.MapSint32Sint32Entry
+	nil,                                // 10: hybrid.goproto.proto.test3.TestAllTypes.MapSint64Sint64Entry
+	nil,                                // 11: hybrid.goproto.proto.test3.TestAllTypes.MapFixed32Fixed32Entry
+	nil,                                // 12: hybrid.goproto.proto.test3.TestAllTypes.MapFixed64Fixed64Entry
+	nil,                                // 13: hybrid.goproto.proto.test3.TestAllTypes.MapSfixed32Sfixed32Entry
+	nil,                                // 14: hybrid.goproto.proto.test3.TestAllTypes.MapSfixed64Sfixed64Entry
+	nil,                                // 15: hybrid.goproto.proto.test3.TestAllTypes.MapInt32FloatEntry
+	nil,                                // 16: hybrid.goproto.proto.test3.TestAllTypes.MapInt32DoubleEntry
+	nil,                                // 17: hybrid.goproto.proto.test3.TestAllTypes.MapBoolBoolEntry
+	nil,                                // 18: hybrid.goproto.proto.test3.TestAllTypes.MapStringStringEntry
+	nil,                                // 19: hybrid.goproto.proto.test3.TestAllTypes.MapStringBytesEntry
+	nil,                                // 20: hybrid.goproto.proto.test3.TestAllTypes.MapStringNestedMessageEntry
+	nil,                                // 21: hybrid.goproto.proto.test3.TestAllTypes.MapStringNestedEnumEntry
+	(*ImportMessage)(nil),              // 22: hybrid.goproto.proto.test3.ImportMessage
+	(ImportEnum)(0),                    // 23: hybrid.goproto.proto.test3.ImportEnum
+}
+var file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_depIdxs = []int32{
+	4,  // 0: hybrid.goproto.proto.test3.TestAllTypes.singular_nested_message:type_name -> hybrid.goproto.proto.test3.TestAllTypes.NestedMessage
+	3,  // 1: hybrid.goproto.proto.test3.TestAllTypes.singular_foreign_message:type_name -> hybrid.goproto.proto.test3.ForeignMessage
+	22, // 2: hybrid.goproto.proto.test3.TestAllTypes.singular_import_message:type_name -> hybrid.goproto.proto.test3.ImportMessage
+	1,  // 3: hybrid.goproto.proto.test3.TestAllTypes.singular_nested_enum:type_name -> hybrid.goproto.proto.test3.TestAllTypes.NestedEnum
+	0,  // 4: hybrid.goproto.proto.test3.TestAllTypes.singular_foreign_enum:type_name -> hybrid.goproto.proto.test3.ForeignEnum
+	23, // 5: hybrid.goproto.proto.test3.TestAllTypes.singular_import_enum:type_name -> hybrid.goproto.proto.test3.ImportEnum
+	4,  // 6: hybrid.goproto.proto.test3.TestAllTypes.optional_nested_message:type_name -> hybrid.goproto.proto.test3.TestAllTypes.NestedMessage
+	3,  // 7: hybrid.goproto.proto.test3.TestAllTypes.optional_foreign_message:type_name -> hybrid.goproto.proto.test3.ForeignMessage
+	22, // 8: hybrid.goproto.proto.test3.TestAllTypes.optional_import_message:type_name -> hybrid.goproto.proto.test3.ImportMessage
+	1,  // 9: hybrid.goproto.proto.test3.TestAllTypes.optional_nested_enum:type_name -> hybrid.goproto.proto.test3.TestAllTypes.NestedEnum
+	0,  // 10: hybrid.goproto.proto.test3.TestAllTypes.optional_foreign_enum:type_name -> hybrid.goproto.proto.test3.ForeignEnum
+	23, // 11: hybrid.goproto.proto.test3.TestAllTypes.optional_import_enum:type_name -> hybrid.goproto.proto.test3.ImportEnum
+	4,  // 12: hybrid.goproto.proto.test3.TestAllTypes.repeated_nested_message:type_name -> hybrid.goproto.proto.test3.TestAllTypes.NestedMessage
+	3,  // 13: hybrid.goproto.proto.test3.TestAllTypes.repeated_foreign_message:type_name -> hybrid.goproto.proto.test3.ForeignMessage
+	22, // 14: hybrid.goproto.proto.test3.TestAllTypes.repeated_importmessage:type_name -> hybrid.goproto.proto.test3.ImportMessage
+	1,  // 15: hybrid.goproto.proto.test3.TestAllTypes.repeated_nested_enum:type_name -> hybrid.goproto.proto.test3.TestAllTypes.NestedEnum
+	0,  // 16: hybrid.goproto.proto.test3.TestAllTypes.repeated_foreign_enum:type_name -> hybrid.goproto.proto.test3.ForeignEnum
+	23, // 17: hybrid.goproto.proto.test3.TestAllTypes.repeated_importenum:type_name -> hybrid.goproto.proto.test3.ImportEnum
+	5,  // 18: hybrid.goproto.proto.test3.TestAllTypes.map_int32_int32:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapInt32Int32Entry
+	6,  // 19: hybrid.goproto.proto.test3.TestAllTypes.map_int64_int64:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapInt64Int64Entry
+	7,  // 20: hybrid.goproto.proto.test3.TestAllTypes.map_uint32_uint32:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapUint32Uint32Entry
+	8,  // 21: hybrid.goproto.proto.test3.TestAllTypes.map_uint64_uint64:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapUint64Uint64Entry
+	9,  // 22: hybrid.goproto.proto.test3.TestAllTypes.map_sint32_sint32:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapSint32Sint32Entry
+	10, // 23: hybrid.goproto.proto.test3.TestAllTypes.map_sint64_sint64:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapSint64Sint64Entry
+	11, // 24: hybrid.goproto.proto.test3.TestAllTypes.map_fixed32_fixed32:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapFixed32Fixed32Entry
+	12, // 25: hybrid.goproto.proto.test3.TestAllTypes.map_fixed64_fixed64:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapFixed64Fixed64Entry
+	13, // 26: hybrid.goproto.proto.test3.TestAllTypes.map_sfixed32_sfixed32:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapSfixed32Sfixed32Entry
+	14, // 27: hybrid.goproto.proto.test3.TestAllTypes.map_sfixed64_sfixed64:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapSfixed64Sfixed64Entry
+	15, // 28: hybrid.goproto.proto.test3.TestAllTypes.map_int32_float:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapInt32FloatEntry
+	16, // 29: hybrid.goproto.proto.test3.TestAllTypes.map_int32_double:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapInt32DoubleEntry
+	17, // 30: hybrid.goproto.proto.test3.TestAllTypes.map_bool_bool:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapBoolBoolEntry
+	18, // 31: hybrid.goproto.proto.test3.TestAllTypes.map_string_string:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapStringStringEntry
+	19, // 32: hybrid.goproto.proto.test3.TestAllTypes.map_string_bytes:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapStringBytesEntry
+	20, // 33: hybrid.goproto.proto.test3.TestAllTypes.map_string_nested_message:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapStringNestedMessageEntry
+	21, // 34: hybrid.goproto.proto.test3.TestAllTypes.map_string_nested_enum:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapStringNestedEnumEntry
+	4,  // 35: hybrid.goproto.proto.test3.TestAllTypes.oneof_nested_message:type_name -> hybrid.goproto.proto.test3.TestAllTypes.NestedMessage
+	1,  // 36: hybrid.goproto.proto.test3.TestAllTypes.oneof_enum:type_name -> hybrid.goproto.proto.test3.TestAllTypes.NestedEnum
+	2,  // 37: hybrid.goproto.proto.test3.TestAllTypes.NestedMessage.corecursive:type_name -> hybrid.goproto.proto.test3.TestAllTypes
+	4,  // 38: hybrid.goproto.proto.test3.TestAllTypes.MapStringNestedMessageEntry.value:type_name -> hybrid.goproto.proto.test3.TestAllTypes.NestedMessage
+	1,  // 39: hybrid.goproto.proto.test3.TestAllTypes.MapStringNestedEnumEntry.value:type_name -> hybrid.goproto.proto.test3.TestAllTypes.NestedEnum
+	40, // [40:40] is the sub-list for method output_type
+	40, // [40:40] is the sub-list for method input_type
+	40, // [40:40] is the sub-list for extension type_name
+	40, // [40:40] is the sub-list for extension extendee
+	0,  // [0:40] is the sub-list for field type_name
+}
+
+func init() { file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_init() }
+func file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_init() {
+	if File_internal_testprotos_test3_test3_hybrid_test_hybrid_proto != nil {
+		return
+	}
+	file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_init()
+	file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_msgTypes[0].OneofWrappers = []any{
+		(*TestAllTypes_OneofUint32)(nil),
+		(*TestAllTypes_OneofNestedMessage)(nil),
+		(*TestAllTypes_OneofString)(nil),
+		(*TestAllTypes_OneofBytes)(nil),
+		(*TestAllTypes_OneofBool)(nil),
+		(*TestAllTypes_OneofUint64)(nil),
+		(*TestAllTypes_OneofFloat)(nil),
+		(*TestAllTypes_OneofDouble)(nil),
+		(*TestAllTypes_OneofEnum)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_rawDesc,
+			NumEnums:      2,
+			NumMessages:   20,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_goTypes,
+		DependencyIndexes: file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_depIdxs,
+		EnumInfos:         file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_enumTypes,
+		MessageInfos:      file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_msgTypes,
+	}.Build()
+	File_internal_testprotos_test3_test3_hybrid_test_hybrid_proto = out.File
+	file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_rawDesc = nil
+	file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_goTypes = nil
+	file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_depIdxs = nil
+}
diff --git a/internal/testprotos/test3/test3_hybrid/test.hybrid.proto b/internal/testprotos/test3/test3_hybrid/test.hybrid.proto
new file mode 100644
index 0000000..541bbbe
--- /dev/null
+++ b/internal/testprotos/test3/test3_hybrid/test.hybrid.proto
@@ -0,0 +1,134 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+syntax = "proto3";
+
+package hybrid.goproto.proto.test3;
+
+import "internal/testprotos/test3/test3_hybrid/test_import.hybrid.proto";
+
+option go_package = "google.golang.org/protobuf/internal/testprotos/test3/test3_hybrid";
+
+
+message TestAllTypes {
+  message NestedMessage {
+    int32 a = 1;
+    TestAllTypes corecursive = 2;
+  }
+
+  enum NestedEnum {
+    FOO = 0;
+    BAR = 1;
+    BAZ = 2;
+    NEG = -1;  // Intentionally negative.
+  }
+
+  int32 singular_int32 = 81;
+  int64 singular_int64 = 82;
+  uint32 singular_uint32 = 83;
+  uint64 singular_uint64 = 84;
+  sint32 singular_sint32 = 85;
+  sint64 singular_sint64 = 86;
+  fixed32 singular_fixed32 = 87;
+  fixed64 singular_fixed64 = 88;
+  sfixed32 singular_sfixed32 = 89;
+  sfixed64 singular_sfixed64 = 90;
+  float singular_float = 91;
+  double singular_double = 92;
+  bool singular_bool = 93;
+  string singular_string = 94;
+  bytes singular_bytes = 95;
+  NestedMessage singular_nested_message = 98;
+  ForeignMessage singular_foreign_message = 99;
+  ImportMessage singular_import_message = 100;
+  NestedEnum singular_nested_enum = 101;
+  ForeignEnum singular_foreign_enum = 102;
+  ImportEnum singular_import_enum = 103;
+
+  optional int32 optional_int32 = 1;
+  optional int64 optional_int64 = 2;
+  optional uint32 optional_uint32 = 3;
+  optional uint64 optional_uint64 = 4;
+  optional sint32 optional_sint32 = 5;
+  optional sint64 optional_sint64 = 6;
+  optional fixed32 optional_fixed32 = 7;
+  optional fixed64 optional_fixed64 = 8;
+  optional sfixed32 optional_sfixed32 = 9;
+  optional sfixed64 optional_sfixed64 = 10;
+  optional float optional_float = 11;
+  optional double optional_double = 12;
+  optional bool optional_bool = 13;
+  optional string optional_string = 14;
+  optional bytes optional_bytes = 15;
+  optional NestedMessage optional_nested_message = 18;
+  optional ForeignMessage optional_foreign_message = 19;
+  optional ImportMessage optional_import_message = 20;
+  optional NestedEnum optional_nested_enum = 21;
+  optional ForeignEnum optional_foreign_enum = 22;
+  optional ImportEnum optional_import_enum = 23;
+
+  repeated int32 repeated_int32 = 31;
+  repeated int64 repeated_int64 = 32;
+  repeated uint32 repeated_uint32 = 33;
+  repeated uint64 repeated_uint64 = 34;
+  repeated sint32 repeated_sint32 = 35;
+  repeated sint64 repeated_sint64 = 36;
+  repeated fixed32 repeated_fixed32 = 37;
+  repeated fixed64 repeated_fixed64 = 38;
+  repeated sfixed32 repeated_sfixed32 = 39;
+  repeated sfixed64 repeated_sfixed64 = 40;
+  repeated float repeated_float = 41;
+  repeated double repeated_double = 42;
+  repeated bool repeated_bool = 43;
+  repeated string repeated_string = 44;
+  repeated bytes repeated_bytes = 45;
+  repeated NestedMessage repeated_nested_message = 48;
+  repeated ForeignMessage repeated_foreign_message = 49;
+  repeated ImportMessage repeated_importmessage = 50;
+  repeated NestedEnum repeated_nested_enum = 51;
+  repeated ForeignEnum repeated_foreign_enum = 52;
+  repeated ImportEnum repeated_importenum = 53;
+
+  map<int32, int32> map_int32_int32 = 56;
+  map<int64, int64> map_int64_int64 = 57;
+  map<uint32, uint32> map_uint32_uint32 = 58;
+  map<uint64, uint64> map_uint64_uint64 = 59;
+  map<sint32, sint32> map_sint32_sint32 = 60;
+  map<sint64, sint64> map_sint64_sint64 = 61;
+  map<fixed32, fixed32> map_fixed32_fixed32 = 62;
+  map<fixed64, fixed64> map_fixed64_fixed64 = 63;
+  map<sfixed32, sfixed32> map_sfixed32_sfixed32 = 64;
+  map<sfixed64, sfixed64> map_sfixed64_sfixed64 = 65;
+  map<int32, float> map_int32_float = 66;
+  map<int32, double> map_int32_double = 67;
+  map<bool, bool> map_bool_bool = 68;
+  map<string, string> map_string_string = 69;
+  map<string, bytes> map_string_bytes = 70;
+  map<string, NestedMessage> map_string_nested_message = 71;
+  map<string, NestedEnum> map_string_nested_enum = 73;
+
+  oneof oneof_field {
+    uint32 oneof_uint32 = 111;
+    NestedMessage oneof_nested_message = 112;
+    string oneof_string = 113;
+    bytes oneof_bytes = 114;
+    bool oneof_bool = 115;
+    uint64 oneof_uint64 = 116;
+    float oneof_float = 117;
+    double oneof_double = 118;
+    NestedEnum oneof_enum = 119;
+  }
+}
+
+message ForeignMessage {
+  int32 c = 1;
+  int32 d = 2;
+}
+
+enum ForeignEnum {
+  FOREIGN_ZERO = 0;
+  FOREIGN_FOO = 4;
+  FOREIGN_BAR = 5;
+  FOREIGN_BAZ = 6;
+}
\ No newline at end of file
diff --git a/internal/testprotos/test3/test3_hybrid/test.hybrid_protoopaque.pb.go b/internal/testprotos/test3/test3_hybrid/test.hybrid_protoopaque.pb.go
new file mode 100644
index 0000000..6cdaf42
--- /dev/null
+++ b/internal/testprotos/test3/test3_hybrid/test.hybrid_protoopaque.pb.go
@@ -0,0 +1,2851 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: internal/testprotos/test3/test3_hybrid/test.hybrid.proto
+
+//go:build protoopaque
+
+package test3_hybrid
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+)
+
+type ForeignEnum int32
+
+const (
+	ForeignEnum_FOREIGN_ZERO ForeignEnum = 0
+	ForeignEnum_FOREIGN_FOO  ForeignEnum = 4
+	ForeignEnum_FOREIGN_BAR  ForeignEnum = 5
+	ForeignEnum_FOREIGN_BAZ  ForeignEnum = 6
+)
+
+// Enum value maps for ForeignEnum.
+var (
+	ForeignEnum_name = map[int32]string{
+		0: "FOREIGN_ZERO",
+		4: "FOREIGN_FOO",
+		5: "FOREIGN_BAR",
+		6: "FOREIGN_BAZ",
+	}
+	ForeignEnum_value = map[string]int32{
+		"FOREIGN_ZERO": 0,
+		"FOREIGN_FOO":  4,
+		"FOREIGN_BAR":  5,
+		"FOREIGN_BAZ":  6,
+	}
+)
+
+func (x ForeignEnum) Enum() *ForeignEnum {
+	p := new(ForeignEnum)
+	*p = x
+	return p
+}
+
+func (x ForeignEnum) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ForeignEnum) Descriptor() protoreflect.EnumDescriptor {
+	return file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_enumTypes[0].Descriptor()
+}
+
+func (ForeignEnum) Type() protoreflect.EnumType {
+	return &file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_enumTypes[0]
+}
+
+func (x ForeignEnum) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+type TestAllTypes_NestedEnum int32
+
+const (
+	TestAllTypes_FOO TestAllTypes_NestedEnum = 0
+	TestAllTypes_BAR TestAllTypes_NestedEnum = 1
+	TestAllTypes_BAZ TestAllTypes_NestedEnum = 2
+	TestAllTypes_NEG TestAllTypes_NestedEnum = -1 // Intentionally negative.
+)
+
+// Enum value maps for TestAllTypes_NestedEnum.
+var (
+	TestAllTypes_NestedEnum_name = map[int32]string{
+		0:  "FOO",
+		1:  "BAR",
+		2:  "BAZ",
+		-1: "NEG",
+	}
+	TestAllTypes_NestedEnum_value = map[string]int32{
+		"FOO": 0,
+		"BAR": 1,
+		"BAZ": 2,
+		"NEG": -1,
+	}
+)
+
+func (x TestAllTypes_NestedEnum) Enum() *TestAllTypes_NestedEnum {
+	p := new(TestAllTypes_NestedEnum)
+	*p = x
+	return p
+}
+
+func (x TestAllTypes_NestedEnum) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (TestAllTypes_NestedEnum) Descriptor() protoreflect.EnumDescriptor {
+	return file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_enumTypes[1].Descriptor()
+}
+
+func (TestAllTypes_NestedEnum) Type() protoreflect.EnumType {
+	return &file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_enumTypes[1]
+}
+
+func (x TestAllTypes_NestedEnum) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+type TestAllTypes struct {
+	state                             protoimpl.MessageState                 `protogen:"opaque.v1"`
+	xxx_hidden_SingularInt32          int32                                  `protobuf:"varint,81,opt,name=singular_int32,json=singularInt32,proto3" json:"singular_int32,omitempty"`
+	xxx_hidden_SingularInt64          int64                                  `protobuf:"varint,82,opt,name=singular_int64,json=singularInt64,proto3" json:"singular_int64,omitempty"`
+	xxx_hidden_SingularUint32         uint32                                 `protobuf:"varint,83,opt,name=singular_uint32,json=singularUint32,proto3" json:"singular_uint32,omitempty"`
+	xxx_hidden_SingularUint64         uint64                                 `protobuf:"varint,84,opt,name=singular_uint64,json=singularUint64,proto3" json:"singular_uint64,omitempty"`
+	xxx_hidden_SingularSint32         int32                                  `protobuf:"zigzag32,85,opt,name=singular_sint32,json=singularSint32,proto3" json:"singular_sint32,omitempty"`
+	xxx_hidden_SingularSint64         int64                                  `protobuf:"zigzag64,86,opt,name=singular_sint64,json=singularSint64,proto3" json:"singular_sint64,omitempty"`
+	xxx_hidden_SingularFixed32        uint32                                 `protobuf:"fixed32,87,opt,name=singular_fixed32,json=singularFixed32,proto3" json:"singular_fixed32,omitempty"`
+	xxx_hidden_SingularFixed64        uint64                                 `protobuf:"fixed64,88,opt,name=singular_fixed64,json=singularFixed64,proto3" json:"singular_fixed64,omitempty"`
+	xxx_hidden_SingularSfixed32       int32                                  `protobuf:"fixed32,89,opt,name=singular_sfixed32,json=singularSfixed32,proto3" json:"singular_sfixed32,omitempty"`
+	xxx_hidden_SingularSfixed64       int64                                  `protobuf:"fixed64,90,opt,name=singular_sfixed64,json=singularSfixed64,proto3" json:"singular_sfixed64,omitempty"`
+	xxx_hidden_SingularFloat          float32                                `protobuf:"fixed32,91,opt,name=singular_float,json=singularFloat,proto3" json:"singular_float,omitempty"`
+	xxx_hidden_SingularDouble         float64                                `protobuf:"fixed64,92,opt,name=singular_double,json=singularDouble,proto3" json:"singular_double,omitempty"`
+	xxx_hidden_SingularBool           bool                                   `protobuf:"varint,93,opt,name=singular_bool,json=singularBool,proto3" json:"singular_bool,omitempty"`
+	xxx_hidden_SingularString         string                                 `protobuf:"bytes,94,opt,name=singular_string,json=singularString,proto3" json:"singular_string,omitempty"`
+	xxx_hidden_SingularBytes          []byte                                 `protobuf:"bytes,95,opt,name=singular_bytes,json=singularBytes,proto3" json:"singular_bytes,omitempty"`
+	xxx_hidden_SingularNestedMessage  *TestAllTypes_NestedMessage            `protobuf:"bytes,98,opt,name=singular_nested_message,json=singularNestedMessage,proto3" json:"singular_nested_message,omitempty"`
+	xxx_hidden_SingularForeignMessage *ForeignMessage                        `protobuf:"bytes,99,opt,name=singular_foreign_message,json=singularForeignMessage,proto3" json:"singular_foreign_message,omitempty"`
+	xxx_hidden_SingularImportMessage  *ImportMessage                         `protobuf:"bytes,100,opt,name=singular_import_message,json=singularImportMessage,proto3" json:"singular_import_message,omitempty"`
+	xxx_hidden_SingularNestedEnum     TestAllTypes_NestedEnum                `protobuf:"varint,101,opt,name=singular_nested_enum,json=singularNestedEnum,proto3,enum=hybrid.goproto.proto.test3.TestAllTypes_NestedEnum" json:"singular_nested_enum,omitempty"`
+	xxx_hidden_SingularForeignEnum    ForeignEnum                            `protobuf:"varint,102,opt,name=singular_foreign_enum,json=singularForeignEnum,proto3,enum=hybrid.goproto.proto.test3.ForeignEnum" json:"singular_foreign_enum,omitempty"`
+	xxx_hidden_SingularImportEnum     ImportEnum                             `protobuf:"varint,103,opt,name=singular_import_enum,json=singularImportEnum,proto3,enum=hybrid.goproto.proto.test3.ImportEnum" json:"singular_import_enum,omitempty"`
+	xxx_hidden_OptionalInt32          int32                                  `protobuf:"varint,1,opt,name=optional_int32,json=optionalInt32,proto3,oneof" json:"optional_int32,omitempty"`
+	xxx_hidden_OptionalInt64          int64                                  `protobuf:"varint,2,opt,name=optional_int64,json=optionalInt64,proto3,oneof" json:"optional_int64,omitempty"`
+	xxx_hidden_OptionalUint32         uint32                                 `protobuf:"varint,3,opt,name=optional_uint32,json=optionalUint32,proto3,oneof" json:"optional_uint32,omitempty"`
+	xxx_hidden_OptionalUint64         uint64                                 `protobuf:"varint,4,opt,name=optional_uint64,json=optionalUint64,proto3,oneof" json:"optional_uint64,omitempty"`
+	xxx_hidden_OptionalSint32         int32                                  `protobuf:"zigzag32,5,opt,name=optional_sint32,json=optionalSint32,proto3,oneof" json:"optional_sint32,omitempty"`
+	xxx_hidden_OptionalSint64         int64                                  `protobuf:"zigzag64,6,opt,name=optional_sint64,json=optionalSint64,proto3,oneof" json:"optional_sint64,omitempty"`
+	xxx_hidden_OptionalFixed32        uint32                                 `protobuf:"fixed32,7,opt,name=optional_fixed32,json=optionalFixed32,proto3,oneof" json:"optional_fixed32,omitempty"`
+	xxx_hidden_OptionalFixed64        uint64                                 `protobuf:"fixed64,8,opt,name=optional_fixed64,json=optionalFixed64,proto3,oneof" json:"optional_fixed64,omitempty"`
+	xxx_hidden_OptionalSfixed32       int32                                  `protobuf:"fixed32,9,opt,name=optional_sfixed32,json=optionalSfixed32,proto3,oneof" json:"optional_sfixed32,omitempty"`
+	xxx_hidden_OptionalSfixed64       int64                                  `protobuf:"fixed64,10,opt,name=optional_sfixed64,json=optionalSfixed64,proto3,oneof" json:"optional_sfixed64,omitempty"`
+	xxx_hidden_OptionalFloat          float32                                `protobuf:"fixed32,11,opt,name=optional_float,json=optionalFloat,proto3,oneof" json:"optional_float,omitempty"`
+	xxx_hidden_OptionalDouble         float64                                `protobuf:"fixed64,12,opt,name=optional_double,json=optionalDouble,proto3,oneof" json:"optional_double,omitempty"`
+	xxx_hidden_OptionalBool           bool                                   `protobuf:"varint,13,opt,name=optional_bool,json=optionalBool,proto3,oneof" json:"optional_bool,omitempty"`
+	xxx_hidden_OptionalString         *string                                `protobuf:"bytes,14,opt,name=optional_string,json=optionalString,proto3,oneof" json:"optional_string,omitempty"`
+	xxx_hidden_OptionalBytes          []byte                                 `protobuf:"bytes,15,opt,name=optional_bytes,json=optionalBytes,proto3,oneof" json:"optional_bytes,omitempty"`
+	xxx_hidden_OptionalNestedMessage  *TestAllTypes_NestedMessage            `protobuf:"bytes,18,opt,name=optional_nested_message,json=optionalNestedMessage,proto3,oneof" json:"optional_nested_message,omitempty"`
+	xxx_hidden_OptionalForeignMessage *ForeignMessage                        `protobuf:"bytes,19,opt,name=optional_foreign_message,json=optionalForeignMessage,proto3,oneof" json:"optional_foreign_message,omitempty"`
+	xxx_hidden_OptionalImportMessage  *ImportMessage                         `protobuf:"bytes,20,opt,name=optional_import_message,json=optionalImportMessage,proto3,oneof" json:"optional_import_message,omitempty"`
+	xxx_hidden_OptionalNestedEnum     TestAllTypes_NestedEnum                `protobuf:"varint,21,opt,name=optional_nested_enum,json=optionalNestedEnum,proto3,enum=hybrid.goproto.proto.test3.TestAllTypes_NestedEnum,oneof" json:"optional_nested_enum,omitempty"`
+	xxx_hidden_OptionalForeignEnum    ForeignEnum                            `protobuf:"varint,22,opt,name=optional_foreign_enum,json=optionalForeignEnum,proto3,enum=hybrid.goproto.proto.test3.ForeignEnum,oneof" json:"optional_foreign_enum,omitempty"`
+	xxx_hidden_OptionalImportEnum     ImportEnum                             `protobuf:"varint,23,opt,name=optional_import_enum,json=optionalImportEnum,proto3,enum=hybrid.goproto.proto.test3.ImportEnum,oneof" json:"optional_import_enum,omitempty"`
+	xxx_hidden_RepeatedInt32          []int32                                `protobuf:"varint,31,rep,packed,name=repeated_int32,json=repeatedInt32,proto3" json:"repeated_int32,omitempty"`
+	xxx_hidden_RepeatedInt64          []int64                                `protobuf:"varint,32,rep,packed,name=repeated_int64,json=repeatedInt64,proto3" json:"repeated_int64,omitempty"`
+	xxx_hidden_RepeatedUint32         []uint32                               `protobuf:"varint,33,rep,packed,name=repeated_uint32,json=repeatedUint32,proto3" json:"repeated_uint32,omitempty"`
+	xxx_hidden_RepeatedUint64         []uint64                               `protobuf:"varint,34,rep,packed,name=repeated_uint64,json=repeatedUint64,proto3" json:"repeated_uint64,omitempty"`
+	xxx_hidden_RepeatedSint32         []int32                                `protobuf:"zigzag32,35,rep,packed,name=repeated_sint32,json=repeatedSint32,proto3" json:"repeated_sint32,omitempty"`
+	xxx_hidden_RepeatedSint64         []int64                                `protobuf:"zigzag64,36,rep,packed,name=repeated_sint64,json=repeatedSint64,proto3" json:"repeated_sint64,omitempty"`
+	xxx_hidden_RepeatedFixed32        []uint32                               `protobuf:"fixed32,37,rep,packed,name=repeated_fixed32,json=repeatedFixed32,proto3" json:"repeated_fixed32,omitempty"`
+	xxx_hidden_RepeatedFixed64        []uint64                               `protobuf:"fixed64,38,rep,packed,name=repeated_fixed64,json=repeatedFixed64,proto3" json:"repeated_fixed64,omitempty"`
+	xxx_hidden_RepeatedSfixed32       []int32                                `protobuf:"fixed32,39,rep,packed,name=repeated_sfixed32,json=repeatedSfixed32,proto3" json:"repeated_sfixed32,omitempty"`
+	xxx_hidden_RepeatedSfixed64       []int64                                `protobuf:"fixed64,40,rep,packed,name=repeated_sfixed64,json=repeatedSfixed64,proto3" json:"repeated_sfixed64,omitempty"`
+	xxx_hidden_RepeatedFloat          []float32                              `protobuf:"fixed32,41,rep,packed,name=repeated_float,json=repeatedFloat,proto3" json:"repeated_float,omitempty"`
+	xxx_hidden_RepeatedDouble         []float64                              `protobuf:"fixed64,42,rep,packed,name=repeated_double,json=repeatedDouble,proto3" json:"repeated_double,omitempty"`
+	xxx_hidden_RepeatedBool           []bool                                 `protobuf:"varint,43,rep,packed,name=repeated_bool,json=repeatedBool,proto3" json:"repeated_bool,omitempty"`
+	xxx_hidden_RepeatedString         []string                               `protobuf:"bytes,44,rep,name=repeated_string,json=repeatedString,proto3" json:"repeated_string,omitempty"`
+	xxx_hidden_RepeatedBytes          [][]byte                               `protobuf:"bytes,45,rep,name=repeated_bytes,json=repeatedBytes,proto3" json:"repeated_bytes,omitempty"`
+	xxx_hidden_RepeatedNestedMessage  *[]*TestAllTypes_NestedMessage         `protobuf:"bytes,48,rep,name=repeated_nested_message,json=repeatedNestedMessage,proto3" json:"repeated_nested_message,omitempty"`
+	xxx_hidden_RepeatedForeignMessage *[]*ForeignMessage                     `protobuf:"bytes,49,rep,name=repeated_foreign_message,json=repeatedForeignMessage,proto3" json:"repeated_foreign_message,omitempty"`
+	xxx_hidden_RepeatedImportmessage  *[]*ImportMessage                      `protobuf:"bytes,50,rep,name=repeated_importmessage,json=repeatedImportmessage,proto3" json:"repeated_importmessage,omitempty"`
+	xxx_hidden_RepeatedNestedEnum     []TestAllTypes_NestedEnum              `protobuf:"varint,51,rep,packed,name=repeated_nested_enum,json=repeatedNestedEnum,proto3,enum=hybrid.goproto.proto.test3.TestAllTypes_NestedEnum" json:"repeated_nested_enum,omitempty"`
+	xxx_hidden_RepeatedForeignEnum    []ForeignEnum                          `protobuf:"varint,52,rep,packed,name=repeated_foreign_enum,json=repeatedForeignEnum,proto3,enum=hybrid.goproto.proto.test3.ForeignEnum" json:"repeated_foreign_enum,omitempty"`
+	xxx_hidden_RepeatedImportenum     []ImportEnum                           `protobuf:"varint,53,rep,packed,name=repeated_importenum,json=repeatedImportenum,proto3,enum=hybrid.goproto.proto.test3.ImportEnum" json:"repeated_importenum,omitempty"`
+	xxx_hidden_MapInt32Int32          map[int32]int32                        `protobuf:"bytes,56,rep,name=map_int32_int32,json=mapInt32Int32,proto3" json:"map_int32_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	xxx_hidden_MapInt64Int64          map[int64]int64                        `protobuf:"bytes,57,rep,name=map_int64_int64,json=mapInt64Int64,proto3" json:"map_int64_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	xxx_hidden_MapUint32Uint32        map[uint32]uint32                      `protobuf:"bytes,58,rep,name=map_uint32_uint32,json=mapUint32Uint32,proto3" json:"map_uint32_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	xxx_hidden_MapUint64Uint64        map[uint64]uint64                      `protobuf:"bytes,59,rep,name=map_uint64_uint64,json=mapUint64Uint64,proto3" json:"map_uint64_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	xxx_hidden_MapSint32Sint32        map[int32]int32                        `protobuf:"bytes,60,rep,name=map_sint32_sint32,json=mapSint32Sint32,proto3" json:"map_sint32_sint32,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
+	xxx_hidden_MapSint64Sint64        map[int64]int64                        `protobuf:"bytes,61,rep,name=map_sint64_sint64,json=mapSint64Sint64,proto3" json:"map_sint64_sint64,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
+	xxx_hidden_MapFixed32Fixed32      map[uint32]uint32                      `protobuf:"bytes,62,rep,name=map_fixed32_fixed32,json=mapFixed32Fixed32,proto3" json:"map_fixed32_fixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	xxx_hidden_MapFixed64Fixed64      map[uint64]uint64                      `protobuf:"bytes,63,rep,name=map_fixed64_fixed64,json=mapFixed64Fixed64,proto3" json:"map_fixed64_fixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	xxx_hidden_MapSfixed32Sfixed32    map[int32]int32                        `protobuf:"bytes,64,rep,name=map_sfixed32_sfixed32,json=mapSfixed32Sfixed32,proto3" json:"map_sfixed32_sfixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	xxx_hidden_MapSfixed64Sfixed64    map[int64]int64                        `protobuf:"bytes,65,rep,name=map_sfixed64_sfixed64,json=mapSfixed64Sfixed64,proto3" json:"map_sfixed64_sfixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	xxx_hidden_MapInt32Float          map[int32]float32                      `protobuf:"bytes,66,rep,name=map_int32_float,json=mapInt32Float,proto3" json:"map_int32_float,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	xxx_hidden_MapInt32Double         map[int32]float64                      `protobuf:"bytes,67,rep,name=map_int32_double,json=mapInt32Double,proto3" json:"map_int32_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	xxx_hidden_MapBoolBool            map[bool]bool                          `protobuf:"bytes,68,rep,name=map_bool_bool,json=mapBoolBool,proto3" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	xxx_hidden_MapStringString        map[string]string                      `protobuf:"bytes,69,rep,name=map_string_string,json=mapStringString,proto3" json:"map_string_string,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	xxx_hidden_MapStringBytes         map[string][]byte                      `protobuf:"bytes,70,rep,name=map_string_bytes,json=mapStringBytes,proto3" json:"map_string_bytes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	xxx_hidden_MapStringNestedMessage map[string]*TestAllTypes_NestedMessage `protobuf:"bytes,71,rep,name=map_string_nested_message,json=mapStringNestedMessage,proto3" json:"map_string_nested_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	xxx_hidden_MapStringNestedEnum    map[string]TestAllTypes_NestedEnum     `protobuf:"bytes,73,rep,name=map_string_nested_enum,json=mapStringNestedEnum,proto3" json:"map_string_nested_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=hybrid.goproto.proto.test3.TestAllTypes_NestedEnum"`
+	xxx_hidden_OneofField             isTestAllTypes_OneofField              `protobuf_oneof:"oneof_field"`
+	XXX_raceDetectHookData            protoimpl.RaceDetectHookData
+	XXX_presence                      [3]uint32
+	unknownFields                     protoimpl.UnknownFields
+	sizeCache                         protoimpl.SizeCache
+}
+
+func (x *TestAllTypes) Reset() {
+	*x = TestAllTypes{}
+	mi := &file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestAllTypes) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestAllTypes) ProtoMessage() {}
+
+func (x *TestAllTypes) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestAllTypes) GetSingularInt32() int32 {
+	if x != nil {
+		return x.xxx_hidden_SingularInt32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularInt64() int64 {
+	if x != nil {
+		return x.xxx_hidden_SingularInt64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularUint32() uint32 {
+	if x != nil {
+		return x.xxx_hidden_SingularUint32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularUint64() uint64 {
+	if x != nil {
+		return x.xxx_hidden_SingularUint64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularSint32() int32 {
+	if x != nil {
+		return x.xxx_hidden_SingularSint32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularSint64() int64 {
+	if x != nil {
+		return x.xxx_hidden_SingularSint64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularFixed32() uint32 {
+	if x != nil {
+		return x.xxx_hidden_SingularFixed32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularFixed64() uint64 {
+	if x != nil {
+		return x.xxx_hidden_SingularFixed64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularSfixed32() int32 {
+	if x != nil {
+		return x.xxx_hidden_SingularSfixed32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularSfixed64() int64 {
+	if x != nil {
+		return x.xxx_hidden_SingularSfixed64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularFloat() float32 {
+	if x != nil {
+		return x.xxx_hidden_SingularFloat
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularDouble() float64 {
+	if x != nil {
+		return x.xxx_hidden_SingularDouble
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularBool() bool {
+	if x != nil {
+		return x.xxx_hidden_SingularBool
+	}
+	return false
+}
+
+func (x *TestAllTypes) GetSingularString() string {
+	if x != nil {
+		return x.xxx_hidden_SingularString
+	}
+	return ""
+}
+
+func (x *TestAllTypes) GetSingularBytes() []byte {
+	if x != nil {
+		return x.xxx_hidden_SingularBytes
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetSingularNestedMessage() *TestAllTypes_NestedMessage {
+	if x != nil {
+		return x.xxx_hidden_SingularNestedMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetSingularForeignMessage() *ForeignMessage {
+	if x != nil {
+		return x.xxx_hidden_SingularForeignMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetSingularImportMessage() *ImportMessage {
+	if x != nil {
+		return x.xxx_hidden_SingularImportMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetSingularNestedEnum() TestAllTypes_NestedEnum {
+	if x != nil {
+		return x.xxx_hidden_SingularNestedEnum
+	}
+	return TestAllTypes_FOO
+}
+
+func (x *TestAllTypes) GetSingularForeignEnum() ForeignEnum {
+	if x != nil {
+		return x.xxx_hidden_SingularForeignEnum
+	}
+	return ForeignEnum_FOREIGN_ZERO
+}
+
+func (x *TestAllTypes) GetSingularImportEnum() ImportEnum {
+	if x != nil {
+		return x.xxx_hidden_SingularImportEnum
+	}
+	return ImportEnum_IMPORT_ZERO
+}
+
+func (x *TestAllTypes) GetOptionalInt32() int32 {
+	if x != nil {
+		return x.xxx_hidden_OptionalInt32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalInt64() int64 {
+	if x != nil {
+		return x.xxx_hidden_OptionalInt64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalUint32() uint32 {
+	if x != nil {
+		return x.xxx_hidden_OptionalUint32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalUint64() uint64 {
+	if x != nil {
+		return x.xxx_hidden_OptionalUint64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalSint32() int32 {
+	if x != nil {
+		return x.xxx_hidden_OptionalSint32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalSint64() int64 {
+	if x != nil {
+		return x.xxx_hidden_OptionalSint64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalFixed32() uint32 {
+	if x != nil {
+		return x.xxx_hidden_OptionalFixed32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalFixed64() uint64 {
+	if x != nil {
+		return x.xxx_hidden_OptionalFixed64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalSfixed32() int32 {
+	if x != nil {
+		return x.xxx_hidden_OptionalSfixed32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalSfixed64() int64 {
+	if x != nil {
+		return x.xxx_hidden_OptionalSfixed64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalFloat() float32 {
+	if x != nil {
+		return x.xxx_hidden_OptionalFloat
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalDouble() float64 {
+	if x != nil {
+		return x.xxx_hidden_OptionalDouble
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalBool() bool {
+	if x != nil {
+		return x.xxx_hidden_OptionalBool
+	}
+	return false
+}
+
+func (x *TestAllTypes) GetOptionalString() string {
+	if x != nil {
+		if x.xxx_hidden_OptionalString != nil {
+			return *x.xxx_hidden_OptionalString
+		}
+		return ""
+	}
+	return ""
+}
+
+func (x *TestAllTypes) GetOptionalBytes() []byte {
+	if x != nil {
+		return x.xxx_hidden_OptionalBytes
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOptionalNestedMessage() *TestAllTypes_NestedMessage {
+	if x != nil {
+		return x.xxx_hidden_OptionalNestedMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOptionalForeignMessage() *ForeignMessage {
+	if x != nil {
+		return x.xxx_hidden_OptionalForeignMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOptionalImportMessage() *ImportMessage {
+	if x != nil {
+		return x.xxx_hidden_OptionalImportMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOptionalNestedEnum() TestAllTypes_NestedEnum {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[1]), 39) {
+			return x.xxx_hidden_OptionalNestedEnum
+		}
+	}
+	return TestAllTypes_FOO
+}
+
+func (x *TestAllTypes) GetOptionalForeignEnum() ForeignEnum {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[1]), 40) {
+			return x.xxx_hidden_OptionalForeignEnum
+		}
+	}
+	return ForeignEnum_FOREIGN_ZERO
+}
+
+func (x *TestAllTypes) GetOptionalImportEnum() ImportEnum {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[1]), 41) {
+			return x.xxx_hidden_OptionalImportEnum
+		}
+	}
+	return ImportEnum_IMPORT_ZERO
+}
+
+func (x *TestAllTypes) GetRepeatedInt32() []int32 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedInt32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedInt64() []int64 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedInt64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedUint32() []uint32 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedUint32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedUint64() []uint64 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedUint64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedSint32() []int32 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedSint32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedSint64() []int64 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedSint64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedFixed32() []uint32 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedFixed32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedFixed64() []uint64 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedFixed64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedSfixed32() []int32 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedSfixed32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedSfixed64() []int64 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedSfixed64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedFloat() []float32 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedFloat
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedDouble() []float64 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedDouble
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedBool() []bool {
+	if x != nil {
+		return x.xxx_hidden_RepeatedBool
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedString() []string {
+	if x != nil {
+		return x.xxx_hidden_RepeatedString
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedBytes() [][]byte {
+	if x != nil {
+		return x.xxx_hidden_RepeatedBytes
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedNestedMessage() []*TestAllTypes_NestedMessage {
+	if x != nil {
+		if x.xxx_hidden_RepeatedNestedMessage != nil {
+			return *x.xxx_hidden_RepeatedNestedMessage
+		}
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedForeignMessage() []*ForeignMessage {
+	if x != nil {
+		if x.xxx_hidden_RepeatedForeignMessage != nil {
+			return *x.xxx_hidden_RepeatedForeignMessage
+		}
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedImportmessage() []*ImportMessage {
+	if x != nil {
+		if x.xxx_hidden_RepeatedImportmessage != nil {
+			return *x.xxx_hidden_RepeatedImportmessage
+		}
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedNestedEnum() []TestAllTypes_NestedEnum {
+	if x != nil {
+		return x.xxx_hidden_RepeatedNestedEnum
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedForeignEnum() []ForeignEnum {
+	if x != nil {
+		return x.xxx_hidden_RepeatedForeignEnum
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedImportenum() []ImportEnum {
+	if x != nil {
+		return x.xxx_hidden_RepeatedImportenum
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapInt32Int32() map[int32]int32 {
+	if x != nil {
+		return x.xxx_hidden_MapInt32Int32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapInt64Int64() map[int64]int64 {
+	if x != nil {
+		return x.xxx_hidden_MapInt64Int64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapUint32Uint32() map[uint32]uint32 {
+	if x != nil {
+		return x.xxx_hidden_MapUint32Uint32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapUint64Uint64() map[uint64]uint64 {
+	if x != nil {
+		return x.xxx_hidden_MapUint64Uint64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapSint32Sint32() map[int32]int32 {
+	if x != nil {
+		return x.xxx_hidden_MapSint32Sint32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapSint64Sint64() map[int64]int64 {
+	if x != nil {
+		return x.xxx_hidden_MapSint64Sint64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapFixed32Fixed32() map[uint32]uint32 {
+	if x != nil {
+		return x.xxx_hidden_MapFixed32Fixed32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapFixed64Fixed64() map[uint64]uint64 {
+	if x != nil {
+		return x.xxx_hidden_MapFixed64Fixed64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapSfixed32Sfixed32() map[int32]int32 {
+	if x != nil {
+		return x.xxx_hidden_MapSfixed32Sfixed32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapSfixed64Sfixed64() map[int64]int64 {
+	if x != nil {
+		return x.xxx_hidden_MapSfixed64Sfixed64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapInt32Float() map[int32]float32 {
+	if x != nil {
+		return x.xxx_hidden_MapInt32Float
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapInt32Double() map[int32]float64 {
+	if x != nil {
+		return x.xxx_hidden_MapInt32Double
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapBoolBool() map[bool]bool {
+	if x != nil {
+		return x.xxx_hidden_MapBoolBool
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapStringString() map[string]string {
+	if x != nil {
+		return x.xxx_hidden_MapStringString
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapStringBytes() map[string][]byte {
+	if x != nil {
+		return x.xxx_hidden_MapStringBytes
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapStringNestedMessage() map[string]*TestAllTypes_NestedMessage {
+	if x != nil {
+		return x.xxx_hidden_MapStringNestedMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapStringNestedEnum() map[string]TestAllTypes_NestedEnum {
+	if x != nil {
+		return x.xxx_hidden_MapStringNestedEnum
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOneofUint32() uint32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofUint32); ok {
+			return x.OneofUint32
+		}
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOneofNestedMessage() *TestAllTypes_NestedMessage {
+	if x != nil {
+		if x, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofNestedMessage); ok {
+			return x.OneofNestedMessage
+		}
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOneofString() string {
+	if x != nil {
+		if x, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofString); ok {
+			return x.OneofString
+		}
+	}
+	return ""
+}
+
+func (x *TestAllTypes) GetOneofBytes() []byte {
+	if x != nil {
+		if x, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofBytes); ok {
+			return x.OneofBytes
+		}
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOneofBool() bool {
+	if x != nil {
+		if x, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofBool); ok {
+			return x.OneofBool
+		}
+	}
+	return false
+}
+
+func (x *TestAllTypes) GetOneofUint64() uint64 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofUint64); ok {
+			return x.OneofUint64
+		}
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOneofFloat() float32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofFloat); ok {
+			return x.OneofFloat
+		}
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOneofDouble() float64 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofDouble); ok {
+			return x.OneofDouble
+		}
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOneofEnum() TestAllTypes_NestedEnum {
+	if x != nil {
+		if x, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofEnum); ok {
+			return x.OneofEnum
+		}
+	}
+	return TestAllTypes_FOO
+}
+
+func (x *TestAllTypes) SetSingularInt32(v int32) {
+	x.xxx_hidden_SingularInt32 = v
+}
+
+func (x *TestAllTypes) SetSingularInt64(v int64) {
+	x.xxx_hidden_SingularInt64 = v
+}
+
+func (x *TestAllTypes) SetSingularUint32(v uint32) {
+	x.xxx_hidden_SingularUint32 = v
+}
+
+func (x *TestAllTypes) SetSingularUint64(v uint64) {
+	x.xxx_hidden_SingularUint64 = v
+}
+
+func (x *TestAllTypes) SetSingularSint32(v int32) {
+	x.xxx_hidden_SingularSint32 = v
+}
+
+func (x *TestAllTypes) SetSingularSint64(v int64) {
+	x.xxx_hidden_SingularSint64 = v
+}
+
+func (x *TestAllTypes) SetSingularFixed32(v uint32) {
+	x.xxx_hidden_SingularFixed32 = v
+}
+
+func (x *TestAllTypes) SetSingularFixed64(v uint64) {
+	x.xxx_hidden_SingularFixed64 = v
+}
+
+func (x *TestAllTypes) SetSingularSfixed32(v int32) {
+	x.xxx_hidden_SingularSfixed32 = v
+}
+
+func (x *TestAllTypes) SetSingularSfixed64(v int64) {
+	x.xxx_hidden_SingularSfixed64 = v
+}
+
+func (x *TestAllTypes) SetSingularFloat(v float32) {
+	x.xxx_hidden_SingularFloat = v
+}
+
+func (x *TestAllTypes) SetSingularDouble(v float64) {
+	x.xxx_hidden_SingularDouble = v
+}
+
+func (x *TestAllTypes) SetSingularBool(v bool) {
+	x.xxx_hidden_SingularBool = v
+}
+
+func (x *TestAllTypes) SetSingularString(v string) {
+	x.xxx_hidden_SingularString = v
+}
+
+func (x *TestAllTypes) SetSingularBytes(v []byte) {
+	if v == nil {
+		v = []byte{}
+	}
+	x.xxx_hidden_SingularBytes = v
+}
+
+func (x *TestAllTypes) SetSingularNestedMessage(v *TestAllTypes_NestedMessage) {
+	x.xxx_hidden_SingularNestedMessage = v
+}
+
+func (x *TestAllTypes) SetSingularForeignMessage(v *ForeignMessage) {
+	x.xxx_hidden_SingularForeignMessage = v
+}
+
+func (x *TestAllTypes) SetSingularImportMessage(v *ImportMessage) {
+	x.xxx_hidden_SingularImportMessage = v
+}
+
+func (x *TestAllTypes) SetSingularNestedEnum(v TestAllTypes_NestedEnum) {
+	x.xxx_hidden_SingularNestedEnum = v
+}
+
+func (x *TestAllTypes) SetSingularForeignEnum(v ForeignEnum) {
+	x.xxx_hidden_SingularForeignEnum = v
+}
+
+func (x *TestAllTypes) SetSingularImportEnum(v ImportEnum) {
+	x.xxx_hidden_SingularImportEnum = v
+}
+
+func (x *TestAllTypes) SetOptionalInt32(v int32) {
+	x.xxx_hidden_OptionalInt32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 21, 81)
+}
+
+func (x *TestAllTypes) SetOptionalInt64(v int64) {
+	x.xxx_hidden_OptionalInt64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 22, 81)
+}
+
+func (x *TestAllTypes) SetOptionalUint32(v uint32) {
+	x.xxx_hidden_OptionalUint32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 23, 81)
+}
+
+func (x *TestAllTypes) SetOptionalUint64(v uint64) {
+	x.xxx_hidden_OptionalUint64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 24, 81)
+}
+
+func (x *TestAllTypes) SetOptionalSint32(v int32) {
+	x.xxx_hidden_OptionalSint32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 25, 81)
+}
+
+func (x *TestAllTypes) SetOptionalSint64(v int64) {
+	x.xxx_hidden_OptionalSint64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 26, 81)
+}
+
+func (x *TestAllTypes) SetOptionalFixed32(v uint32) {
+	x.xxx_hidden_OptionalFixed32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 27, 81)
+}
+
+func (x *TestAllTypes) SetOptionalFixed64(v uint64) {
+	x.xxx_hidden_OptionalFixed64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 28, 81)
+}
+
+func (x *TestAllTypes) SetOptionalSfixed32(v int32) {
+	x.xxx_hidden_OptionalSfixed32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 29, 81)
+}
+
+func (x *TestAllTypes) SetOptionalSfixed64(v int64) {
+	x.xxx_hidden_OptionalSfixed64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 30, 81)
+}
+
+func (x *TestAllTypes) SetOptionalFloat(v float32) {
+	x.xxx_hidden_OptionalFloat = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 31, 81)
+}
+
+func (x *TestAllTypes) SetOptionalDouble(v float64) {
+	x.xxx_hidden_OptionalDouble = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[1]), 32, 81)
+}
+
+func (x *TestAllTypes) SetOptionalBool(v bool) {
+	x.xxx_hidden_OptionalBool = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[1]), 33, 81)
+}
+
+func (x *TestAllTypes) SetOptionalString(v string) {
+	x.xxx_hidden_OptionalString = &v
+	protoimpl.X.SetPresent(&(x.XXX_presence[1]), 34, 81)
+}
+
+func (x *TestAllTypes) SetOptionalBytes(v []byte) {
+	if v == nil {
+		v = []byte{}
+	}
+	x.xxx_hidden_OptionalBytes = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[1]), 35, 81)
+}
+
+func (x *TestAllTypes) SetOptionalNestedMessage(v *TestAllTypes_NestedMessage) {
+	x.xxx_hidden_OptionalNestedMessage = v
+}
+
+func (x *TestAllTypes) SetOptionalForeignMessage(v *ForeignMessage) {
+	x.xxx_hidden_OptionalForeignMessage = v
+}
+
+func (x *TestAllTypes) SetOptionalImportMessage(v *ImportMessage) {
+	x.xxx_hidden_OptionalImportMessage = v
+}
+
+func (x *TestAllTypes) SetOptionalNestedEnum(v TestAllTypes_NestedEnum) {
+	x.xxx_hidden_OptionalNestedEnum = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[1]), 39, 81)
+}
+
+func (x *TestAllTypes) SetOptionalForeignEnum(v ForeignEnum) {
+	x.xxx_hidden_OptionalForeignEnum = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[1]), 40, 81)
+}
+
+func (x *TestAllTypes) SetOptionalImportEnum(v ImportEnum) {
+	x.xxx_hidden_OptionalImportEnum = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[1]), 41, 81)
+}
+
+func (x *TestAllTypes) SetRepeatedInt32(v []int32) {
+	x.xxx_hidden_RepeatedInt32 = v
+}
+
+func (x *TestAllTypes) SetRepeatedInt64(v []int64) {
+	x.xxx_hidden_RepeatedInt64 = v
+}
+
+func (x *TestAllTypes) SetRepeatedUint32(v []uint32) {
+	x.xxx_hidden_RepeatedUint32 = v
+}
+
+func (x *TestAllTypes) SetRepeatedUint64(v []uint64) {
+	x.xxx_hidden_RepeatedUint64 = v
+}
+
+func (x *TestAllTypes) SetRepeatedSint32(v []int32) {
+	x.xxx_hidden_RepeatedSint32 = v
+}
+
+func (x *TestAllTypes) SetRepeatedSint64(v []int64) {
+	x.xxx_hidden_RepeatedSint64 = v
+}
+
+func (x *TestAllTypes) SetRepeatedFixed32(v []uint32) {
+	x.xxx_hidden_RepeatedFixed32 = v
+}
+
+func (x *TestAllTypes) SetRepeatedFixed64(v []uint64) {
+	x.xxx_hidden_RepeatedFixed64 = v
+}
+
+func (x *TestAllTypes) SetRepeatedSfixed32(v []int32) {
+	x.xxx_hidden_RepeatedSfixed32 = v
+}
+
+func (x *TestAllTypes) SetRepeatedSfixed64(v []int64) {
+	x.xxx_hidden_RepeatedSfixed64 = v
+}
+
+func (x *TestAllTypes) SetRepeatedFloat(v []float32) {
+	x.xxx_hidden_RepeatedFloat = v
+}
+
+func (x *TestAllTypes) SetRepeatedDouble(v []float64) {
+	x.xxx_hidden_RepeatedDouble = v
+}
+
+func (x *TestAllTypes) SetRepeatedBool(v []bool) {
+	x.xxx_hidden_RepeatedBool = v
+}
+
+func (x *TestAllTypes) SetRepeatedString(v []string) {
+	x.xxx_hidden_RepeatedString = v
+}
+
+func (x *TestAllTypes) SetRepeatedBytes(v [][]byte) {
+	x.xxx_hidden_RepeatedBytes = v
+}
+
+func (x *TestAllTypes) SetRepeatedNestedMessage(v []*TestAllTypes_NestedMessage) {
+	x.xxx_hidden_RepeatedNestedMessage = &v
+}
+
+func (x *TestAllTypes) SetRepeatedForeignMessage(v []*ForeignMessage) {
+	x.xxx_hidden_RepeatedForeignMessage = &v
+}
+
+func (x *TestAllTypes) SetRepeatedImportmessage(v []*ImportMessage) {
+	x.xxx_hidden_RepeatedImportmessage = &v
+}
+
+func (x *TestAllTypes) SetRepeatedNestedEnum(v []TestAllTypes_NestedEnum) {
+	x.xxx_hidden_RepeatedNestedEnum = v
+}
+
+func (x *TestAllTypes) SetRepeatedForeignEnum(v []ForeignEnum) {
+	x.xxx_hidden_RepeatedForeignEnum = v
+}
+
+func (x *TestAllTypes) SetRepeatedImportenum(v []ImportEnum) {
+	x.xxx_hidden_RepeatedImportenum = v
+}
+
+func (x *TestAllTypes) SetMapInt32Int32(v map[int32]int32) {
+	x.xxx_hidden_MapInt32Int32 = v
+}
+
+func (x *TestAllTypes) SetMapInt64Int64(v map[int64]int64) {
+	x.xxx_hidden_MapInt64Int64 = v
+}
+
+func (x *TestAllTypes) SetMapUint32Uint32(v map[uint32]uint32) {
+	x.xxx_hidden_MapUint32Uint32 = v
+}
+
+func (x *TestAllTypes) SetMapUint64Uint64(v map[uint64]uint64) {
+	x.xxx_hidden_MapUint64Uint64 = v
+}
+
+func (x *TestAllTypes) SetMapSint32Sint32(v map[int32]int32) {
+	x.xxx_hidden_MapSint32Sint32 = v
+}
+
+func (x *TestAllTypes) SetMapSint64Sint64(v map[int64]int64) {
+	x.xxx_hidden_MapSint64Sint64 = v
+}
+
+func (x *TestAllTypes) SetMapFixed32Fixed32(v map[uint32]uint32) {
+	x.xxx_hidden_MapFixed32Fixed32 = v
+}
+
+func (x *TestAllTypes) SetMapFixed64Fixed64(v map[uint64]uint64) {
+	x.xxx_hidden_MapFixed64Fixed64 = v
+}
+
+func (x *TestAllTypes) SetMapSfixed32Sfixed32(v map[int32]int32) {
+	x.xxx_hidden_MapSfixed32Sfixed32 = v
+}
+
+func (x *TestAllTypes) SetMapSfixed64Sfixed64(v map[int64]int64) {
+	x.xxx_hidden_MapSfixed64Sfixed64 = v
+}
+
+func (x *TestAllTypes) SetMapInt32Float(v map[int32]float32) {
+	x.xxx_hidden_MapInt32Float = v
+}
+
+func (x *TestAllTypes) SetMapInt32Double(v map[int32]float64) {
+	x.xxx_hidden_MapInt32Double = v
+}
+
+func (x *TestAllTypes) SetMapBoolBool(v map[bool]bool) {
+	x.xxx_hidden_MapBoolBool = v
+}
+
+func (x *TestAllTypes) SetMapStringString(v map[string]string) {
+	x.xxx_hidden_MapStringString = v
+}
+
+func (x *TestAllTypes) SetMapStringBytes(v map[string][]byte) {
+	x.xxx_hidden_MapStringBytes = v
+}
+
+func (x *TestAllTypes) SetMapStringNestedMessage(v map[string]*TestAllTypes_NestedMessage) {
+	x.xxx_hidden_MapStringNestedMessage = v
+}
+
+func (x *TestAllTypes) SetMapStringNestedEnum(v map[string]TestAllTypes_NestedEnum) {
+	x.xxx_hidden_MapStringNestedEnum = v
+}
+
+func (x *TestAllTypes) SetOneofUint32(v uint32) {
+	x.xxx_hidden_OneofField = &testAllTypes_OneofUint32{v}
+}
+
+func (x *TestAllTypes) SetOneofNestedMessage(v *TestAllTypes_NestedMessage) {
+	if v == nil {
+		x.xxx_hidden_OneofField = nil
+		return
+	}
+	x.xxx_hidden_OneofField = &testAllTypes_OneofNestedMessage{v}
+}
+
+func (x *TestAllTypes) SetOneofString(v string) {
+	x.xxx_hidden_OneofField = &testAllTypes_OneofString{v}
+}
+
+func (x *TestAllTypes) SetOneofBytes(v []byte) {
+	if v == nil {
+		v = []byte{}
+	}
+	x.xxx_hidden_OneofField = &testAllTypes_OneofBytes{v}
+}
+
+func (x *TestAllTypes) SetOneofBool(v bool) {
+	x.xxx_hidden_OneofField = &testAllTypes_OneofBool{v}
+}
+
+func (x *TestAllTypes) SetOneofUint64(v uint64) {
+	x.xxx_hidden_OneofField = &testAllTypes_OneofUint64{v}
+}
+
+func (x *TestAllTypes) SetOneofFloat(v float32) {
+	x.xxx_hidden_OneofField = &testAllTypes_OneofFloat{v}
+}
+
+func (x *TestAllTypes) SetOneofDouble(v float64) {
+	x.xxx_hidden_OneofField = &testAllTypes_OneofDouble{v}
+}
+
+func (x *TestAllTypes) SetOneofEnum(v TestAllTypes_NestedEnum) {
+	x.xxx_hidden_OneofField = &testAllTypes_OneofEnum{v}
+}
+
+func (x *TestAllTypes) HasSingularNestedMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_SingularNestedMessage != nil
+}
+
+func (x *TestAllTypes) HasSingularForeignMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_SingularForeignMessage != nil
+}
+
+func (x *TestAllTypes) HasSingularImportMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_SingularImportMessage != nil
+}
+
+func (x *TestAllTypes) HasOptionalInt32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 21)
+}
+
+func (x *TestAllTypes) HasOptionalInt64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 22)
+}
+
+func (x *TestAllTypes) HasOptionalUint32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 23)
+}
+
+func (x *TestAllTypes) HasOptionalUint64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 24)
+}
+
+func (x *TestAllTypes) HasOptionalSint32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 25)
+}
+
+func (x *TestAllTypes) HasOptionalSint64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 26)
+}
+
+func (x *TestAllTypes) HasOptionalFixed32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 27)
+}
+
+func (x *TestAllTypes) HasOptionalFixed64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 28)
+}
+
+func (x *TestAllTypes) HasOptionalSfixed32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 29)
+}
+
+func (x *TestAllTypes) HasOptionalSfixed64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 30)
+}
+
+func (x *TestAllTypes) HasOptionalFloat() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 31)
+}
+
+func (x *TestAllTypes) HasOptionalDouble() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[1]), 32)
+}
+
+func (x *TestAllTypes) HasOptionalBool() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[1]), 33)
+}
+
+func (x *TestAllTypes) HasOptionalString() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[1]), 34)
+}
+
+func (x *TestAllTypes) HasOptionalBytes() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[1]), 35)
+}
+
+func (x *TestAllTypes) HasOptionalNestedMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptionalNestedMessage != nil
+}
+
+func (x *TestAllTypes) HasOptionalForeignMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptionalForeignMessage != nil
+}
+
+func (x *TestAllTypes) HasOptionalImportMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptionalImportMessage != nil
+}
+
+func (x *TestAllTypes) HasOptionalNestedEnum() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[1]), 39)
+}
+
+func (x *TestAllTypes) HasOptionalForeignEnum() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[1]), 40)
+}
+
+func (x *TestAllTypes) HasOptionalImportEnum() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[1]), 41)
+}
+
+func (x *TestAllTypes) HasOneofField() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OneofField != nil
+}
+
+func (x *TestAllTypes) HasOneofUint32() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofUint32)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofNestedMessage() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofNestedMessage)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofString() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofString)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofBytes() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofBytes)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofBool() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofBool)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofUint64() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofUint64)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofFloat() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofFloat)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofDouble() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofDouble)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofEnum() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofEnum)
+	return ok
+}
+
+func (x *TestAllTypes) ClearSingularNestedMessage() {
+	x.xxx_hidden_SingularNestedMessage = nil
+}
+
+func (x *TestAllTypes) ClearSingularForeignMessage() {
+	x.xxx_hidden_SingularForeignMessage = nil
+}
+
+func (x *TestAllTypes) ClearSingularImportMessage() {
+	x.xxx_hidden_SingularImportMessage = nil
+}
+
+func (x *TestAllTypes) ClearOptionalInt32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 21)
+	x.xxx_hidden_OptionalInt32 = 0
+}
+
+func (x *TestAllTypes) ClearOptionalInt64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 22)
+	x.xxx_hidden_OptionalInt64 = 0
+}
+
+func (x *TestAllTypes) ClearOptionalUint32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 23)
+	x.xxx_hidden_OptionalUint32 = 0
+}
+
+func (x *TestAllTypes) ClearOptionalUint64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 24)
+	x.xxx_hidden_OptionalUint64 = 0
+}
+
+func (x *TestAllTypes) ClearOptionalSint32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 25)
+	x.xxx_hidden_OptionalSint32 = 0
+}
+
+func (x *TestAllTypes) ClearOptionalSint64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 26)
+	x.xxx_hidden_OptionalSint64 = 0
+}
+
+func (x *TestAllTypes) ClearOptionalFixed32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 27)
+	x.xxx_hidden_OptionalFixed32 = 0
+}
+
+func (x *TestAllTypes) ClearOptionalFixed64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 28)
+	x.xxx_hidden_OptionalFixed64 = 0
+}
+
+func (x *TestAllTypes) ClearOptionalSfixed32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 29)
+	x.xxx_hidden_OptionalSfixed32 = 0
+}
+
+func (x *TestAllTypes) ClearOptionalSfixed64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 30)
+	x.xxx_hidden_OptionalSfixed64 = 0
+}
+
+func (x *TestAllTypes) ClearOptionalFloat() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 31)
+	x.xxx_hidden_OptionalFloat = 0
+}
+
+func (x *TestAllTypes) ClearOptionalDouble() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[1]), 32)
+	x.xxx_hidden_OptionalDouble = 0
+}
+
+func (x *TestAllTypes) ClearOptionalBool() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[1]), 33)
+	x.xxx_hidden_OptionalBool = false
+}
+
+func (x *TestAllTypes) ClearOptionalString() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[1]), 34)
+	x.xxx_hidden_OptionalString = nil
+}
+
+func (x *TestAllTypes) ClearOptionalBytes() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[1]), 35)
+	x.xxx_hidden_OptionalBytes = nil
+}
+
+func (x *TestAllTypes) ClearOptionalNestedMessage() {
+	x.xxx_hidden_OptionalNestedMessage = nil
+}
+
+func (x *TestAllTypes) ClearOptionalForeignMessage() {
+	x.xxx_hidden_OptionalForeignMessage = nil
+}
+
+func (x *TestAllTypes) ClearOptionalImportMessage() {
+	x.xxx_hidden_OptionalImportMessage = nil
+}
+
+func (x *TestAllTypes) ClearOptionalNestedEnum() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[1]), 39)
+	x.xxx_hidden_OptionalNestedEnum = TestAllTypes_FOO
+}
+
+func (x *TestAllTypes) ClearOptionalForeignEnum() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[1]), 40)
+	x.xxx_hidden_OptionalForeignEnum = ForeignEnum_FOREIGN_ZERO
+}
+
+func (x *TestAllTypes) ClearOptionalImportEnum() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[1]), 41)
+	x.xxx_hidden_OptionalImportEnum = ImportEnum_IMPORT_ZERO
+}
+
+func (x *TestAllTypes) ClearOneofField() {
+	x.xxx_hidden_OneofField = nil
+}
+
+func (x *TestAllTypes) ClearOneofUint32() {
+	if _, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofUint32); ok {
+		x.xxx_hidden_OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofNestedMessage() {
+	if _, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofNestedMessage); ok {
+		x.xxx_hidden_OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofString() {
+	if _, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofString); ok {
+		x.xxx_hidden_OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofBytes() {
+	if _, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofBytes); ok {
+		x.xxx_hidden_OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofBool() {
+	if _, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofBool); ok {
+		x.xxx_hidden_OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofUint64() {
+	if _, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofUint64); ok {
+		x.xxx_hidden_OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofFloat() {
+	if _, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofFloat); ok {
+		x.xxx_hidden_OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofDouble() {
+	if _, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofDouble); ok {
+		x.xxx_hidden_OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofEnum() {
+	if _, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofEnum); ok {
+		x.xxx_hidden_OneofField = nil
+	}
+}
+
+const TestAllTypes_OneofField_not_set_case case_TestAllTypes_OneofField = 0
+const TestAllTypes_OneofUint32_case case_TestAllTypes_OneofField = 111
+const TestAllTypes_OneofNestedMessage_case case_TestAllTypes_OneofField = 112
+const TestAllTypes_OneofString_case case_TestAllTypes_OneofField = 113
+const TestAllTypes_OneofBytes_case case_TestAllTypes_OneofField = 114
+const TestAllTypes_OneofBool_case case_TestAllTypes_OneofField = 115
+const TestAllTypes_OneofUint64_case case_TestAllTypes_OneofField = 116
+const TestAllTypes_OneofFloat_case case_TestAllTypes_OneofField = 117
+const TestAllTypes_OneofDouble_case case_TestAllTypes_OneofField = 118
+const TestAllTypes_OneofEnum_case case_TestAllTypes_OneofField = 119
+
+func (x *TestAllTypes) WhichOneofField() case_TestAllTypes_OneofField {
+	if x == nil {
+		return TestAllTypes_OneofField_not_set_case
+	}
+	switch x.xxx_hidden_OneofField.(type) {
+	case *testAllTypes_OneofUint32:
+		return TestAllTypes_OneofUint32_case
+	case *testAllTypes_OneofNestedMessage:
+		return TestAllTypes_OneofNestedMessage_case
+	case *testAllTypes_OneofString:
+		return TestAllTypes_OneofString_case
+	case *testAllTypes_OneofBytes:
+		return TestAllTypes_OneofBytes_case
+	case *testAllTypes_OneofBool:
+		return TestAllTypes_OneofBool_case
+	case *testAllTypes_OneofUint64:
+		return TestAllTypes_OneofUint64_case
+	case *testAllTypes_OneofFloat:
+		return TestAllTypes_OneofFloat_case
+	case *testAllTypes_OneofDouble:
+		return TestAllTypes_OneofDouble_case
+	case *testAllTypes_OneofEnum:
+		return TestAllTypes_OneofEnum_case
+	default:
+		return TestAllTypes_OneofField_not_set_case
+	}
+}
+
+type TestAllTypes_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	SingularInt32          int32
+	SingularInt64          int64
+	SingularUint32         uint32
+	SingularUint64         uint64
+	SingularSint32         int32
+	SingularSint64         int64
+	SingularFixed32        uint32
+	SingularFixed64        uint64
+	SingularSfixed32       int32
+	SingularSfixed64       int64
+	SingularFloat          float32
+	SingularDouble         float64
+	SingularBool           bool
+	SingularString         string
+	SingularBytes          []byte
+	SingularNestedMessage  *TestAllTypes_NestedMessage
+	SingularForeignMessage *ForeignMessage
+	SingularImportMessage  *ImportMessage
+	SingularNestedEnum     TestAllTypes_NestedEnum
+	SingularForeignEnum    ForeignEnum
+	SingularImportEnum     ImportEnum
+	OptionalInt32          *int32
+	OptionalInt64          *int64
+	OptionalUint32         *uint32
+	OptionalUint64         *uint64
+	OptionalSint32         *int32
+	OptionalSint64         *int64
+	OptionalFixed32        *uint32
+	OptionalFixed64        *uint64
+	OptionalSfixed32       *int32
+	OptionalSfixed64       *int64
+	OptionalFloat          *float32
+	OptionalDouble         *float64
+	OptionalBool           *bool
+	OptionalString         *string
+	OptionalBytes          []byte
+	OptionalNestedMessage  *TestAllTypes_NestedMessage
+	OptionalForeignMessage *ForeignMessage
+	OptionalImportMessage  *ImportMessage
+	OptionalNestedEnum     *TestAllTypes_NestedEnum
+	OptionalForeignEnum    *ForeignEnum
+	OptionalImportEnum     *ImportEnum
+	RepeatedInt32          []int32
+	RepeatedInt64          []int64
+	RepeatedUint32         []uint32
+	RepeatedUint64         []uint64
+	RepeatedSint32         []int32
+	RepeatedSint64         []int64
+	RepeatedFixed32        []uint32
+	RepeatedFixed64        []uint64
+	RepeatedSfixed32       []int32
+	RepeatedSfixed64       []int64
+	RepeatedFloat          []float32
+	RepeatedDouble         []float64
+	RepeatedBool           []bool
+	RepeatedString         []string
+	RepeatedBytes          [][]byte
+	RepeatedNestedMessage  []*TestAllTypes_NestedMessage
+	RepeatedForeignMessage []*ForeignMessage
+	RepeatedImportmessage  []*ImportMessage
+	RepeatedNestedEnum     []TestAllTypes_NestedEnum
+	RepeatedForeignEnum    []ForeignEnum
+	RepeatedImportenum     []ImportEnum
+	MapInt32Int32          map[int32]int32
+	MapInt64Int64          map[int64]int64
+	MapUint32Uint32        map[uint32]uint32
+	MapUint64Uint64        map[uint64]uint64
+	MapSint32Sint32        map[int32]int32
+	MapSint64Sint64        map[int64]int64
+	MapFixed32Fixed32      map[uint32]uint32
+	MapFixed64Fixed64      map[uint64]uint64
+	MapSfixed32Sfixed32    map[int32]int32
+	MapSfixed64Sfixed64    map[int64]int64
+	MapInt32Float          map[int32]float32
+	MapInt32Double         map[int32]float64
+	MapBoolBool            map[bool]bool
+	MapStringString        map[string]string
+	MapStringBytes         map[string][]byte
+	MapStringNestedMessage map[string]*TestAllTypes_NestedMessage
+	MapStringNestedEnum    map[string]TestAllTypes_NestedEnum
+	// Fields of oneof xxx_hidden_OneofField:
+	OneofUint32        *uint32
+	OneofNestedMessage *TestAllTypes_NestedMessage
+	OneofString        *string
+	OneofBytes         []byte
+	OneofBool          *bool
+	OneofUint64        *uint64
+	OneofFloat         *float32
+	OneofDouble        *float64
+	OneofEnum          *TestAllTypes_NestedEnum
+	// -- end of xxx_hidden_OneofField
+}
+
+func (b0 TestAllTypes_builder) Build() *TestAllTypes {
+	m0 := &TestAllTypes{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_SingularInt32 = b.SingularInt32
+	x.xxx_hidden_SingularInt64 = b.SingularInt64
+	x.xxx_hidden_SingularUint32 = b.SingularUint32
+	x.xxx_hidden_SingularUint64 = b.SingularUint64
+	x.xxx_hidden_SingularSint32 = b.SingularSint32
+	x.xxx_hidden_SingularSint64 = b.SingularSint64
+	x.xxx_hidden_SingularFixed32 = b.SingularFixed32
+	x.xxx_hidden_SingularFixed64 = b.SingularFixed64
+	x.xxx_hidden_SingularSfixed32 = b.SingularSfixed32
+	x.xxx_hidden_SingularSfixed64 = b.SingularSfixed64
+	x.xxx_hidden_SingularFloat = b.SingularFloat
+	x.xxx_hidden_SingularDouble = b.SingularDouble
+	x.xxx_hidden_SingularBool = b.SingularBool
+	x.xxx_hidden_SingularString = b.SingularString
+	x.xxx_hidden_SingularBytes = b.SingularBytes
+	x.xxx_hidden_SingularNestedMessage = b.SingularNestedMessage
+	x.xxx_hidden_SingularForeignMessage = b.SingularForeignMessage
+	x.xxx_hidden_SingularImportMessage = b.SingularImportMessage
+	x.xxx_hidden_SingularNestedEnum = b.SingularNestedEnum
+	x.xxx_hidden_SingularForeignEnum = b.SingularForeignEnum
+	x.xxx_hidden_SingularImportEnum = b.SingularImportEnum
+	if b.OptionalInt32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 21, 81)
+		x.xxx_hidden_OptionalInt32 = *b.OptionalInt32
+	}
+	if b.OptionalInt64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 22, 81)
+		x.xxx_hidden_OptionalInt64 = *b.OptionalInt64
+	}
+	if b.OptionalUint32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 23, 81)
+		x.xxx_hidden_OptionalUint32 = *b.OptionalUint32
+	}
+	if b.OptionalUint64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 24, 81)
+		x.xxx_hidden_OptionalUint64 = *b.OptionalUint64
+	}
+	if b.OptionalSint32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 25, 81)
+		x.xxx_hidden_OptionalSint32 = *b.OptionalSint32
+	}
+	if b.OptionalSint64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 26, 81)
+		x.xxx_hidden_OptionalSint64 = *b.OptionalSint64
+	}
+	if b.OptionalFixed32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 27, 81)
+		x.xxx_hidden_OptionalFixed32 = *b.OptionalFixed32
+	}
+	if b.OptionalFixed64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 28, 81)
+		x.xxx_hidden_OptionalFixed64 = *b.OptionalFixed64
+	}
+	if b.OptionalSfixed32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 29, 81)
+		x.xxx_hidden_OptionalSfixed32 = *b.OptionalSfixed32
+	}
+	if b.OptionalSfixed64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 30, 81)
+		x.xxx_hidden_OptionalSfixed64 = *b.OptionalSfixed64
+	}
+	if b.OptionalFloat != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 31, 81)
+		x.xxx_hidden_OptionalFloat = *b.OptionalFloat
+	}
+	if b.OptionalDouble != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[1]), 32, 81)
+		x.xxx_hidden_OptionalDouble = *b.OptionalDouble
+	}
+	if b.OptionalBool != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[1]), 33, 81)
+		x.xxx_hidden_OptionalBool = *b.OptionalBool
+	}
+	if b.OptionalString != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[1]), 34, 81)
+		x.xxx_hidden_OptionalString = b.OptionalString
+	}
+	if b.OptionalBytes != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[1]), 35, 81)
+		x.xxx_hidden_OptionalBytes = b.OptionalBytes
+	}
+	x.xxx_hidden_OptionalNestedMessage = b.OptionalNestedMessage
+	x.xxx_hidden_OptionalForeignMessage = b.OptionalForeignMessage
+	x.xxx_hidden_OptionalImportMessage = b.OptionalImportMessage
+	if b.OptionalNestedEnum != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[1]), 39, 81)
+		x.xxx_hidden_OptionalNestedEnum = *b.OptionalNestedEnum
+	}
+	if b.OptionalForeignEnum != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[1]), 40, 81)
+		x.xxx_hidden_OptionalForeignEnum = *b.OptionalForeignEnum
+	}
+	if b.OptionalImportEnum != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[1]), 41, 81)
+		x.xxx_hidden_OptionalImportEnum = *b.OptionalImportEnum
+	}
+	x.xxx_hidden_RepeatedInt32 = b.RepeatedInt32
+	x.xxx_hidden_RepeatedInt64 = b.RepeatedInt64
+	x.xxx_hidden_RepeatedUint32 = b.RepeatedUint32
+	x.xxx_hidden_RepeatedUint64 = b.RepeatedUint64
+	x.xxx_hidden_RepeatedSint32 = b.RepeatedSint32
+	x.xxx_hidden_RepeatedSint64 = b.RepeatedSint64
+	x.xxx_hidden_RepeatedFixed32 = b.RepeatedFixed32
+	x.xxx_hidden_RepeatedFixed64 = b.RepeatedFixed64
+	x.xxx_hidden_RepeatedSfixed32 = b.RepeatedSfixed32
+	x.xxx_hidden_RepeatedSfixed64 = b.RepeatedSfixed64
+	x.xxx_hidden_RepeatedFloat = b.RepeatedFloat
+	x.xxx_hidden_RepeatedDouble = b.RepeatedDouble
+	x.xxx_hidden_RepeatedBool = b.RepeatedBool
+	x.xxx_hidden_RepeatedString = b.RepeatedString
+	x.xxx_hidden_RepeatedBytes = b.RepeatedBytes
+	x.xxx_hidden_RepeatedNestedMessage = &b.RepeatedNestedMessage
+	x.xxx_hidden_RepeatedForeignMessage = &b.RepeatedForeignMessage
+	x.xxx_hidden_RepeatedImportmessage = &b.RepeatedImportmessage
+	x.xxx_hidden_RepeatedNestedEnum = b.RepeatedNestedEnum
+	x.xxx_hidden_RepeatedForeignEnum = b.RepeatedForeignEnum
+	x.xxx_hidden_RepeatedImportenum = b.RepeatedImportenum
+	x.xxx_hidden_MapInt32Int32 = b.MapInt32Int32
+	x.xxx_hidden_MapInt64Int64 = b.MapInt64Int64
+	x.xxx_hidden_MapUint32Uint32 = b.MapUint32Uint32
+	x.xxx_hidden_MapUint64Uint64 = b.MapUint64Uint64
+	x.xxx_hidden_MapSint32Sint32 = b.MapSint32Sint32
+	x.xxx_hidden_MapSint64Sint64 = b.MapSint64Sint64
+	x.xxx_hidden_MapFixed32Fixed32 = b.MapFixed32Fixed32
+	x.xxx_hidden_MapFixed64Fixed64 = b.MapFixed64Fixed64
+	x.xxx_hidden_MapSfixed32Sfixed32 = b.MapSfixed32Sfixed32
+	x.xxx_hidden_MapSfixed64Sfixed64 = b.MapSfixed64Sfixed64
+	x.xxx_hidden_MapInt32Float = b.MapInt32Float
+	x.xxx_hidden_MapInt32Double = b.MapInt32Double
+	x.xxx_hidden_MapBoolBool = b.MapBoolBool
+	x.xxx_hidden_MapStringString = b.MapStringString
+	x.xxx_hidden_MapStringBytes = b.MapStringBytes
+	x.xxx_hidden_MapStringNestedMessage = b.MapStringNestedMessage
+	x.xxx_hidden_MapStringNestedEnum = b.MapStringNestedEnum
+	if b.OneofUint32 != nil {
+		x.xxx_hidden_OneofField = &testAllTypes_OneofUint32{*b.OneofUint32}
+	}
+	if b.OneofNestedMessage != nil {
+		x.xxx_hidden_OneofField = &testAllTypes_OneofNestedMessage{b.OneofNestedMessage}
+	}
+	if b.OneofString != nil {
+		x.xxx_hidden_OneofField = &testAllTypes_OneofString{*b.OneofString}
+	}
+	if b.OneofBytes != nil {
+		x.xxx_hidden_OneofField = &testAllTypes_OneofBytes{b.OneofBytes}
+	}
+	if b.OneofBool != nil {
+		x.xxx_hidden_OneofField = &testAllTypes_OneofBool{*b.OneofBool}
+	}
+	if b.OneofUint64 != nil {
+		x.xxx_hidden_OneofField = &testAllTypes_OneofUint64{*b.OneofUint64}
+	}
+	if b.OneofFloat != nil {
+		x.xxx_hidden_OneofField = &testAllTypes_OneofFloat{*b.OneofFloat}
+	}
+	if b.OneofDouble != nil {
+		x.xxx_hidden_OneofField = &testAllTypes_OneofDouble{*b.OneofDouble}
+	}
+	if b.OneofEnum != nil {
+		x.xxx_hidden_OneofField = &testAllTypes_OneofEnum{*b.OneofEnum}
+	}
+	return m0
+}
+
+type case_TestAllTypes_OneofField protoreflect.FieldNumber
+
+func (x case_TestAllTypes_OneofField) String() string {
+	md := file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_msgTypes[0].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isTestAllTypes_OneofField interface {
+	isTestAllTypes_OneofField()
+}
+
+type testAllTypes_OneofUint32 struct {
+	OneofUint32 uint32 `protobuf:"varint,111,opt,name=oneof_uint32,json=oneofUint32,proto3,oneof"`
+}
+
+type testAllTypes_OneofNestedMessage struct {
+	OneofNestedMessage *TestAllTypes_NestedMessage `protobuf:"bytes,112,opt,name=oneof_nested_message,json=oneofNestedMessage,proto3,oneof"`
+}
+
+type testAllTypes_OneofString struct {
+	OneofString string `protobuf:"bytes,113,opt,name=oneof_string,json=oneofString,proto3,oneof"`
+}
+
+type testAllTypes_OneofBytes struct {
+	OneofBytes []byte `protobuf:"bytes,114,opt,name=oneof_bytes,json=oneofBytes,proto3,oneof"`
+}
+
+type testAllTypes_OneofBool struct {
+	OneofBool bool `protobuf:"varint,115,opt,name=oneof_bool,json=oneofBool,proto3,oneof"`
+}
+
+type testAllTypes_OneofUint64 struct {
+	OneofUint64 uint64 `protobuf:"varint,116,opt,name=oneof_uint64,json=oneofUint64,proto3,oneof"`
+}
+
+type testAllTypes_OneofFloat struct {
+	OneofFloat float32 `protobuf:"fixed32,117,opt,name=oneof_float,json=oneofFloat,proto3,oneof"`
+}
+
+type testAllTypes_OneofDouble struct {
+	OneofDouble float64 `protobuf:"fixed64,118,opt,name=oneof_double,json=oneofDouble,proto3,oneof"`
+}
+
+type testAllTypes_OneofEnum struct {
+	OneofEnum TestAllTypes_NestedEnum `protobuf:"varint,119,opt,name=oneof_enum,json=oneofEnum,proto3,enum=hybrid.goproto.proto.test3.TestAllTypes_NestedEnum,oneof"`
+}
+
+func (*testAllTypes_OneofUint32) isTestAllTypes_OneofField() {}
+
+func (*testAllTypes_OneofNestedMessage) isTestAllTypes_OneofField() {}
+
+func (*testAllTypes_OneofString) isTestAllTypes_OneofField() {}
+
+func (*testAllTypes_OneofBytes) isTestAllTypes_OneofField() {}
+
+func (*testAllTypes_OneofBool) isTestAllTypes_OneofField() {}
+
+func (*testAllTypes_OneofUint64) isTestAllTypes_OneofField() {}
+
+func (*testAllTypes_OneofFloat) isTestAllTypes_OneofField() {}
+
+func (*testAllTypes_OneofDouble) isTestAllTypes_OneofField() {}
+
+func (*testAllTypes_OneofEnum) isTestAllTypes_OneofField() {}
+
+type ForeignMessage struct {
+	state         protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_C  int32                  `protobuf:"varint,1,opt,name=c,proto3" json:"c,omitempty"`
+	xxx_hidden_D  int32                  `protobuf:"varint,2,opt,name=d,proto3" json:"d,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *ForeignMessage) Reset() {
+	*x = ForeignMessage{}
+	mi := &file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ForeignMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ForeignMessage) ProtoMessage() {}
+
+func (x *ForeignMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *ForeignMessage) GetC() int32 {
+	if x != nil {
+		return x.xxx_hidden_C
+	}
+	return 0
+}
+
+func (x *ForeignMessage) GetD() int32 {
+	if x != nil {
+		return x.xxx_hidden_D
+	}
+	return 0
+}
+
+func (x *ForeignMessage) SetC(v int32) {
+	x.xxx_hidden_C = v
+}
+
+func (x *ForeignMessage) SetD(v int32) {
+	x.xxx_hidden_D = v
+}
+
+type ForeignMessage_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	C int32
+	D int32
+}
+
+func (b0 ForeignMessage_builder) Build() *ForeignMessage {
+	m0 := &ForeignMessage{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_C = b.C
+	x.xxx_hidden_D = b.D
+	return m0
+}
+
+type TestAllTypes_NestedMessage struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_A           int32                  `protobuf:"varint,1,opt,name=a,proto3" json:"a,omitempty"`
+	xxx_hidden_Corecursive *TestAllTypes          `protobuf:"bytes,2,opt,name=corecursive,proto3" json:"corecursive,omitempty"`
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *TestAllTypes_NestedMessage) Reset() {
+	*x = TestAllTypes_NestedMessage{}
+	mi := &file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestAllTypes_NestedMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestAllTypes_NestedMessage) ProtoMessage() {}
+
+func (x *TestAllTypes_NestedMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestAllTypes_NestedMessage) GetA() int32 {
+	if x != nil {
+		return x.xxx_hidden_A
+	}
+	return 0
+}
+
+func (x *TestAllTypes_NestedMessage) GetCorecursive() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_Corecursive
+	}
+	return nil
+}
+
+func (x *TestAllTypes_NestedMessage) SetA(v int32) {
+	x.xxx_hidden_A = v
+}
+
+func (x *TestAllTypes_NestedMessage) SetCorecursive(v *TestAllTypes) {
+	x.xxx_hidden_Corecursive = v
+}
+
+func (x *TestAllTypes_NestedMessage) HasCorecursive() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Corecursive != nil
+}
+
+func (x *TestAllTypes_NestedMessage) ClearCorecursive() {
+	x.xxx_hidden_Corecursive = nil
+}
+
+type TestAllTypes_NestedMessage_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	A           int32
+	Corecursive *TestAllTypes
+}
+
+func (b0 TestAllTypes_NestedMessage_builder) Build() *TestAllTypes_NestedMessage {
+	m0 := &TestAllTypes_NestedMessage{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_A = b.A
+	x.xxx_hidden_Corecursive = b.Corecursive
+	return m0
+}
+
+var File_internal_testprotos_test3_test3_hybrid_test_hybrid_proto protoreflect.FileDescriptor
+
+var file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_rawDesc = []byte{
+	0x0a, 0x38, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2f, 0x74, 0x65, 0x73, 0x74,
+	0x33, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x68, 0x79,
+	0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x1a, 0x3f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c,
+	0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74,
+	0x33, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x33, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2f, 0x74,
+	0x65, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa9, 0x3e, 0x0a, 0x0c, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x69, 0x6e, 0x67,
+	0x75, 0x6c, 0x61, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x51, 0x20, 0x01, 0x28, 0x05,
+	0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12,
+	0x25, 0x0a, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x36,
+	0x34, 0x18, 0x52, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61,
+	0x72, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
+	0x61, 0x72, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x53, 0x20, 0x01, 0x28, 0x0d, 0x52,
+	0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12,
+	0x27, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x75, 0x69, 0x6e, 0x74,
+	0x36, 0x34, 0x18, 0x54, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
+	0x61, 0x72, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67,
+	0x75, 0x6c, 0x61, 0x72, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x55, 0x20, 0x01, 0x28,
+	0x11, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x53, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x73, 0x69,
+	0x6e, 0x74, 0x36, 0x34, 0x18, 0x56, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67,
+	0x75, 0x6c, 0x61, 0x72, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x69,
+	0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x57,
+	0x20, 0x01, 0x28, 0x07, 0x52, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x46, 0x69,
+	0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61,
+	0x72, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x58, 0x20, 0x01, 0x28, 0x06, 0x52,
+	0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
+	0x12, 0x2b, 0x0a, 0x11, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x73, 0x66, 0x69,
+	0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x59, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x10, 0x73, 0x69, 0x6e,
+	0x67, 0x75, 0x6c, 0x61, 0x72, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2b, 0x0a,
+	0x11, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x36, 0x34, 0x18, 0x5a, 0x20, 0x01, 0x28, 0x10, 0x52, 0x10, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
+	0x61, 0x72, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x69,
+	0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x5b, 0x20, 0x01,
+	0x28, 0x02, 0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x46, 0x6c, 0x6f, 0x61,
+	0x74, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x64, 0x6f,
+	0x75, 0x62, 0x6c, 0x65, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67,
+	0x75, 0x6c, 0x61, 0x72, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x69,
+	0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x5d, 0x20, 0x01, 0x28,
+	0x08, 0x52, 0x0c, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x42, 0x6f, 0x6f, 0x6c, 0x12,
+	0x27, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x73, 0x74, 0x72, 0x69,
+	0x6e, 0x67, 0x18, 0x5e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
+	0x61, 0x72, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x69, 0x6e, 0x67,
+	0x75, 0x6c, 0x61, 0x72, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x5f, 0x20, 0x01, 0x28, 0x0c,
+	0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12,
+	0x6e, 0x0a, 0x17, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x6e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x62, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x36, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
+	0x61, 0x72, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12,
+	0x64, 0x0a, 0x18, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x66, 0x6f, 0x72, 0x65,
+	0x69, 0x67, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x63, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x2a, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x46,
+	0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x16, 0x73,
+	0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x61, 0x0a, 0x17, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61,
+	0x72, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x33, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x52, 0x15, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x49, 0x6d, 0x70, 0x6f, 0x72,
+	0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x65, 0x0a, 0x14, 0x73, 0x69, 0x6e, 0x67,
+	0x75, 0x6c, 0x61, 0x72, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d,
+	0x18, 0x65, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12, 0x73, 0x69, 0x6e,
+	0x67, 0x75, 0x6c, 0x61, 0x72, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12,
+	0x5b, 0x0a, 0x15, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x66, 0x6f, 0x72, 0x65,
+	0x69, 0x67, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27,
+	0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x46, 0x6f, 0x72, 0x65,
+	0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x13, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61,
+	0x72, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x58, 0x0a, 0x14,
+	0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f,
+	0x65, 0x6e, 0x75, 0x6d, 0x18, 0x67, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e,
+	0x75, 0x6d, 0x52, 0x12, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x49, 0x6d, 0x70, 0x6f,
+	0x72, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x2a, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01,
+	0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x88,
+	0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69,
+	0x6e, 0x74, 0x36, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x0d, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x2c,
+	0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x03, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
+	0x6c, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x05, 0x20,
+	0x01, 0x28, 0x11, 0x48, 0x05, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53,
+	0x69, 0x6e, 0x74, 0x33, 0x32, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x06, 0x20, 0x01, 0x28,
+	0x12, 0x48, 0x06, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x07,
+	0x48, 0x07, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, 0x78, 0x65,
+	0x64, 0x33, 0x32, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x08, 0x20, 0x01, 0x28, 0x06,
+	0x48, 0x08, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, 0x78, 0x65,
+	0x64, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28,
+	0x0f, 0x48, 0x09, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x66, 0x69,
+	0x78, 0x65, 0x64, 0x33, 0x32, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x0a, 0x20,
+	0x01, 0x28, 0x10, 0x48, 0x0a, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01,
+	0x28, 0x02, 0x48, 0x0b, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x6c,
+	0x6f, 0x61, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x48,
+	0x0c, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x75, 0x62, 0x6c,
+	0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+	0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x48, 0x0d, 0x52, 0x0c, 0x6f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2c,
+	0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e,
+	0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x48, 0x0e, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0f,
+	0x20, 0x01, 0x28, 0x0c, 0x48, 0x0f, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+	0x42, 0x79, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x73, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
+	0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x48, 0x10, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a,
+	0x18, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67,
+	0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x2a, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x46, 0x6f, 0x72,
+	0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x11, 0x52, 0x16, 0x6f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x66, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x48, 0x12, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+	0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01,
+	0x12, 0x6a, 0x0a, 0x14, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33,
+	0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45,
+	0x6e, 0x75, 0x6d, 0x48, 0x13, 0x52, 0x12, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x15,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e,
+	0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x68, 0x79,
+	0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e,
+	0x45, 0x6e, 0x75, 0x6d, 0x48, 0x14, 0x52, 0x13, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+	0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x5d,
+	0x0a, 0x14, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72,
+	0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x68,
+	0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74,
+	0x45, 0x6e, 0x75, 0x6d, 0x48, 0x15, 0x52, 0x12, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+	0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a,
+	0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18,
+	0x1f, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49,
+	0x6e, 0x74, 0x33, 0x32, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x20, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0d, 0x72, 0x65,
+	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x21,
+	0x20, 0x03, 0x28, 0x0d, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x55, 0x69,
+	0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x22, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0e, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a,
+	0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x18, 0x23, 0x20, 0x03, 0x28, 0x11, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
+	0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x24, 0x20, 0x03, 0x28, 0x12, 0x52,
+	0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
+	0x29, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65,
+	0x64, 0x33, 0x32, 0x18, 0x25, 0x20, 0x03, 0x28, 0x07, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65,
+	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x26,
+	0x20, 0x03, 0x28, 0x06, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69,
+	0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x27, 0x20, 0x03, 0x28, 0x0f,
+	0x52, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x33, 0x32, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x28, 0x20, 0x03, 0x28, 0x10, 0x52, 0x10, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12,
+	0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61,
+	0x74, 0x18, 0x29, 0x20, 0x03, 0x28, 0x02, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
+	0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x2a, 0x20, 0x03, 0x28, 0x01, 0x52,
+	0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12,
+	0x23, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x6f, 0x6f, 0x6c,
+	0x18, 0x2b, 0x20, 0x03, 0x28, 0x08, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x2c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a,
+	0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18,
+	0x2d, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42,
+	0x79, 0x74, 0x65, 0x73, 0x12, 0x6e, 0x0a, 0x17, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18,
+	0x30, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x12, 0x64, 0x0a, 0x18, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x18, 0x31, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x33, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x52, 0x16, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x65,
+	0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x60, 0x0a, 0x16, 0x72, 0x65,
+	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x6d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x18, 0x32, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49,
+	0x6d, 0x70, 0x6f, 0x72, 0x74, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x65, 0x0a, 0x14,
+	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f,
+	0x65, 0x6e, 0x75, 0x6d, 0x18, 0x33, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52,
+	0x12, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45,
+	0x6e, 0x75, 0x6d, 0x12, 0x5b, 0x0a, 0x15, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f,
+	0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x34, 0x20, 0x03,
+	0x28, 0x0e, 0x32, 0x27, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e,
+	0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x13, 0x72, 0x65, 0x70,
+	0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d,
+	0x12, 0x57, 0x0a, 0x13, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6d, 0x70,
+	0x6f, 0x72, 0x74, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x35, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x26, 0x2e,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72,
+	0x74, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49,
+	0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x63, 0x0a, 0x0f, 0x6d, 0x61, 0x70,
+	0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x38, 0x20, 0x03,
+	0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70,
+	0x49, 0x6e, 0x74, 0x33, 0x32, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
+	0x0d, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x63,
+	0x0a, 0x0f, 0x6d, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x69, 0x6e, 0x74, 0x36,
+	0x34, 0x18, 0x39, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x45,
+	0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x49, 0x6e,
+	0x74, 0x36, 0x34, 0x12, 0x69, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x3a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d,
+	0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74,
+	0x33, 0x32, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d,
+	0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x69,
+	0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x75, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x18, 0x3b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
+	0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x55, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x55, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x69, 0x0a, 0x11, 0x6d, 0x61, 0x70,
+	0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x3c,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d,
+	0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e,
+	0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x53, 0x69,
+	0x6e, 0x74, 0x33, 0x32, 0x12, 0x69, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x69, 0x6e, 0x74,
+	0x36, 0x34, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x3d, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x3d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f,
+	0x6d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
+	0x6f, 0x0a, 0x13, 0x6d, 0x61, 0x70, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x5f, 0x66,
+	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x3e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x68,
+	0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33,
+	0x32, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x6d,
+	0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
+	0x12, 0x6f, 0x0a, 0x13, 0x6d, 0x61, 0x70, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x5f,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x3f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e,
+	0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
+	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64,
+	0x36, 0x34, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11,
+	0x6d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36,
+	0x34, 0x12, 0x75, 0x0a, 0x15, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,
+	0x32, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x40, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x41, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x66,
+	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45, 0x6e,
+	0x74, 0x72, 0x79, 0x52, 0x13, 0x6d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
+	0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x75, 0x0a, 0x15, 0x6d, 0x61, 0x70, 0x5f,
+	0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
+	0x34, 0x18, 0x41, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x53, 0x66, 0x69,
+	0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x6d, 0x61, 0x70, 0x53,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12,
+	0x63, 0x0a, 0x0f, 0x6d, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x66, 0x6c, 0x6f,
+	0x61, 0x74, 0x18, 0x42, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70,
+	0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x46, 0x6c, 0x6f, 0x61, 0x74,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x46,
+	0x6c, 0x6f, 0x61, 0x74, 0x12, 0x66, 0x0a, 0x10, 0x6d, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x43, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c,
+	0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33,
+	0x32, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x6d, 0x61,
+	0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x5d, 0x0a, 0x0d,
+	0x6d, 0x61, 0x70, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x44, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61,
+	0x70, 0x42, 0x6f, 0x6f, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b,
+	0x6d, 0x61, 0x70, 0x42, 0x6f, 0x6f, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x69, 0x0a, 0x11, 0x6d,
+	0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
+	0x18, 0x45, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
+	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x66, 0x0a, 0x10, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74,
+	0x72, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x46, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x3c, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74,
+	0x72, 0x69, 0x6e, 0x67, 0x42, 0x79, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e,
+	0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x7f,
+	0x0a, 0x19, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x47, 0x20, 0x03, 0x28,
+	0x0b, 0x32, 0x44, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54,
+	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53,
+	0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x16, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69,
+	0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12,
+	0x76, 0x0a, 0x16, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x49, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x41, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72,
+	0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74,
+	0x72, 0x79, 0x52, 0x13, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
+	0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x6f, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52,
+	0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x6a, 0x0a, 0x14,
+	0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x18, 0x70, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x68, 0x79, 0x62,
+	0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x48, 0x00, 0x52, 0x12, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x4e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f,
+	0x66, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x71, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,
+	0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x0a,
+	0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x72, 0x20, 0x01,
+	0x28, 0x0c, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x42, 0x79, 0x74, 0x65, 0x73,
+	0x12, 0x1f, 0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x73,
+	0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x42, 0x6f, 0x6f,
+	0x6c, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36,
+	0x34, 0x18, 0x74, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
+	0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x21, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f,
+	0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x75, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x6f,
+	0x6e, 0x65, 0x6f, 0x66, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65,
+	0x6f, 0x66, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x76, 0x20, 0x01, 0x28, 0x01, 0x48,
+	0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x54,
+	0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x77, 0x20, 0x01,
+	0x28, 0x0e, 0x32, 0x33, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
+	0x45, 0x6e, 0x75, 0x6d, 0x1a, 0x69, 0x0a, 0x0d, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
+	0x52, 0x01, 0x61, 0x12, 0x4a, 0x0a, 0x0b, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69,
+	0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69,
+	0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70,
+	0x65, 0x73, 0x52, 0x0b, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x1a,
+	0x40, 0x0a, 0x12, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x49, 0x6e, 0x74, 0x33, 0x32,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
+	0x01, 0x1a, 0x40, 0x0a, 0x12, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x49, 0x6e, 0x74,
+	0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
+	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
+	0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
+	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
+	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61,
+	0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x55, 0x69,
+	0x6e, 0x74, 0x36, 0x34, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
+	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6b, 0x65,
+	0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04,
+	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d,
+	0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e,
+	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11,
+	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
+	0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x53, 0x69, 0x6e, 0x74,
+	0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x12, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
+	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x12, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
+	0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33,
+	0x32, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
+	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x07, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
+	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x07, 0x52, 0x05,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x4d, 0x61, 0x70,
+	0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e,
+	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x06,
+	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x06, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
+	0x46, 0x0a, 0x18, 0x4d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x53, 0x66,
+	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
+	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
+	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x05, 0x76, 0x61,
+	0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x46, 0x0a, 0x18, 0x4d, 0x61, 0x70, 0x53, 0x66,
+	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e,
+	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x10,
+	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x10, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
+	0x40, 0x0a, 0x12, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x46, 0x6c, 0x6f, 0x61, 0x74,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
+	0x01, 0x1a, 0x41, 0x0a, 0x13, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x44, 0x6f, 0x75,
+	0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
+	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x4d, 0x61, 0x70, 0x42, 0x6f, 0x6f, 0x6c, 0x42,
+	0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
+	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e,
+	0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
+	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
+	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76,
+	0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x4d, 0x61, 0x70, 0x53,
+	0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x79, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
+	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
+	0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c,
+	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x81, 0x01, 0x0a, 0x1b,
+	0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
+	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4c, 0x0a,
+	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x68,
+	0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
+	0x7b, 0x0a, 0x18, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
+	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x49, 0x0a,
+	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x68,
+	0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75,
+	0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x39, 0x0a, 0x0a,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x07, 0x0a, 0x03, 0x46, 0x4f,
+	0x4f, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x41, 0x52, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03,
+	0x42, 0x41, 0x5a, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x45, 0x47, 0x10, 0xff, 0xff, 0xff,
+	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
+	0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x42, 0x12, 0x0a, 0x10,
+	0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69,
+	0x6e, 0x74, 0x36, 0x34, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
+	0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6f, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x42, 0x13, 0x0a, 0x11,
+	0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,
+	0x32, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66,
+	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x42, 0x14, 0x0a, 0x12,
+	0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x36, 0x34, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f,
+	0x66, 0x6c, 0x6f, 0x61, 0x74, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x42, 0x12, 0x0a, 0x10, 0x5f,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42,
+	0x11, 0x0a, 0x0f, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74,
+	0x65, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f,
+	0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x1b,
+	0x0a, 0x19, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65,
+	0x69, 0x67, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f,
+	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d,
+	0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6f,
+	0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65,
+	0x6e, 0x75, 0x6d, 0x22, 0x2c, 0x0a, 0x0e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
+	0x52, 0x01, 0x63, 0x12, 0x0c, 0x0a, 0x01, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01,
+	0x64, 0x2a, 0x52, 0x0a, 0x0b, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d,
+	0x12, 0x10, 0x0a, 0x0c, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x5a, 0x45, 0x52, 0x4f,
+	0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x46, 0x4f,
+	0x4f, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x42,
+	0x41, 0x52, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f,
+	0x42, 0x41, 0x5a, 0x10, 0x06, 0x42, 0x43, 0x5a, 0x41, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+	0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73,
+	0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2f, 0x74, 0x65,
+	0x73, 0x74, 0x33, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x33,
+}
+
+var file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
+var file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
+var file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_goTypes = []any{
+	(ForeignEnum)(0),                   // 0: hybrid.goproto.proto.test3.ForeignEnum
+	(TestAllTypes_NestedEnum)(0),       // 1: hybrid.goproto.proto.test3.TestAllTypes.NestedEnum
+	(*TestAllTypes)(nil),               // 2: hybrid.goproto.proto.test3.TestAllTypes
+	(*ForeignMessage)(nil),             // 3: hybrid.goproto.proto.test3.ForeignMessage
+	(*TestAllTypes_NestedMessage)(nil), // 4: hybrid.goproto.proto.test3.TestAllTypes.NestedMessage
+	nil,                                // 5: hybrid.goproto.proto.test3.TestAllTypes.MapInt32Int32Entry
+	nil,                                // 6: hybrid.goproto.proto.test3.TestAllTypes.MapInt64Int64Entry
+	nil,                                // 7: hybrid.goproto.proto.test3.TestAllTypes.MapUint32Uint32Entry
+	nil,                                // 8: hybrid.goproto.proto.test3.TestAllTypes.MapUint64Uint64Entry
+	nil,                                // 9: hybrid.goproto.proto.test3.TestAllTypes.MapSint32Sint32Entry
+	nil,                                // 10: hybrid.goproto.proto.test3.TestAllTypes.MapSint64Sint64Entry
+	nil,                                // 11: hybrid.goproto.proto.test3.TestAllTypes.MapFixed32Fixed32Entry
+	nil,                                // 12: hybrid.goproto.proto.test3.TestAllTypes.MapFixed64Fixed64Entry
+	nil,                                // 13: hybrid.goproto.proto.test3.TestAllTypes.MapSfixed32Sfixed32Entry
+	nil,                                // 14: hybrid.goproto.proto.test3.TestAllTypes.MapSfixed64Sfixed64Entry
+	nil,                                // 15: hybrid.goproto.proto.test3.TestAllTypes.MapInt32FloatEntry
+	nil,                                // 16: hybrid.goproto.proto.test3.TestAllTypes.MapInt32DoubleEntry
+	nil,                                // 17: hybrid.goproto.proto.test3.TestAllTypes.MapBoolBoolEntry
+	nil,                                // 18: hybrid.goproto.proto.test3.TestAllTypes.MapStringStringEntry
+	nil,                                // 19: hybrid.goproto.proto.test3.TestAllTypes.MapStringBytesEntry
+	nil,                                // 20: hybrid.goproto.proto.test3.TestAllTypes.MapStringNestedMessageEntry
+	nil,                                // 21: hybrid.goproto.proto.test3.TestAllTypes.MapStringNestedEnumEntry
+	(*ImportMessage)(nil),              // 22: hybrid.goproto.proto.test3.ImportMessage
+	(ImportEnum)(0),                    // 23: hybrid.goproto.proto.test3.ImportEnum
+}
+var file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_depIdxs = []int32{
+	4,  // 0: hybrid.goproto.proto.test3.TestAllTypes.singular_nested_message:type_name -> hybrid.goproto.proto.test3.TestAllTypes.NestedMessage
+	3,  // 1: hybrid.goproto.proto.test3.TestAllTypes.singular_foreign_message:type_name -> hybrid.goproto.proto.test3.ForeignMessage
+	22, // 2: hybrid.goproto.proto.test3.TestAllTypes.singular_import_message:type_name -> hybrid.goproto.proto.test3.ImportMessage
+	1,  // 3: hybrid.goproto.proto.test3.TestAllTypes.singular_nested_enum:type_name -> hybrid.goproto.proto.test3.TestAllTypes.NestedEnum
+	0,  // 4: hybrid.goproto.proto.test3.TestAllTypes.singular_foreign_enum:type_name -> hybrid.goproto.proto.test3.ForeignEnum
+	23, // 5: hybrid.goproto.proto.test3.TestAllTypes.singular_import_enum:type_name -> hybrid.goproto.proto.test3.ImportEnum
+	4,  // 6: hybrid.goproto.proto.test3.TestAllTypes.optional_nested_message:type_name -> hybrid.goproto.proto.test3.TestAllTypes.NestedMessage
+	3,  // 7: hybrid.goproto.proto.test3.TestAllTypes.optional_foreign_message:type_name -> hybrid.goproto.proto.test3.ForeignMessage
+	22, // 8: hybrid.goproto.proto.test3.TestAllTypes.optional_import_message:type_name -> hybrid.goproto.proto.test3.ImportMessage
+	1,  // 9: hybrid.goproto.proto.test3.TestAllTypes.optional_nested_enum:type_name -> hybrid.goproto.proto.test3.TestAllTypes.NestedEnum
+	0,  // 10: hybrid.goproto.proto.test3.TestAllTypes.optional_foreign_enum:type_name -> hybrid.goproto.proto.test3.ForeignEnum
+	23, // 11: hybrid.goproto.proto.test3.TestAllTypes.optional_import_enum:type_name -> hybrid.goproto.proto.test3.ImportEnum
+	4,  // 12: hybrid.goproto.proto.test3.TestAllTypes.repeated_nested_message:type_name -> hybrid.goproto.proto.test3.TestAllTypes.NestedMessage
+	3,  // 13: hybrid.goproto.proto.test3.TestAllTypes.repeated_foreign_message:type_name -> hybrid.goproto.proto.test3.ForeignMessage
+	22, // 14: hybrid.goproto.proto.test3.TestAllTypes.repeated_importmessage:type_name -> hybrid.goproto.proto.test3.ImportMessage
+	1,  // 15: hybrid.goproto.proto.test3.TestAllTypes.repeated_nested_enum:type_name -> hybrid.goproto.proto.test3.TestAllTypes.NestedEnum
+	0,  // 16: hybrid.goproto.proto.test3.TestAllTypes.repeated_foreign_enum:type_name -> hybrid.goproto.proto.test3.ForeignEnum
+	23, // 17: hybrid.goproto.proto.test3.TestAllTypes.repeated_importenum:type_name -> hybrid.goproto.proto.test3.ImportEnum
+	5,  // 18: hybrid.goproto.proto.test3.TestAllTypes.map_int32_int32:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapInt32Int32Entry
+	6,  // 19: hybrid.goproto.proto.test3.TestAllTypes.map_int64_int64:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapInt64Int64Entry
+	7,  // 20: hybrid.goproto.proto.test3.TestAllTypes.map_uint32_uint32:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapUint32Uint32Entry
+	8,  // 21: hybrid.goproto.proto.test3.TestAllTypes.map_uint64_uint64:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapUint64Uint64Entry
+	9,  // 22: hybrid.goproto.proto.test3.TestAllTypes.map_sint32_sint32:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapSint32Sint32Entry
+	10, // 23: hybrid.goproto.proto.test3.TestAllTypes.map_sint64_sint64:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapSint64Sint64Entry
+	11, // 24: hybrid.goproto.proto.test3.TestAllTypes.map_fixed32_fixed32:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapFixed32Fixed32Entry
+	12, // 25: hybrid.goproto.proto.test3.TestAllTypes.map_fixed64_fixed64:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapFixed64Fixed64Entry
+	13, // 26: hybrid.goproto.proto.test3.TestAllTypes.map_sfixed32_sfixed32:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapSfixed32Sfixed32Entry
+	14, // 27: hybrid.goproto.proto.test3.TestAllTypes.map_sfixed64_sfixed64:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapSfixed64Sfixed64Entry
+	15, // 28: hybrid.goproto.proto.test3.TestAllTypes.map_int32_float:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapInt32FloatEntry
+	16, // 29: hybrid.goproto.proto.test3.TestAllTypes.map_int32_double:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapInt32DoubleEntry
+	17, // 30: hybrid.goproto.proto.test3.TestAllTypes.map_bool_bool:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapBoolBoolEntry
+	18, // 31: hybrid.goproto.proto.test3.TestAllTypes.map_string_string:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapStringStringEntry
+	19, // 32: hybrid.goproto.proto.test3.TestAllTypes.map_string_bytes:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapStringBytesEntry
+	20, // 33: hybrid.goproto.proto.test3.TestAllTypes.map_string_nested_message:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapStringNestedMessageEntry
+	21, // 34: hybrid.goproto.proto.test3.TestAllTypes.map_string_nested_enum:type_name -> hybrid.goproto.proto.test3.TestAllTypes.MapStringNestedEnumEntry
+	4,  // 35: hybrid.goproto.proto.test3.TestAllTypes.oneof_nested_message:type_name -> hybrid.goproto.proto.test3.TestAllTypes.NestedMessage
+	1,  // 36: hybrid.goproto.proto.test3.TestAllTypes.oneof_enum:type_name -> hybrid.goproto.proto.test3.TestAllTypes.NestedEnum
+	2,  // 37: hybrid.goproto.proto.test3.TestAllTypes.NestedMessage.corecursive:type_name -> hybrid.goproto.proto.test3.TestAllTypes
+	4,  // 38: hybrid.goproto.proto.test3.TestAllTypes.MapStringNestedMessageEntry.value:type_name -> hybrid.goproto.proto.test3.TestAllTypes.NestedMessage
+	1,  // 39: hybrid.goproto.proto.test3.TestAllTypes.MapStringNestedEnumEntry.value:type_name -> hybrid.goproto.proto.test3.TestAllTypes.NestedEnum
+	40, // [40:40] is the sub-list for method output_type
+	40, // [40:40] is the sub-list for method input_type
+	40, // [40:40] is the sub-list for extension type_name
+	40, // [40:40] is the sub-list for extension extendee
+	0,  // [0:40] is the sub-list for field type_name
+}
+
+func init() { file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_init() }
+func file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_init() {
+	if File_internal_testprotos_test3_test3_hybrid_test_hybrid_proto != nil {
+		return
+	}
+	file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_init()
+	file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_msgTypes[0].OneofWrappers = []any{
+		(*testAllTypes_OneofUint32)(nil),
+		(*testAllTypes_OneofNestedMessage)(nil),
+		(*testAllTypes_OneofString)(nil),
+		(*testAllTypes_OneofBytes)(nil),
+		(*testAllTypes_OneofBool)(nil),
+		(*testAllTypes_OneofUint64)(nil),
+		(*testAllTypes_OneofFloat)(nil),
+		(*testAllTypes_OneofDouble)(nil),
+		(*testAllTypes_OneofEnum)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_rawDesc,
+			NumEnums:      2,
+			NumMessages:   20,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_goTypes,
+		DependencyIndexes: file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_depIdxs,
+		EnumInfos:         file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_enumTypes,
+		MessageInfos:      file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_msgTypes,
+	}.Build()
+	File_internal_testprotos_test3_test3_hybrid_test_hybrid_proto = out.File
+	file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_rawDesc = nil
+	file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_goTypes = nil
+	file_internal_testprotos_test3_test3_hybrid_test_hybrid_proto_depIdxs = nil
+}
diff --git a/internal/testprotos/test3/test3_hybrid/test_import.hybrid.pb.go b/internal/testprotos/test3/test3_hybrid/test_import.hybrid.pb.go
new file mode 100644
index 0000000..b53814c
--- /dev/null
+++ b/internal/testprotos/test3/test3_hybrid/test_import.hybrid.pb.go
@@ -0,0 +1,156 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: internal/testprotos/test3/test3_hybrid/test_import.hybrid.proto
+
+//go:build !protoopaque
+
+package test3_hybrid
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+)
+
+type ImportEnum int32
+
+const (
+	ImportEnum_IMPORT_ZERO ImportEnum = 0
+)
+
+// Enum value maps for ImportEnum.
+var (
+	ImportEnum_name = map[int32]string{
+		0: "IMPORT_ZERO",
+	}
+	ImportEnum_value = map[string]int32{
+		"IMPORT_ZERO": 0,
+	}
+)
+
+func (x ImportEnum) Enum() *ImportEnum {
+	p := new(ImportEnum)
+	*p = x
+	return p
+}
+
+func (x ImportEnum) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ImportEnum) Descriptor() protoreflect.EnumDescriptor {
+	return file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_enumTypes[0].Descriptor()
+}
+
+func (ImportEnum) Type() protoreflect.EnumType {
+	return &file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_enumTypes[0]
+}
+
+func (x ImportEnum) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+type ImportMessage struct {
+	state         protoimpl.MessageState `protogen:"hybrid.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *ImportMessage) Reset() {
+	*x = ImportMessage{}
+	mi := &file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ImportMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ImportMessage) ProtoMessage() {}
+
+func (x *ImportMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+type ImportMessage_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 ImportMessage_builder) Build() *ImportMessage {
+	m0 := &ImportMessage{}
+	b, x := &b0, m0
+	_, _ = b, x
+	return m0
+}
+
+var File_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto protoreflect.FileDescriptor
+
+var file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_rawDesc = []byte{
+	0x0a, 0x3f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2f, 0x74, 0x65, 0x73, 0x74,
+	0x33, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6d,
+	0x70, 0x6f, 0x72, 0x74, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x12, 0x1a, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x22, 0x0f, 0x0a,
+	0x0d, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2a, 0x1d,
+	0x0a, 0x0a, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b,
+	0x49, 0x4d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x42, 0x43, 0x5a,
+	0x41, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f,
+	0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65,
+	0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f,
+	0x74, 0x65, 0x73, 0x74, 0x33, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x33, 0x5f, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_goTypes = []any{
+	(ImportEnum)(0),       // 0: hybrid.goproto.proto.test3.ImportEnum
+	(*ImportMessage)(nil), // 1: hybrid.goproto.proto.test3.ImportMessage
+}
+var file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_depIdxs = []int32{
+	0, // [0:0] is the sub-list for method output_type
+	0, // [0:0] is the sub-list for method input_type
+	0, // [0:0] is the sub-list for extension type_name
+	0, // [0:0] is the sub-list for extension extendee
+	0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_init() }
+func file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_init() {
+	if File_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_rawDesc,
+			NumEnums:      1,
+			NumMessages:   1,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_goTypes,
+		DependencyIndexes: file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_depIdxs,
+		EnumInfos:         file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_enumTypes,
+		MessageInfos:      file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_msgTypes,
+	}.Build()
+	File_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto = out.File
+	file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_rawDesc = nil
+	file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_goTypes = nil
+	file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_depIdxs = nil
+}
diff --git a/internal/testprotos/test3/test3_hybrid/test_import.hybrid.proto b/internal/testprotos/test3/test3_hybrid/test_import.hybrid.proto
new file mode 100644
index 0000000..aa7ec4d
--- /dev/null
+++ b/internal/testprotos/test3/test3_hybrid/test_import.hybrid.proto
@@ -0,0 +1,16 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+syntax = "proto3";
+
+package hybrid.goproto.proto.test3;
+
+option go_package = "google.golang.org/protobuf/internal/testprotos/test3/test3_hybrid";
+
+
+message ImportMessage {}
+
+enum ImportEnum {
+  IMPORT_ZERO = 0;
+}
\ No newline at end of file
diff --git a/internal/testprotos/test3/test3_hybrid/test_import.hybrid_protoopaque.pb.go b/internal/testprotos/test3/test3_hybrid/test_import.hybrid_protoopaque.pb.go
new file mode 100644
index 0000000..f05bddb
--- /dev/null
+++ b/internal/testprotos/test3/test3_hybrid/test_import.hybrid_protoopaque.pb.go
@@ -0,0 +1,156 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: internal/testprotos/test3/test3_hybrid/test_import.hybrid.proto
+
+//go:build protoopaque
+
+package test3_hybrid
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+)
+
+type ImportEnum int32
+
+const (
+	ImportEnum_IMPORT_ZERO ImportEnum = 0
+)
+
+// Enum value maps for ImportEnum.
+var (
+	ImportEnum_name = map[int32]string{
+		0: "IMPORT_ZERO",
+	}
+	ImportEnum_value = map[string]int32{
+		"IMPORT_ZERO": 0,
+	}
+)
+
+func (x ImportEnum) Enum() *ImportEnum {
+	p := new(ImportEnum)
+	*p = x
+	return p
+}
+
+func (x ImportEnum) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ImportEnum) Descriptor() protoreflect.EnumDescriptor {
+	return file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_enumTypes[0].Descriptor()
+}
+
+func (ImportEnum) Type() protoreflect.EnumType {
+	return &file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_enumTypes[0]
+}
+
+func (x ImportEnum) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+type ImportMessage struct {
+	state         protoimpl.MessageState `protogen:"opaque.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *ImportMessage) Reset() {
+	*x = ImportMessage{}
+	mi := &file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ImportMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ImportMessage) ProtoMessage() {}
+
+func (x *ImportMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+type ImportMessage_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 ImportMessage_builder) Build() *ImportMessage {
+	m0 := &ImportMessage{}
+	b, x := &b0, m0
+	_, _ = b, x
+	return m0
+}
+
+var File_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto protoreflect.FileDescriptor
+
+var file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_rawDesc = []byte{
+	0x0a, 0x3f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2f, 0x74, 0x65, 0x73, 0x74,
+	0x33, 0x5f, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6d,
+	0x70, 0x6f, 0x72, 0x74, 0x2e, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x12, 0x1a, 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x22, 0x0f, 0x0a,
+	0x0d, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2a, 0x1d,
+	0x0a, 0x0a, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b,
+	0x49, 0x4d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x42, 0x43, 0x5a,
+	0x41, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f,
+	0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65,
+	0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f,
+	0x74, 0x65, 0x73, 0x74, 0x33, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x33, 0x5f, 0x68, 0x79, 0x62, 0x72,
+	0x69, 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_goTypes = []any{
+	(ImportEnum)(0),       // 0: hybrid.goproto.proto.test3.ImportEnum
+	(*ImportMessage)(nil), // 1: hybrid.goproto.proto.test3.ImportMessage
+}
+var file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_depIdxs = []int32{
+	0, // [0:0] is the sub-list for method output_type
+	0, // [0:0] is the sub-list for method input_type
+	0, // [0:0] is the sub-list for extension type_name
+	0, // [0:0] is the sub-list for extension extendee
+	0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_init() }
+func file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_init() {
+	if File_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_rawDesc,
+			NumEnums:      1,
+			NumMessages:   1,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_goTypes,
+		DependencyIndexes: file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_depIdxs,
+		EnumInfos:         file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_enumTypes,
+		MessageInfos:      file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_msgTypes,
+	}.Build()
+	File_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto = out.File
+	file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_rawDesc = nil
+	file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_goTypes = nil
+	file_internal_testprotos_test3_test3_hybrid_test_import_hybrid_proto_depIdxs = nil
+}
diff --git a/internal/testprotos/test3/test3_opaque/test.opaque.pb.go b/internal/testprotos/test3/test3_opaque/test.opaque.pb.go
new file mode 100644
index 0000000..f51c61a
--- /dev/null
+++ b/internal/testprotos/test3/test3_opaque/test.opaque.pb.go
@@ -0,0 +1,2849 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: internal/testprotos/test3/test3_opaque/test.opaque.proto
+
+package test3_opaque
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+)
+
+type ForeignEnum int32
+
+const (
+	ForeignEnum_FOREIGN_ZERO ForeignEnum = 0
+	ForeignEnum_FOREIGN_FOO  ForeignEnum = 4
+	ForeignEnum_FOREIGN_BAR  ForeignEnum = 5
+	ForeignEnum_FOREIGN_BAZ  ForeignEnum = 6
+)
+
+// Enum value maps for ForeignEnum.
+var (
+	ForeignEnum_name = map[int32]string{
+		0: "FOREIGN_ZERO",
+		4: "FOREIGN_FOO",
+		5: "FOREIGN_BAR",
+		6: "FOREIGN_BAZ",
+	}
+	ForeignEnum_value = map[string]int32{
+		"FOREIGN_ZERO": 0,
+		"FOREIGN_FOO":  4,
+		"FOREIGN_BAR":  5,
+		"FOREIGN_BAZ":  6,
+	}
+)
+
+func (x ForeignEnum) Enum() *ForeignEnum {
+	p := new(ForeignEnum)
+	*p = x
+	return p
+}
+
+func (x ForeignEnum) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ForeignEnum) Descriptor() protoreflect.EnumDescriptor {
+	return file_internal_testprotos_test3_test3_opaque_test_opaque_proto_enumTypes[0].Descriptor()
+}
+
+func (ForeignEnum) Type() protoreflect.EnumType {
+	return &file_internal_testprotos_test3_test3_opaque_test_opaque_proto_enumTypes[0]
+}
+
+func (x ForeignEnum) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+type TestAllTypes_NestedEnum int32
+
+const (
+	TestAllTypes_FOO TestAllTypes_NestedEnum = 0
+	TestAllTypes_BAR TestAllTypes_NestedEnum = 1
+	TestAllTypes_BAZ TestAllTypes_NestedEnum = 2
+	TestAllTypes_NEG TestAllTypes_NestedEnum = -1 // Intentionally negative.
+)
+
+// Enum value maps for TestAllTypes_NestedEnum.
+var (
+	TestAllTypes_NestedEnum_name = map[int32]string{
+		0:  "FOO",
+		1:  "BAR",
+		2:  "BAZ",
+		-1: "NEG",
+	}
+	TestAllTypes_NestedEnum_value = map[string]int32{
+		"FOO": 0,
+		"BAR": 1,
+		"BAZ": 2,
+		"NEG": -1,
+	}
+)
+
+func (x TestAllTypes_NestedEnum) Enum() *TestAllTypes_NestedEnum {
+	p := new(TestAllTypes_NestedEnum)
+	*p = x
+	return p
+}
+
+func (x TestAllTypes_NestedEnum) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (TestAllTypes_NestedEnum) Descriptor() protoreflect.EnumDescriptor {
+	return file_internal_testprotos_test3_test3_opaque_test_opaque_proto_enumTypes[1].Descriptor()
+}
+
+func (TestAllTypes_NestedEnum) Type() protoreflect.EnumType {
+	return &file_internal_testprotos_test3_test3_opaque_test_opaque_proto_enumTypes[1]
+}
+
+func (x TestAllTypes_NestedEnum) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+type TestAllTypes struct {
+	state                             protoimpl.MessageState                 `protogen:"opaque.v1"`
+	xxx_hidden_SingularInt32          int32                                  `protobuf:"varint,81,opt,name=singular_int32,json=singularInt32,proto3" json:"singular_int32,omitempty"`
+	xxx_hidden_SingularInt64          int64                                  `protobuf:"varint,82,opt,name=singular_int64,json=singularInt64,proto3" json:"singular_int64,omitempty"`
+	xxx_hidden_SingularUint32         uint32                                 `protobuf:"varint,83,opt,name=singular_uint32,json=singularUint32,proto3" json:"singular_uint32,omitempty"`
+	xxx_hidden_SingularUint64         uint64                                 `protobuf:"varint,84,opt,name=singular_uint64,json=singularUint64,proto3" json:"singular_uint64,omitempty"`
+	xxx_hidden_SingularSint32         int32                                  `protobuf:"zigzag32,85,opt,name=singular_sint32,json=singularSint32,proto3" json:"singular_sint32,omitempty"`
+	xxx_hidden_SingularSint64         int64                                  `protobuf:"zigzag64,86,opt,name=singular_sint64,json=singularSint64,proto3" json:"singular_sint64,omitempty"`
+	xxx_hidden_SingularFixed32        uint32                                 `protobuf:"fixed32,87,opt,name=singular_fixed32,json=singularFixed32,proto3" json:"singular_fixed32,omitempty"`
+	xxx_hidden_SingularFixed64        uint64                                 `protobuf:"fixed64,88,opt,name=singular_fixed64,json=singularFixed64,proto3" json:"singular_fixed64,omitempty"`
+	xxx_hidden_SingularSfixed32       int32                                  `protobuf:"fixed32,89,opt,name=singular_sfixed32,json=singularSfixed32,proto3" json:"singular_sfixed32,omitempty"`
+	xxx_hidden_SingularSfixed64       int64                                  `protobuf:"fixed64,90,opt,name=singular_sfixed64,json=singularSfixed64,proto3" json:"singular_sfixed64,omitempty"`
+	xxx_hidden_SingularFloat          float32                                `protobuf:"fixed32,91,opt,name=singular_float,json=singularFloat,proto3" json:"singular_float,omitempty"`
+	xxx_hidden_SingularDouble         float64                                `protobuf:"fixed64,92,opt,name=singular_double,json=singularDouble,proto3" json:"singular_double,omitempty"`
+	xxx_hidden_SingularBool           bool                                   `protobuf:"varint,93,opt,name=singular_bool,json=singularBool,proto3" json:"singular_bool,omitempty"`
+	xxx_hidden_SingularString         string                                 `protobuf:"bytes,94,opt,name=singular_string,json=singularString,proto3" json:"singular_string,omitempty"`
+	xxx_hidden_SingularBytes          []byte                                 `protobuf:"bytes,95,opt,name=singular_bytes,json=singularBytes,proto3" json:"singular_bytes,omitempty"`
+	xxx_hidden_SingularNestedMessage  *TestAllTypes_NestedMessage            `protobuf:"bytes,98,opt,name=singular_nested_message,json=singularNestedMessage,proto3" json:"singular_nested_message,omitempty"`
+	xxx_hidden_SingularForeignMessage *ForeignMessage                        `protobuf:"bytes,99,opt,name=singular_foreign_message,json=singularForeignMessage,proto3" json:"singular_foreign_message,omitempty"`
+	xxx_hidden_SingularImportMessage  *ImportMessage                         `protobuf:"bytes,100,opt,name=singular_import_message,json=singularImportMessage,proto3" json:"singular_import_message,omitempty"`
+	xxx_hidden_SingularNestedEnum     TestAllTypes_NestedEnum                `protobuf:"varint,101,opt,name=singular_nested_enum,json=singularNestedEnum,proto3,enum=opaque.goproto.proto.test3.TestAllTypes_NestedEnum" json:"singular_nested_enum,omitempty"`
+	xxx_hidden_SingularForeignEnum    ForeignEnum                            `protobuf:"varint,102,opt,name=singular_foreign_enum,json=singularForeignEnum,proto3,enum=opaque.goproto.proto.test3.ForeignEnum" json:"singular_foreign_enum,omitempty"`
+	xxx_hidden_SingularImportEnum     ImportEnum                             `protobuf:"varint,103,opt,name=singular_import_enum,json=singularImportEnum,proto3,enum=opaque.goproto.proto.test3.ImportEnum" json:"singular_import_enum,omitempty"`
+	xxx_hidden_OptionalInt32          int32                                  `protobuf:"varint,1,opt,name=optional_int32,json=optionalInt32,proto3,oneof" json:"optional_int32,omitempty"`
+	xxx_hidden_OptionalInt64          int64                                  `protobuf:"varint,2,opt,name=optional_int64,json=optionalInt64,proto3,oneof" json:"optional_int64,omitempty"`
+	xxx_hidden_OptionalUint32         uint32                                 `protobuf:"varint,3,opt,name=optional_uint32,json=optionalUint32,proto3,oneof" json:"optional_uint32,omitempty"`
+	xxx_hidden_OptionalUint64         uint64                                 `protobuf:"varint,4,opt,name=optional_uint64,json=optionalUint64,proto3,oneof" json:"optional_uint64,omitempty"`
+	xxx_hidden_OptionalSint32         int32                                  `protobuf:"zigzag32,5,opt,name=optional_sint32,json=optionalSint32,proto3,oneof" json:"optional_sint32,omitempty"`
+	xxx_hidden_OptionalSint64         int64                                  `protobuf:"zigzag64,6,opt,name=optional_sint64,json=optionalSint64,proto3,oneof" json:"optional_sint64,omitempty"`
+	xxx_hidden_OptionalFixed32        uint32                                 `protobuf:"fixed32,7,opt,name=optional_fixed32,json=optionalFixed32,proto3,oneof" json:"optional_fixed32,omitempty"`
+	xxx_hidden_OptionalFixed64        uint64                                 `protobuf:"fixed64,8,opt,name=optional_fixed64,json=optionalFixed64,proto3,oneof" json:"optional_fixed64,omitempty"`
+	xxx_hidden_OptionalSfixed32       int32                                  `protobuf:"fixed32,9,opt,name=optional_sfixed32,json=optionalSfixed32,proto3,oneof" json:"optional_sfixed32,omitempty"`
+	xxx_hidden_OptionalSfixed64       int64                                  `protobuf:"fixed64,10,opt,name=optional_sfixed64,json=optionalSfixed64,proto3,oneof" json:"optional_sfixed64,omitempty"`
+	xxx_hidden_OptionalFloat          float32                                `protobuf:"fixed32,11,opt,name=optional_float,json=optionalFloat,proto3,oneof" json:"optional_float,omitempty"`
+	xxx_hidden_OptionalDouble         float64                                `protobuf:"fixed64,12,opt,name=optional_double,json=optionalDouble,proto3,oneof" json:"optional_double,omitempty"`
+	xxx_hidden_OptionalBool           bool                                   `protobuf:"varint,13,opt,name=optional_bool,json=optionalBool,proto3,oneof" json:"optional_bool,omitempty"`
+	xxx_hidden_OptionalString         *string                                `protobuf:"bytes,14,opt,name=optional_string,json=optionalString,proto3,oneof" json:"optional_string,omitempty"`
+	xxx_hidden_OptionalBytes          []byte                                 `protobuf:"bytes,15,opt,name=optional_bytes,json=optionalBytes,proto3,oneof" json:"optional_bytes,omitempty"`
+	xxx_hidden_OptionalNestedMessage  *TestAllTypes_NestedMessage            `protobuf:"bytes,18,opt,name=optional_nested_message,json=optionalNestedMessage,proto3,oneof" json:"optional_nested_message,omitempty"`
+	xxx_hidden_OptionalForeignMessage *ForeignMessage                        `protobuf:"bytes,19,opt,name=optional_foreign_message,json=optionalForeignMessage,proto3,oneof" json:"optional_foreign_message,omitempty"`
+	xxx_hidden_OptionalImportMessage  *ImportMessage                         `protobuf:"bytes,20,opt,name=optional_import_message,json=optionalImportMessage,proto3,oneof" json:"optional_import_message,omitempty"`
+	xxx_hidden_OptionalNestedEnum     TestAllTypes_NestedEnum                `protobuf:"varint,21,opt,name=optional_nested_enum,json=optionalNestedEnum,proto3,enum=opaque.goproto.proto.test3.TestAllTypes_NestedEnum,oneof" json:"optional_nested_enum,omitempty"`
+	xxx_hidden_OptionalForeignEnum    ForeignEnum                            `protobuf:"varint,22,opt,name=optional_foreign_enum,json=optionalForeignEnum,proto3,enum=opaque.goproto.proto.test3.ForeignEnum,oneof" json:"optional_foreign_enum,omitempty"`
+	xxx_hidden_OptionalImportEnum     ImportEnum                             `protobuf:"varint,23,opt,name=optional_import_enum,json=optionalImportEnum,proto3,enum=opaque.goproto.proto.test3.ImportEnum,oneof" json:"optional_import_enum,omitempty"`
+	xxx_hidden_RepeatedInt32          []int32                                `protobuf:"varint,31,rep,packed,name=repeated_int32,json=repeatedInt32,proto3" json:"repeated_int32,omitempty"`
+	xxx_hidden_RepeatedInt64          []int64                                `protobuf:"varint,32,rep,packed,name=repeated_int64,json=repeatedInt64,proto3" json:"repeated_int64,omitempty"`
+	xxx_hidden_RepeatedUint32         []uint32                               `protobuf:"varint,33,rep,packed,name=repeated_uint32,json=repeatedUint32,proto3" json:"repeated_uint32,omitempty"`
+	xxx_hidden_RepeatedUint64         []uint64                               `protobuf:"varint,34,rep,packed,name=repeated_uint64,json=repeatedUint64,proto3" json:"repeated_uint64,omitempty"`
+	xxx_hidden_RepeatedSint32         []int32                                `protobuf:"zigzag32,35,rep,packed,name=repeated_sint32,json=repeatedSint32,proto3" json:"repeated_sint32,omitempty"`
+	xxx_hidden_RepeatedSint64         []int64                                `protobuf:"zigzag64,36,rep,packed,name=repeated_sint64,json=repeatedSint64,proto3" json:"repeated_sint64,omitempty"`
+	xxx_hidden_RepeatedFixed32        []uint32                               `protobuf:"fixed32,37,rep,packed,name=repeated_fixed32,json=repeatedFixed32,proto3" json:"repeated_fixed32,omitempty"`
+	xxx_hidden_RepeatedFixed64        []uint64                               `protobuf:"fixed64,38,rep,packed,name=repeated_fixed64,json=repeatedFixed64,proto3" json:"repeated_fixed64,omitempty"`
+	xxx_hidden_RepeatedSfixed32       []int32                                `protobuf:"fixed32,39,rep,packed,name=repeated_sfixed32,json=repeatedSfixed32,proto3" json:"repeated_sfixed32,omitempty"`
+	xxx_hidden_RepeatedSfixed64       []int64                                `protobuf:"fixed64,40,rep,packed,name=repeated_sfixed64,json=repeatedSfixed64,proto3" json:"repeated_sfixed64,omitempty"`
+	xxx_hidden_RepeatedFloat          []float32                              `protobuf:"fixed32,41,rep,packed,name=repeated_float,json=repeatedFloat,proto3" json:"repeated_float,omitempty"`
+	xxx_hidden_RepeatedDouble         []float64                              `protobuf:"fixed64,42,rep,packed,name=repeated_double,json=repeatedDouble,proto3" json:"repeated_double,omitempty"`
+	xxx_hidden_RepeatedBool           []bool                                 `protobuf:"varint,43,rep,packed,name=repeated_bool,json=repeatedBool,proto3" json:"repeated_bool,omitempty"`
+	xxx_hidden_RepeatedString         []string                               `protobuf:"bytes,44,rep,name=repeated_string,json=repeatedString,proto3" json:"repeated_string,omitempty"`
+	xxx_hidden_RepeatedBytes          [][]byte                               `protobuf:"bytes,45,rep,name=repeated_bytes,json=repeatedBytes,proto3" json:"repeated_bytes,omitempty"`
+	xxx_hidden_RepeatedNestedMessage  *[]*TestAllTypes_NestedMessage         `protobuf:"bytes,48,rep,name=repeated_nested_message,json=repeatedNestedMessage,proto3" json:"repeated_nested_message,omitempty"`
+	xxx_hidden_RepeatedForeignMessage *[]*ForeignMessage                     `protobuf:"bytes,49,rep,name=repeated_foreign_message,json=repeatedForeignMessage,proto3" json:"repeated_foreign_message,omitempty"`
+	xxx_hidden_RepeatedImportmessage  *[]*ImportMessage                      `protobuf:"bytes,50,rep,name=repeated_importmessage,json=repeatedImportmessage,proto3" json:"repeated_importmessage,omitempty"`
+	xxx_hidden_RepeatedNestedEnum     []TestAllTypes_NestedEnum              `protobuf:"varint,51,rep,packed,name=repeated_nested_enum,json=repeatedNestedEnum,proto3,enum=opaque.goproto.proto.test3.TestAllTypes_NestedEnum" json:"repeated_nested_enum,omitempty"`
+	xxx_hidden_RepeatedForeignEnum    []ForeignEnum                          `protobuf:"varint,52,rep,packed,name=repeated_foreign_enum,json=repeatedForeignEnum,proto3,enum=opaque.goproto.proto.test3.ForeignEnum" json:"repeated_foreign_enum,omitempty"`
+	xxx_hidden_RepeatedImportenum     []ImportEnum                           `protobuf:"varint,53,rep,packed,name=repeated_importenum,json=repeatedImportenum,proto3,enum=opaque.goproto.proto.test3.ImportEnum" json:"repeated_importenum,omitempty"`
+	xxx_hidden_MapInt32Int32          map[int32]int32                        `protobuf:"bytes,56,rep,name=map_int32_int32,json=mapInt32Int32,proto3" json:"map_int32_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	xxx_hidden_MapInt64Int64          map[int64]int64                        `protobuf:"bytes,57,rep,name=map_int64_int64,json=mapInt64Int64,proto3" json:"map_int64_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	xxx_hidden_MapUint32Uint32        map[uint32]uint32                      `protobuf:"bytes,58,rep,name=map_uint32_uint32,json=mapUint32Uint32,proto3" json:"map_uint32_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	xxx_hidden_MapUint64Uint64        map[uint64]uint64                      `protobuf:"bytes,59,rep,name=map_uint64_uint64,json=mapUint64Uint64,proto3" json:"map_uint64_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	xxx_hidden_MapSint32Sint32        map[int32]int32                        `protobuf:"bytes,60,rep,name=map_sint32_sint32,json=mapSint32Sint32,proto3" json:"map_sint32_sint32,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
+	xxx_hidden_MapSint64Sint64        map[int64]int64                        `protobuf:"bytes,61,rep,name=map_sint64_sint64,json=mapSint64Sint64,proto3" json:"map_sint64_sint64,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
+	xxx_hidden_MapFixed32Fixed32      map[uint32]uint32                      `protobuf:"bytes,62,rep,name=map_fixed32_fixed32,json=mapFixed32Fixed32,proto3" json:"map_fixed32_fixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	xxx_hidden_MapFixed64Fixed64      map[uint64]uint64                      `protobuf:"bytes,63,rep,name=map_fixed64_fixed64,json=mapFixed64Fixed64,proto3" json:"map_fixed64_fixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	xxx_hidden_MapSfixed32Sfixed32    map[int32]int32                        `protobuf:"bytes,64,rep,name=map_sfixed32_sfixed32,json=mapSfixed32Sfixed32,proto3" json:"map_sfixed32_sfixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	xxx_hidden_MapSfixed64Sfixed64    map[int64]int64                        `protobuf:"bytes,65,rep,name=map_sfixed64_sfixed64,json=mapSfixed64Sfixed64,proto3" json:"map_sfixed64_sfixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	xxx_hidden_MapInt32Float          map[int32]float32                      `protobuf:"bytes,66,rep,name=map_int32_float,json=mapInt32Float,proto3" json:"map_int32_float,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	xxx_hidden_MapInt32Double         map[int32]float64                      `protobuf:"bytes,67,rep,name=map_int32_double,json=mapInt32Double,proto3" json:"map_int32_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	xxx_hidden_MapBoolBool            map[bool]bool                          `protobuf:"bytes,68,rep,name=map_bool_bool,json=mapBoolBool,proto3" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	xxx_hidden_MapStringString        map[string]string                      `protobuf:"bytes,69,rep,name=map_string_string,json=mapStringString,proto3" json:"map_string_string,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	xxx_hidden_MapStringBytes         map[string][]byte                      `protobuf:"bytes,70,rep,name=map_string_bytes,json=mapStringBytes,proto3" json:"map_string_bytes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	xxx_hidden_MapStringNestedMessage map[string]*TestAllTypes_NestedMessage `protobuf:"bytes,71,rep,name=map_string_nested_message,json=mapStringNestedMessage,proto3" json:"map_string_nested_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	xxx_hidden_MapStringNestedEnum    map[string]TestAllTypes_NestedEnum     `protobuf:"bytes,73,rep,name=map_string_nested_enum,json=mapStringNestedEnum,proto3" json:"map_string_nested_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=opaque.goproto.proto.test3.TestAllTypes_NestedEnum"`
+	xxx_hidden_OneofField             isTestAllTypes_OneofField              `protobuf_oneof:"oneof_field"`
+	XXX_raceDetectHookData            protoimpl.RaceDetectHookData
+	XXX_presence                      [3]uint32
+	unknownFields                     protoimpl.UnknownFields
+	sizeCache                         protoimpl.SizeCache
+}
+
+func (x *TestAllTypes) Reset() {
+	*x = TestAllTypes{}
+	mi := &file_internal_testprotos_test3_test3_opaque_test_opaque_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestAllTypes) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestAllTypes) ProtoMessage() {}
+
+func (x *TestAllTypes) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_test3_test3_opaque_test_opaque_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestAllTypes) GetSingularInt32() int32 {
+	if x != nil {
+		return x.xxx_hidden_SingularInt32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularInt64() int64 {
+	if x != nil {
+		return x.xxx_hidden_SingularInt64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularUint32() uint32 {
+	if x != nil {
+		return x.xxx_hidden_SingularUint32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularUint64() uint64 {
+	if x != nil {
+		return x.xxx_hidden_SingularUint64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularSint32() int32 {
+	if x != nil {
+		return x.xxx_hidden_SingularSint32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularSint64() int64 {
+	if x != nil {
+		return x.xxx_hidden_SingularSint64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularFixed32() uint32 {
+	if x != nil {
+		return x.xxx_hidden_SingularFixed32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularFixed64() uint64 {
+	if x != nil {
+		return x.xxx_hidden_SingularFixed64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularSfixed32() int32 {
+	if x != nil {
+		return x.xxx_hidden_SingularSfixed32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularSfixed64() int64 {
+	if x != nil {
+		return x.xxx_hidden_SingularSfixed64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularFloat() float32 {
+	if x != nil {
+		return x.xxx_hidden_SingularFloat
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularDouble() float64 {
+	if x != nil {
+		return x.xxx_hidden_SingularDouble
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetSingularBool() bool {
+	if x != nil {
+		return x.xxx_hidden_SingularBool
+	}
+	return false
+}
+
+func (x *TestAllTypes) GetSingularString() string {
+	if x != nil {
+		return x.xxx_hidden_SingularString
+	}
+	return ""
+}
+
+func (x *TestAllTypes) GetSingularBytes() []byte {
+	if x != nil {
+		return x.xxx_hidden_SingularBytes
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetSingularNestedMessage() *TestAllTypes_NestedMessage {
+	if x != nil {
+		return x.xxx_hidden_SingularNestedMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetSingularForeignMessage() *ForeignMessage {
+	if x != nil {
+		return x.xxx_hidden_SingularForeignMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetSingularImportMessage() *ImportMessage {
+	if x != nil {
+		return x.xxx_hidden_SingularImportMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetSingularNestedEnum() TestAllTypes_NestedEnum {
+	if x != nil {
+		return x.xxx_hidden_SingularNestedEnum
+	}
+	return TestAllTypes_FOO
+}
+
+func (x *TestAllTypes) GetSingularForeignEnum() ForeignEnum {
+	if x != nil {
+		return x.xxx_hidden_SingularForeignEnum
+	}
+	return ForeignEnum_FOREIGN_ZERO
+}
+
+func (x *TestAllTypes) GetSingularImportEnum() ImportEnum {
+	if x != nil {
+		return x.xxx_hidden_SingularImportEnum
+	}
+	return ImportEnum_IMPORT_ZERO
+}
+
+func (x *TestAllTypes) GetOptionalInt32() int32 {
+	if x != nil {
+		return x.xxx_hidden_OptionalInt32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalInt64() int64 {
+	if x != nil {
+		return x.xxx_hidden_OptionalInt64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalUint32() uint32 {
+	if x != nil {
+		return x.xxx_hidden_OptionalUint32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalUint64() uint64 {
+	if x != nil {
+		return x.xxx_hidden_OptionalUint64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalSint32() int32 {
+	if x != nil {
+		return x.xxx_hidden_OptionalSint32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalSint64() int64 {
+	if x != nil {
+		return x.xxx_hidden_OptionalSint64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalFixed32() uint32 {
+	if x != nil {
+		return x.xxx_hidden_OptionalFixed32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalFixed64() uint64 {
+	if x != nil {
+		return x.xxx_hidden_OptionalFixed64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalSfixed32() int32 {
+	if x != nil {
+		return x.xxx_hidden_OptionalSfixed32
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalSfixed64() int64 {
+	if x != nil {
+		return x.xxx_hidden_OptionalSfixed64
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalFloat() float32 {
+	if x != nil {
+		return x.xxx_hidden_OptionalFloat
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalDouble() float64 {
+	if x != nil {
+		return x.xxx_hidden_OptionalDouble
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOptionalBool() bool {
+	if x != nil {
+		return x.xxx_hidden_OptionalBool
+	}
+	return false
+}
+
+func (x *TestAllTypes) GetOptionalString() string {
+	if x != nil {
+		if x.xxx_hidden_OptionalString != nil {
+			return *x.xxx_hidden_OptionalString
+		}
+		return ""
+	}
+	return ""
+}
+
+func (x *TestAllTypes) GetOptionalBytes() []byte {
+	if x != nil {
+		return x.xxx_hidden_OptionalBytes
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOptionalNestedMessage() *TestAllTypes_NestedMessage {
+	if x != nil {
+		return x.xxx_hidden_OptionalNestedMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOptionalForeignMessage() *ForeignMessage {
+	if x != nil {
+		return x.xxx_hidden_OptionalForeignMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOptionalImportMessage() *ImportMessage {
+	if x != nil {
+		return x.xxx_hidden_OptionalImportMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOptionalNestedEnum() TestAllTypes_NestedEnum {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[1]), 39) {
+			return x.xxx_hidden_OptionalNestedEnum
+		}
+	}
+	return TestAllTypes_FOO
+}
+
+func (x *TestAllTypes) GetOptionalForeignEnum() ForeignEnum {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[1]), 40) {
+			return x.xxx_hidden_OptionalForeignEnum
+		}
+	}
+	return ForeignEnum_FOREIGN_ZERO
+}
+
+func (x *TestAllTypes) GetOptionalImportEnum() ImportEnum {
+	if x != nil {
+		if protoimpl.X.Present(&(x.XXX_presence[1]), 41) {
+			return x.xxx_hidden_OptionalImportEnum
+		}
+	}
+	return ImportEnum_IMPORT_ZERO
+}
+
+func (x *TestAllTypes) GetRepeatedInt32() []int32 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedInt32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedInt64() []int64 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedInt64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedUint32() []uint32 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedUint32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedUint64() []uint64 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedUint64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedSint32() []int32 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedSint32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedSint64() []int64 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedSint64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedFixed32() []uint32 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedFixed32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedFixed64() []uint64 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedFixed64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedSfixed32() []int32 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedSfixed32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedSfixed64() []int64 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedSfixed64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedFloat() []float32 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedFloat
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedDouble() []float64 {
+	if x != nil {
+		return x.xxx_hidden_RepeatedDouble
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedBool() []bool {
+	if x != nil {
+		return x.xxx_hidden_RepeatedBool
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedString() []string {
+	if x != nil {
+		return x.xxx_hidden_RepeatedString
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedBytes() [][]byte {
+	if x != nil {
+		return x.xxx_hidden_RepeatedBytes
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedNestedMessage() []*TestAllTypes_NestedMessage {
+	if x != nil {
+		if x.xxx_hidden_RepeatedNestedMessage != nil {
+			return *x.xxx_hidden_RepeatedNestedMessage
+		}
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedForeignMessage() []*ForeignMessage {
+	if x != nil {
+		if x.xxx_hidden_RepeatedForeignMessage != nil {
+			return *x.xxx_hidden_RepeatedForeignMessage
+		}
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedImportmessage() []*ImportMessage {
+	if x != nil {
+		if x.xxx_hidden_RepeatedImportmessage != nil {
+			return *x.xxx_hidden_RepeatedImportmessage
+		}
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedNestedEnum() []TestAllTypes_NestedEnum {
+	if x != nil {
+		return x.xxx_hidden_RepeatedNestedEnum
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedForeignEnum() []ForeignEnum {
+	if x != nil {
+		return x.xxx_hidden_RepeatedForeignEnum
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetRepeatedImportenum() []ImportEnum {
+	if x != nil {
+		return x.xxx_hidden_RepeatedImportenum
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapInt32Int32() map[int32]int32 {
+	if x != nil {
+		return x.xxx_hidden_MapInt32Int32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapInt64Int64() map[int64]int64 {
+	if x != nil {
+		return x.xxx_hidden_MapInt64Int64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapUint32Uint32() map[uint32]uint32 {
+	if x != nil {
+		return x.xxx_hidden_MapUint32Uint32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapUint64Uint64() map[uint64]uint64 {
+	if x != nil {
+		return x.xxx_hidden_MapUint64Uint64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapSint32Sint32() map[int32]int32 {
+	if x != nil {
+		return x.xxx_hidden_MapSint32Sint32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapSint64Sint64() map[int64]int64 {
+	if x != nil {
+		return x.xxx_hidden_MapSint64Sint64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapFixed32Fixed32() map[uint32]uint32 {
+	if x != nil {
+		return x.xxx_hidden_MapFixed32Fixed32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapFixed64Fixed64() map[uint64]uint64 {
+	if x != nil {
+		return x.xxx_hidden_MapFixed64Fixed64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapSfixed32Sfixed32() map[int32]int32 {
+	if x != nil {
+		return x.xxx_hidden_MapSfixed32Sfixed32
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapSfixed64Sfixed64() map[int64]int64 {
+	if x != nil {
+		return x.xxx_hidden_MapSfixed64Sfixed64
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapInt32Float() map[int32]float32 {
+	if x != nil {
+		return x.xxx_hidden_MapInt32Float
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapInt32Double() map[int32]float64 {
+	if x != nil {
+		return x.xxx_hidden_MapInt32Double
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapBoolBool() map[bool]bool {
+	if x != nil {
+		return x.xxx_hidden_MapBoolBool
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapStringString() map[string]string {
+	if x != nil {
+		return x.xxx_hidden_MapStringString
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapStringBytes() map[string][]byte {
+	if x != nil {
+		return x.xxx_hidden_MapStringBytes
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapStringNestedMessage() map[string]*TestAllTypes_NestedMessage {
+	if x != nil {
+		return x.xxx_hidden_MapStringNestedMessage
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetMapStringNestedEnum() map[string]TestAllTypes_NestedEnum {
+	if x != nil {
+		return x.xxx_hidden_MapStringNestedEnum
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOneofUint32() uint32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofUint32); ok {
+			return x.OneofUint32
+		}
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOneofNestedMessage() *TestAllTypes_NestedMessage {
+	if x != nil {
+		if x, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofNestedMessage); ok {
+			return x.OneofNestedMessage
+		}
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOneofString() string {
+	if x != nil {
+		if x, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofString); ok {
+			return x.OneofString
+		}
+	}
+	return ""
+}
+
+func (x *TestAllTypes) GetOneofBytes() []byte {
+	if x != nil {
+		if x, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofBytes); ok {
+			return x.OneofBytes
+		}
+	}
+	return nil
+}
+
+func (x *TestAllTypes) GetOneofBool() bool {
+	if x != nil {
+		if x, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofBool); ok {
+			return x.OneofBool
+		}
+	}
+	return false
+}
+
+func (x *TestAllTypes) GetOneofUint64() uint64 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofUint64); ok {
+			return x.OneofUint64
+		}
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOneofFloat() float32 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofFloat); ok {
+			return x.OneofFloat
+		}
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOneofDouble() float64 {
+	if x != nil {
+		if x, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofDouble); ok {
+			return x.OneofDouble
+		}
+	}
+	return 0
+}
+
+func (x *TestAllTypes) GetOneofEnum() TestAllTypes_NestedEnum {
+	if x != nil {
+		if x, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofEnum); ok {
+			return x.OneofEnum
+		}
+	}
+	return TestAllTypes_FOO
+}
+
+func (x *TestAllTypes) SetSingularInt32(v int32) {
+	x.xxx_hidden_SingularInt32 = v
+}
+
+func (x *TestAllTypes) SetSingularInt64(v int64) {
+	x.xxx_hidden_SingularInt64 = v
+}
+
+func (x *TestAllTypes) SetSingularUint32(v uint32) {
+	x.xxx_hidden_SingularUint32 = v
+}
+
+func (x *TestAllTypes) SetSingularUint64(v uint64) {
+	x.xxx_hidden_SingularUint64 = v
+}
+
+func (x *TestAllTypes) SetSingularSint32(v int32) {
+	x.xxx_hidden_SingularSint32 = v
+}
+
+func (x *TestAllTypes) SetSingularSint64(v int64) {
+	x.xxx_hidden_SingularSint64 = v
+}
+
+func (x *TestAllTypes) SetSingularFixed32(v uint32) {
+	x.xxx_hidden_SingularFixed32 = v
+}
+
+func (x *TestAllTypes) SetSingularFixed64(v uint64) {
+	x.xxx_hidden_SingularFixed64 = v
+}
+
+func (x *TestAllTypes) SetSingularSfixed32(v int32) {
+	x.xxx_hidden_SingularSfixed32 = v
+}
+
+func (x *TestAllTypes) SetSingularSfixed64(v int64) {
+	x.xxx_hidden_SingularSfixed64 = v
+}
+
+func (x *TestAllTypes) SetSingularFloat(v float32) {
+	x.xxx_hidden_SingularFloat = v
+}
+
+func (x *TestAllTypes) SetSingularDouble(v float64) {
+	x.xxx_hidden_SingularDouble = v
+}
+
+func (x *TestAllTypes) SetSingularBool(v bool) {
+	x.xxx_hidden_SingularBool = v
+}
+
+func (x *TestAllTypes) SetSingularString(v string) {
+	x.xxx_hidden_SingularString = v
+}
+
+func (x *TestAllTypes) SetSingularBytes(v []byte) {
+	if v == nil {
+		v = []byte{}
+	}
+	x.xxx_hidden_SingularBytes = v
+}
+
+func (x *TestAllTypes) SetSingularNestedMessage(v *TestAllTypes_NestedMessage) {
+	x.xxx_hidden_SingularNestedMessage = v
+}
+
+func (x *TestAllTypes) SetSingularForeignMessage(v *ForeignMessage) {
+	x.xxx_hidden_SingularForeignMessage = v
+}
+
+func (x *TestAllTypes) SetSingularImportMessage(v *ImportMessage) {
+	x.xxx_hidden_SingularImportMessage = v
+}
+
+func (x *TestAllTypes) SetSingularNestedEnum(v TestAllTypes_NestedEnum) {
+	x.xxx_hidden_SingularNestedEnum = v
+}
+
+func (x *TestAllTypes) SetSingularForeignEnum(v ForeignEnum) {
+	x.xxx_hidden_SingularForeignEnum = v
+}
+
+func (x *TestAllTypes) SetSingularImportEnum(v ImportEnum) {
+	x.xxx_hidden_SingularImportEnum = v
+}
+
+func (x *TestAllTypes) SetOptionalInt32(v int32) {
+	x.xxx_hidden_OptionalInt32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 21, 81)
+}
+
+func (x *TestAllTypes) SetOptionalInt64(v int64) {
+	x.xxx_hidden_OptionalInt64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 22, 81)
+}
+
+func (x *TestAllTypes) SetOptionalUint32(v uint32) {
+	x.xxx_hidden_OptionalUint32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 23, 81)
+}
+
+func (x *TestAllTypes) SetOptionalUint64(v uint64) {
+	x.xxx_hidden_OptionalUint64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 24, 81)
+}
+
+func (x *TestAllTypes) SetOptionalSint32(v int32) {
+	x.xxx_hidden_OptionalSint32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 25, 81)
+}
+
+func (x *TestAllTypes) SetOptionalSint64(v int64) {
+	x.xxx_hidden_OptionalSint64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 26, 81)
+}
+
+func (x *TestAllTypes) SetOptionalFixed32(v uint32) {
+	x.xxx_hidden_OptionalFixed32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 27, 81)
+}
+
+func (x *TestAllTypes) SetOptionalFixed64(v uint64) {
+	x.xxx_hidden_OptionalFixed64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 28, 81)
+}
+
+func (x *TestAllTypes) SetOptionalSfixed32(v int32) {
+	x.xxx_hidden_OptionalSfixed32 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 29, 81)
+}
+
+func (x *TestAllTypes) SetOptionalSfixed64(v int64) {
+	x.xxx_hidden_OptionalSfixed64 = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 30, 81)
+}
+
+func (x *TestAllTypes) SetOptionalFloat(v float32) {
+	x.xxx_hidden_OptionalFloat = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 31, 81)
+}
+
+func (x *TestAllTypes) SetOptionalDouble(v float64) {
+	x.xxx_hidden_OptionalDouble = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[1]), 32, 81)
+}
+
+func (x *TestAllTypes) SetOptionalBool(v bool) {
+	x.xxx_hidden_OptionalBool = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[1]), 33, 81)
+}
+
+func (x *TestAllTypes) SetOptionalString(v string) {
+	x.xxx_hidden_OptionalString = &v
+	protoimpl.X.SetPresent(&(x.XXX_presence[1]), 34, 81)
+}
+
+func (x *TestAllTypes) SetOptionalBytes(v []byte) {
+	if v == nil {
+		v = []byte{}
+	}
+	x.xxx_hidden_OptionalBytes = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[1]), 35, 81)
+}
+
+func (x *TestAllTypes) SetOptionalNestedMessage(v *TestAllTypes_NestedMessage) {
+	x.xxx_hidden_OptionalNestedMessage = v
+}
+
+func (x *TestAllTypes) SetOptionalForeignMessage(v *ForeignMessage) {
+	x.xxx_hidden_OptionalForeignMessage = v
+}
+
+func (x *TestAllTypes) SetOptionalImportMessage(v *ImportMessage) {
+	x.xxx_hidden_OptionalImportMessage = v
+}
+
+func (x *TestAllTypes) SetOptionalNestedEnum(v TestAllTypes_NestedEnum) {
+	x.xxx_hidden_OptionalNestedEnum = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[1]), 39, 81)
+}
+
+func (x *TestAllTypes) SetOptionalForeignEnum(v ForeignEnum) {
+	x.xxx_hidden_OptionalForeignEnum = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[1]), 40, 81)
+}
+
+func (x *TestAllTypes) SetOptionalImportEnum(v ImportEnum) {
+	x.xxx_hidden_OptionalImportEnum = v
+	protoimpl.X.SetPresent(&(x.XXX_presence[1]), 41, 81)
+}
+
+func (x *TestAllTypes) SetRepeatedInt32(v []int32) {
+	x.xxx_hidden_RepeatedInt32 = v
+}
+
+func (x *TestAllTypes) SetRepeatedInt64(v []int64) {
+	x.xxx_hidden_RepeatedInt64 = v
+}
+
+func (x *TestAllTypes) SetRepeatedUint32(v []uint32) {
+	x.xxx_hidden_RepeatedUint32 = v
+}
+
+func (x *TestAllTypes) SetRepeatedUint64(v []uint64) {
+	x.xxx_hidden_RepeatedUint64 = v
+}
+
+func (x *TestAllTypes) SetRepeatedSint32(v []int32) {
+	x.xxx_hidden_RepeatedSint32 = v
+}
+
+func (x *TestAllTypes) SetRepeatedSint64(v []int64) {
+	x.xxx_hidden_RepeatedSint64 = v
+}
+
+func (x *TestAllTypes) SetRepeatedFixed32(v []uint32) {
+	x.xxx_hidden_RepeatedFixed32 = v
+}
+
+func (x *TestAllTypes) SetRepeatedFixed64(v []uint64) {
+	x.xxx_hidden_RepeatedFixed64 = v
+}
+
+func (x *TestAllTypes) SetRepeatedSfixed32(v []int32) {
+	x.xxx_hidden_RepeatedSfixed32 = v
+}
+
+func (x *TestAllTypes) SetRepeatedSfixed64(v []int64) {
+	x.xxx_hidden_RepeatedSfixed64 = v
+}
+
+func (x *TestAllTypes) SetRepeatedFloat(v []float32) {
+	x.xxx_hidden_RepeatedFloat = v
+}
+
+func (x *TestAllTypes) SetRepeatedDouble(v []float64) {
+	x.xxx_hidden_RepeatedDouble = v
+}
+
+func (x *TestAllTypes) SetRepeatedBool(v []bool) {
+	x.xxx_hidden_RepeatedBool = v
+}
+
+func (x *TestAllTypes) SetRepeatedString(v []string) {
+	x.xxx_hidden_RepeatedString = v
+}
+
+func (x *TestAllTypes) SetRepeatedBytes(v [][]byte) {
+	x.xxx_hidden_RepeatedBytes = v
+}
+
+func (x *TestAllTypes) SetRepeatedNestedMessage(v []*TestAllTypes_NestedMessage) {
+	x.xxx_hidden_RepeatedNestedMessage = &v
+}
+
+func (x *TestAllTypes) SetRepeatedForeignMessage(v []*ForeignMessage) {
+	x.xxx_hidden_RepeatedForeignMessage = &v
+}
+
+func (x *TestAllTypes) SetRepeatedImportmessage(v []*ImportMessage) {
+	x.xxx_hidden_RepeatedImportmessage = &v
+}
+
+func (x *TestAllTypes) SetRepeatedNestedEnum(v []TestAllTypes_NestedEnum) {
+	x.xxx_hidden_RepeatedNestedEnum = v
+}
+
+func (x *TestAllTypes) SetRepeatedForeignEnum(v []ForeignEnum) {
+	x.xxx_hidden_RepeatedForeignEnum = v
+}
+
+func (x *TestAllTypes) SetRepeatedImportenum(v []ImportEnum) {
+	x.xxx_hidden_RepeatedImportenum = v
+}
+
+func (x *TestAllTypes) SetMapInt32Int32(v map[int32]int32) {
+	x.xxx_hidden_MapInt32Int32 = v
+}
+
+func (x *TestAllTypes) SetMapInt64Int64(v map[int64]int64) {
+	x.xxx_hidden_MapInt64Int64 = v
+}
+
+func (x *TestAllTypes) SetMapUint32Uint32(v map[uint32]uint32) {
+	x.xxx_hidden_MapUint32Uint32 = v
+}
+
+func (x *TestAllTypes) SetMapUint64Uint64(v map[uint64]uint64) {
+	x.xxx_hidden_MapUint64Uint64 = v
+}
+
+func (x *TestAllTypes) SetMapSint32Sint32(v map[int32]int32) {
+	x.xxx_hidden_MapSint32Sint32 = v
+}
+
+func (x *TestAllTypes) SetMapSint64Sint64(v map[int64]int64) {
+	x.xxx_hidden_MapSint64Sint64 = v
+}
+
+func (x *TestAllTypes) SetMapFixed32Fixed32(v map[uint32]uint32) {
+	x.xxx_hidden_MapFixed32Fixed32 = v
+}
+
+func (x *TestAllTypes) SetMapFixed64Fixed64(v map[uint64]uint64) {
+	x.xxx_hidden_MapFixed64Fixed64 = v
+}
+
+func (x *TestAllTypes) SetMapSfixed32Sfixed32(v map[int32]int32) {
+	x.xxx_hidden_MapSfixed32Sfixed32 = v
+}
+
+func (x *TestAllTypes) SetMapSfixed64Sfixed64(v map[int64]int64) {
+	x.xxx_hidden_MapSfixed64Sfixed64 = v
+}
+
+func (x *TestAllTypes) SetMapInt32Float(v map[int32]float32) {
+	x.xxx_hidden_MapInt32Float = v
+}
+
+func (x *TestAllTypes) SetMapInt32Double(v map[int32]float64) {
+	x.xxx_hidden_MapInt32Double = v
+}
+
+func (x *TestAllTypes) SetMapBoolBool(v map[bool]bool) {
+	x.xxx_hidden_MapBoolBool = v
+}
+
+func (x *TestAllTypes) SetMapStringString(v map[string]string) {
+	x.xxx_hidden_MapStringString = v
+}
+
+func (x *TestAllTypes) SetMapStringBytes(v map[string][]byte) {
+	x.xxx_hidden_MapStringBytes = v
+}
+
+func (x *TestAllTypes) SetMapStringNestedMessage(v map[string]*TestAllTypes_NestedMessage) {
+	x.xxx_hidden_MapStringNestedMessage = v
+}
+
+func (x *TestAllTypes) SetMapStringNestedEnum(v map[string]TestAllTypes_NestedEnum) {
+	x.xxx_hidden_MapStringNestedEnum = v
+}
+
+func (x *TestAllTypes) SetOneofUint32(v uint32) {
+	x.xxx_hidden_OneofField = &testAllTypes_OneofUint32{v}
+}
+
+func (x *TestAllTypes) SetOneofNestedMessage(v *TestAllTypes_NestedMessage) {
+	if v == nil {
+		x.xxx_hidden_OneofField = nil
+		return
+	}
+	x.xxx_hidden_OneofField = &testAllTypes_OneofNestedMessage{v}
+}
+
+func (x *TestAllTypes) SetOneofString(v string) {
+	x.xxx_hidden_OneofField = &testAllTypes_OneofString{v}
+}
+
+func (x *TestAllTypes) SetOneofBytes(v []byte) {
+	if v == nil {
+		v = []byte{}
+	}
+	x.xxx_hidden_OneofField = &testAllTypes_OneofBytes{v}
+}
+
+func (x *TestAllTypes) SetOneofBool(v bool) {
+	x.xxx_hidden_OneofField = &testAllTypes_OneofBool{v}
+}
+
+func (x *TestAllTypes) SetOneofUint64(v uint64) {
+	x.xxx_hidden_OneofField = &testAllTypes_OneofUint64{v}
+}
+
+func (x *TestAllTypes) SetOneofFloat(v float32) {
+	x.xxx_hidden_OneofField = &testAllTypes_OneofFloat{v}
+}
+
+func (x *TestAllTypes) SetOneofDouble(v float64) {
+	x.xxx_hidden_OneofField = &testAllTypes_OneofDouble{v}
+}
+
+func (x *TestAllTypes) SetOneofEnum(v TestAllTypes_NestedEnum) {
+	x.xxx_hidden_OneofField = &testAllTypes_OneofEnum{v}
+}
+
+func (x *TestAllTypes) HasSingularNestedMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_SingularNestedMessage != nil
+}
+
+func (x *TestAllTypes) HasSingularForeignMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_SingularForeignMessage != nil
+}
+
+func (x *TestAllTypes) HasSingularImportMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_SingularImportMessage != nil
+}
+
+func (x *TestAllTypes) HasOptionalInt32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 21)
+}
+
+func (x *TestAllTypes) HasOptionalInt64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 22)
+}
+
+func (x *TestAllTypes) HasOptionalUint32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 23)
+}
+
+func (x *TestAllTypes) HasOptionalUint64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 24)
+}
+
+func (x *TestAllTypes) HasOptionalSint32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 25)
+}
+
+func (x *TestAllTypes) HasOptionalSint64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 26)
+}
+
+func (x *TestAllTypes) HasOptionalFixed32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 27)
+}
+
+func (x *TestAllTypes) HasOptionalFixed64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 28)
+}
+
+func (x *TestAllTypes) HasOptionalSfixed32() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 29)
+}
+
+func (x *TestAllTypes) HasOptionalSfixed64() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 30)
+}
+
+func (x *TestAllTypes) HasOptionalFloat() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[0]), 31)
+}
+
+func (x *TestAllTypes) HasOptionalDouble() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[1]), 32)
+}
+
+func (x *TestAllTypes) HasOptionalBool() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[1]), 33)
+}
+
+func (x *TestAllTypes) HasOptionalString() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[1]), 34)
+}
+
+func (x *TestAllTypes) HasOptionalBytes() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[1]), 35)
+}
+
+func (x *TestAllTypes) HasOptionalNestedMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptionalNestedMessage != nil
+}
+
+func (x *TestAllTypes) HasOptionalForeignMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptionalForeignMessage != nil
+}
+
+func (x *TestAllTypes) HasOptionalImportMessage() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OptionalImportMessage != nil
+}
+
+func (x *TestAllTypes) HasOptionalNestedEnum() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[1]), 39)
+}
+
+func (x *TestAllTypes) HasOptionalForeignEnum() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[1]), 40)
+}
+
+func (x *TestAllTypes) HasOptionalImportEnum() bool {
+	if x == nil {
+		return false
+	}
+	return protoimpl.X.Present(&(x.XXX_presence[1]), 41)
+}
+
+func (x *TestAllTypes) HasOneofField() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_OneofField != nil
+}
+
+func (x *TestAllTypes) HasOneofUint32() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofUint32)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofNestedMessage() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofNestedMessage)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofString() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofString)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofBytes() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofBytes)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofBool() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofBool)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofUint64() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofUint64)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofFloat() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofFloat)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofDouble() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofDouble)
+	return ok
+}
+
+func (x *TestAllTypes) HasOneofEnum() bool {
+	if x == nil {
+		return false
+	}
+	_, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofEnum)
+	return ok
+}
+
+func (x *TestAllTypes) ClearSingularNestedMessage() {
+	x.xxx_hidden_SingularNestedMessage = nil
+}
+
+func (x *TestAllTypes) ClearSingularForeignMessage() {
+	x.xxx_hidden_SingularForeignMessage = nil
+}
+
+func (x *TestAllTypes) ClearSingularImportMessage() {
+	x.xxx_hidden_SingularImportMessage = nil
+}
+
+func (x *TestAllTypes) ClearOptionalInt32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 21)
+	x.xxx_hidden_OptionalInt32 = 0
+}
+
+func (x *TestAllTypes) ClearOptionalInt64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 22)
+	x.xxx_hidden_OptionalInt64 = 0
+}
+
+func (x *TestAllTypes) ClearOptionalUint32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 23)
+	x.xxx_hidden_OptionalUint32 = 0
+}
+
+func (x *TestAllTypes) ClearOptionalUint64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 24)
+	x.xxx_hidden_OptionalUint64 = 0
+}
+
+func (x *TestAllTypes) ClearOptionalSint32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 25)
+	x.xxx_hidden_OptionalSint32 = 0
+}
+
+func (x *TestAllTypes) ClearOptionalSint64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 26)
+	x.xxx_hidden_OptionalSint64 = 0
+}
+
+func (x *TestAllTypes) ClearOptionalFixed32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 27)
+	x.xxx_hidden_OptionalFixed32 = 0
+}
+
+func (x *TestAllTypes) ClearOptionalFixed64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 28)
+	x.xxx_hidden_OptionalFixed64 = 0
+}
+
+func (x *TestAllTypes) ClearOptionalSfixed32() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 29)
+	x.xxx_hidden_OptionalSfixed32 = 0
+}
+
+func (x *TestAllTypes) ClearOptionalSfixed64() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 30)
+	x.xxx_hidden_OptionalSfixed64 = 0
+}
+
+func (x *TestAllTypes) ClearOptionalFloat() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 31)
+	x.xxx_hidden_OptionalFloat = 0
+}
+
+func (x *TestAllTypes) ClearOptionalDouble() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[1]), 32)
+	x.xxx_hidden_OptionalDouble = 0
+}
+
+func (x *TestAllTypes) ClearOptionalBool() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[1]), 33)
+	x.xxx_hidden_OptionalBool = false
+}
+
+func (x *TestAllTypes) ClearOptionalString() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[1]), 34)
+	x.xxx_hidden_OptionalString = nil
+}
+
+func (x *TestAllTypes) ClearOptionalBytes() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[1]), 35)
+	x.xxx_hidden_OptionalBytes = nil
+}
+
+func (x *TestAllTypes) ClearOptionalNestedMessage() {
+	x.xxx_hidden_OptionalNestedMessage = nil
+}
+
+func (x *TestAllTypes) ClearOptionalForeignMessage() {
+	x.xxx_hidden_OptionalForeignMessage = nil
+}
+
+func (x *TestAllTypes) ClearOptionalImportMessage() {
+	x.xxx_hidden_OptionalImportMessage = nil
+}
+
+func (x *TestAllTypes) ClearOptionalNestedEnum() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[1]), 39)
+	x.xxx_hidden_OptionalNestedEnum = TestAllTypes_FOO
+}
+
+func (x *TestAllTypes) ClearOptionalForeignEnum() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[1]), 40)
+	x.xxx_hidden_OptionalForeignEnum = ForeignEnum_FOREIGN_ZERO
+}
+
+func (x *TestAllTypes) ClearOptionalImportEnum() {
+	protoimpl.X.ClearPresent(&(x.XXX_presence[1]), 41)
+	x.xxx_hidden_OptionalImportEnum = ImportEnum_IMPORT_ZERO
+}
+
+func (x *TestAllTypes) ClearOneofField() {
+	x.xxx_hidden_OneofField = nil
+}
+
+func (x *TestAllTypes) ClearOneofUint32() {
+	if _, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofUint32); ok {
+		x.xxx_hidden_OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofNestedMessage() {
+	if _, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofNestedMessage); ok {
+		x.xxx_hidden_OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofString() {
+	if _, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofString); ok {
+		x.xxx_hidden_OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofBytes() {
+	if _, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofBytes); ok {
+		x.xxx_hidden_OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofBool() {
+	if _, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofBool); ok {
+		x.xxx_hidden_OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofUint64() {
+	if _, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofUint64); ok {
+		x.xxx_hidden_OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofFloat() {
+	if _, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofFloat); ok {
+		x.xxx_hidden_OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofDouble() {
+	if _, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofDouble); ok {
+		x.xxx_hidden_OneofField = nil
+	}
+}
+
+func (x *TestAllTypes) ClearOneofEnum() {
+	if _, ok := x.xxx_hidden_OneofField.(*testAllTypes_OneofEnum); ok {
+		x.xxx_hidden_OneofField = nil
+	}
+}
+
+const TestAllTypes_OneofField_not_set_case case_TestAllTypes_OneofField = 0
+const TestAllTypes_OneofUint32_case case_TestAllTypes_OneofField = 111
+const TestAllTypes_OneofNestedMessage_case case_TestAllTypes_OneofField = 112
+const TestAllTypes_OneofString_case case_TestAllTypes_OneofField = 113
+const TestAllTypes_OneofBytes_case case_TestAllTypes_OneofField = 114
+const TestAllTypes_OneofBool_case case_TestAllTypes_OneofField = 115
+const TestAllTypes_OneofUint64_case case_TestAllTypes_OneofField = 116
+const TestAllTypes_OneofFloat_case case_TestAllTypes_OneofField = 117
+const TestAllTypes_OneofDouble_case case_TestAllTypes_OneofField = 118
+const TestAllTypes_OneofEnum_case case_TestAllTypes_OneofField = 119
+
+func (x *TestAllTypes) WhichOneofField() case_TestAllTypes_OneofField {
+	if x == nil {
+		return TestAllTypes_OneofField_not_set_case
+	}
+	switch x.xxx_hidden_OneofField.(type) {
+	case *testAllTypes_OneofUint32:
+		return TestAllTypes_OneofUint32_case
+	case *testAllTypes_OneofNestedMessage:
+		return TestAllTypes_OneofNestedMessage_case
+	case *testAllTypes_OneofString:
+		return TestAllTypes_OneofString_case
+	case *testAllTypes_OneofBytes:
+		return TestAllTypes_OneofBytes_case
+	case *testAllTypes_OneofBool:
+		return TestAllTypes_OneofBool_case
+	case *testAllTypes_OneofUint64:
+		return TestAllTypes_OneofUint64_case
+	case *testAllTypes_OneofFloat:
+		return TestAllTypes_OneofFloat_case
+	case *testAllTypes_OneofDouble:
+		return TestAllTypes_OneofDouble_case
+	case *testAllTypes_OneofEnum:
+		return TestAllTypes_OneofEnum_case
+	default:
+		return TestAllTypes_OneofField_not_set_case
+	}
+}
+
+type TestAllTypes_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	SingularInt32          int32
+	SingularInt64          int64
+	SingularUint32         uint32
+	SingularUint64         uint64
+	SingularSint32         int32
+	SingularSint64         int64
+	SingularFixed32        uint32
+	SingularFixed64        uint64
+	SingularSfixed32       int32
+	SingularSfixed64       int64
+	SingularFloat          float32
+	SingularDouble         float64
+	SingularBool           bool
+	SingularString         string
+	SingularBytes          []byte
+	SingularNestedMessage  *TestAllTypes_NestedMessage
+	SingularForeignMessage *ForeignMessage
+	SingularImportMessage  *ImportMessage
+	SingularNestedEnum     TestAllTypes_NestedEnum
+	SingularForeignEnum    ForeignEnum
+	SingularImportEnum     ImportEnum
+	OptionalInt32          *int32
+	OptionalInt64          *int64
+	OptionalUint32         *uint32
+	OptionalUint64         *uint64
+	OptionalSint32         *int32
+	OptionalSint64         *int64
+	OptionalFixed32        *uint32
+	OptionalFixed64        *uint64
+	OptionalSfixed32       *int32
+	OptionalSfixed64       *int64
+	OptionalFloat          *float32
+	OptionalDouble         *float64
+	OptionalBool           *bool
+	OptionalString         *string
+	OptionalBytes          []byte
+	OptionalNestedMessage  *TestAllTypes_NestedMessage
+	OptionalForeignMessage *ForeignMessage
+	OptionalImportMessage  *ImportMessage
+	OptionalNestedEnum     *TestAllTypes_NestedEnum
+	OptionalForeignEnum    *ForeignEnum
+	OptionalImportEnum     *ImportEnum
+	RepeatedInt32          []int32
+	RepeatedInt64          []int64
+	RepeatedUint32         []uint32
+	RepeatedUint64         []uint64
+	RepeatedSint32         []int32
+	RepeatedSint64         []int64
+	RepeatedFixed32        []uint32
+	RepeatedFixed64        []uint64
+	RepeatedSfixed32       []int32
+	RepeatedSfixed64       []int64
+	RepeatedFloat          []float32
+	RepeatedDouble         []float64
+	RepeatedBool           []bool
+	RepeatedString         []string
+	RepeatedBytes          [][]byte
+	RepeatedNestedMessage  []*TestAllTypes_NestedMessage
+	RepeatedForeignMessage []*ForeignMessage
+	RepeatedImportmessage  []*ImportMessage
+	RepeatedNestedEnum     []TestAllTypes_NestedEnum
+	RepeatedForeignEnum    []ForeignEnum
+	RepeatedImportenum     []ImportEnum
+	MapInt32Int32          map[int32]int32
+	MapInt64Int64          map[int64]int64
+	MapUint32Uint32        map[uint32]uint32
+	MapUint64Uint64        map[uint64]uint64
+	MapSint32Sint32        map[int32]int32
+	MapSint64Sint64        map[int64]int64
+	MapFixed32Fixed32      map[uint32]uint32
+	MapFixed64Fixed64      map[uint64]uint64
+	MapSfixed32Sfixed32    map[int32]int32
+	MapSfixed64Sfixed64    map[int64]int64
+	MapInt32Float          map[int32]float32
+	MapInt32Double         map[int32]float64
+	MapBoolBool            map[bool]bool
+	MapStringString        map[string]string
+	MapStringBytes         map[string][]byte
+	MapStringNestedMessage map[string]*TestAllTypes_NestedMessage
+	MapStringNestedEnum    map[string]TestAllTypes_NestedEnum
+	// Fields of oneof xxx_hidden_OneofField:
+	OneofUint32        *uint32
+	OneofNestedMessage *TestAllTypes_NestedMessage
+	OneofString        *string
+	OneofBytes         []byte
+	OneofBool          *bool
+	OneofUint64        *uint64
+	OneofFloat         *float32
+	OneofDouble        *float64
+	OneofEnum          *TestAllTypes_NestedEnum
+	// -- end of xxx_hidden_OneofField
+}
+
+func (b0 TestAllTypes_builder) Build() *TestAllTypes {
+	m0 := &TestAllTypes{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_SingularInt32 = b.SingularInt32
+	x.xxx_hidden_SingularInt64 = b.SingularInt64
+	x.xxx_hidden_SingularUint32 = b.SingularUint32
+	x.xxx_hidden_SingularUint64 = b.SingularUint64
+	x.xxx_hidden_SingularSint32 = b.SingularSint32
+	x.xxx_hidden_SingularSint64 = b.SingularSint64
+	x.xxx_hidden_SingularFixed32 = b.SingularFixed32
+	x.xxx_hidden_SingularFixed64 = b.SingularFixed64
+	x.xxx_hidden_SingularSfixed32 = b.SingularSfixed32
+	x.xxx_hidden_SingularSfixed64 = b.SingularSfixed64
+	x.xxx_hidden_SingularFloat = b.SingularFloat
+	x.xxx_hidden_SingularDouble = b.SingularDouble
+	x.xxx_hidden_SingularBool = b.SingularBool
+	x.xxx_hidden_SingularString = b.SingularString
+	x.xxx_hidden_SingularBytes = b.SingularBytes
+	x.xxx_hidden_SingularNestedMessage = b.SingularNestedMessage
+	x.xxx_hidden_SingularForeignMessage = b.SingularForeignMessage
+	x.xxx_hidden_SingularImportMessage = b.SingularImportMessage
+	x.xxx_hidden_SingularNestedEnum = b.SingularNestedEnum
+	x.xxx_hidden_SingularForeignEnum = b.SingularForeignEnum
+	x.xxx_hidden_SingularImportEnum = b.SingularImportEnum
+	if b.OptionalInt32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 21, 81)
+		x.xxx_hidden_OptionalInt32 = *b.OptionalInt32
+	}
+	if b.OptionalInt64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 22, 81)
+		x.xxx_hidden_OptionalInt64 = *b.OptionalInt64
+	}
+	if b.OptionalUint32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 23, 81)
+		x.xxx_hidden_OptionalUint32 = *b.OptionalUint32
+	}
+	if b.OptionalUint64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 24, 81)
+		x.xxx_hidden_OptionalUint64 = *b.OptionalUint64
+	}
+	if b.OptionalSint32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 25, 81)
+		x.xxx_hidden_OptionalSint32 = *b.OptionalSint32
+	}
+	if b.OptionalSint64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 26, 81)
+		x.xxx_hidden_OptionalSint64 = *b.OptionalSint64
+	}
+	if b.OptionalFixed32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 27, 81)
+		x.xxx_hidden_OptionalFixed32 = *b.OptionalFixed32
+	}
+	if b.OptionalFixed64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 28, 81)
+		x.xxx_hidden_OptionalFixed64 = *b.OptionalFixed64
+	}
+	if b.OptionalSfixed32 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 29, 81)
+		x.xxx_hidden_OptionalSfixed32 = *b.OptionalSfixed32
+	}
+	if b.OptionalSfixed64 != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 30, 81)
+		x.xxx_hidden_OptionalSfixed64 = *b.OptionalSfixed64
+	}
+	if b.OptionalFloat != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 31, 81)
+		x.xxx_hidden_OptionalFloat = *b.OptionalFloat
+	}
+	if b.OptionalDouble != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[1]), 32, 81)
+		x.xxx_hidden_OptionalDouble = *b.OptionalDouble
+	}
+	if b.OptionalBool != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[1]), 33, 81)
+		x.xxx_hidden_OptionalBool = *b.OptionalBool
+	}
+	if b.OptionalString != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[1]), 34, 81)
+		x.xxx_hidden_OptionalString = b.OptionalString
+	}
+	if b.OptionalBytes != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[1]), 35, 81)
+		x.xxx_hidden_OptionalBytes = b.OptionalBytes
+	}
+	x.xxx_hidden_OptionalNestedMessage = b.OptionalNestedMessage
+	x.xxx_hidden_OptionalForeignMessage = b.OptionalForeignMessage
+	x.xxx_hidden_OptionalImportMessage = b.OptionalImportMessage
+	if b.OptionalNestedEnum != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[1]), 39, 81)
+		x.xxx_hidden_OptionalNestedEnum = *b.OptionalNestedEnum
+	}
+	if b.OptionalForeignEnum != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[1]), 40, 81)
+		x.xxx_hidden_OptionalForeignEnum = *b.OptionalForeignEnum
+	}
+	if b.OptionalImportEnum != nil {
+		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[1]), 41, 81)
+		x.xxx_hidden_OptionalImportEnum = *b.OptionalImportEnum
+	}
+	x.xxx_hidden_RepeatedInt32 = b.RepeatedInt32
+	x.xxx_hidden_RepeatedInt64 = b.RepeatedInt64
+	x.xxx_hidden_RepeatedUint32 = b.RepeatedUint32
+	x.xxx_hidden_RepeatedUint64 = b.RepeatedUint64
+	x.xxx_hidden_RepeatedSint32 = b.RepeatedSint32
+	x.xxx_hidden_RepeatedSint64 = b.RepeatedSint64
+	x.xxx_hidden_RepeatedFixed32 = b.RepeatedFixed32
+	x.xxx_hidden_RepeatedFixed64 = b.RepeatedFixed64
+	x.xxx_hidden_RepeatedSfixed32 = b.RepeatedSfixed32
+	x.xxx_hidden_RepeatedSfixed64 = b.RepeatedSfixed64
+	x.xxx_hidden_RepeatedFloat = b.RepeatedFloat
+	x.xxx_hidden_RepeatedDouble = b.RepeatedDouble
+	x.xxx_hidden_RepeatedBool = b.RepeatedBool
+	x.xxx_hidden_RepeatedString = b.RepeatedString
+	x.xxx_hidden_RepeatedBytes = b.RepeatedBytes
+	x.xxx_hidden_RepeatedNestedMessage = &b.RepeatedNestedMessage
+	x.xxx_hidden_RepeatedForeignMessage = &b.RepeatedForeignMessage
+	x.xxx_hidden_RepeatedImportmessage = &b.RepeatedImportmessage
+	x.xxx_hidden_RepeatedNestedEnum = b.RepeatedNestedEnum
+	x.xxx_hidden_RepeatedForeignEnum = b.RepeatedForeignEnum
+	x.xxx_hidden_RepeatedImportenum = b.RepeatedImportenum
+	x.xxx_hidden_MapInt32Int32 = b.MapInt32Int32
+	x.xxx_hidden_MapInt64Int64 = b.MapInt64Int64
+	x.xxx_hidden_MapUint32Uint32 = b.MapUint32Uint32
+	x.xxx_hidden_MapUint64Uint64 = b.MapUint64Uint64
+	x.xxx_hidden_MapSint32Sint32 = b.MapSint32Sint32
+	x.xxx_hidden_MapSint64Sint64 = b.MapSint64Sint64
+	x.xxx_hidden_MapFixed32Fixed32 = b.MapFixed32Fixed32
+	x.xxx_hidden_MapFixed64Fixed64 = b.MapFixed64Fixed64
+	x.xxx_hidden_MapSfixed32Sfixed32 = b.MapSfixed32Sfixed32
+	x.xxx_hidden_MapSfixed64Sfixed64 = b.MapSfixed64Sfixed64
+	x.xxx_hidden_MapInt32Float = b.MapInt32Float
+	x.xxx_hidden_MapInt32Double = b.MapInt32Double
+	x.xxx_hidden_MapBoolBool = b.MapBoolBool
+	x.xxx_hidden_MapStringString = b.MapStringString
+	x.xxx_hidden_MapStringBytes = b.MapStringBytes
+	x.xxx_hidden_MapStringNestedMessage = b.MapStringNestedMessage
+	x.xxx_hidden_MapStringNestedEnum = b.MapStringNestedEnum
+	if b.OneofUint32 != nil {
+		x.xxx_hidden_OneofField = &testAllTypes_OneofUint32{*b.OneofUint32}
+	}
+	if b.OneofNestedMessage != nil {
+		x.xxx_hidden_OneofField = &testAllTypes_OneofNestedMessage{b.OneofNestedMessage}
+	}
+	if b.OneofString != nil {
+		x.xxx_hidden_OneofField = &testAllTypes_OneofString{*b.OneofString}
+	}
+	if b.OneofBytes != nil {
+		x.xxx_hidden_OneofField = &testAllTypes_OneofBytes{b.OneofBytes}
+	}
+	if b.OneofBool != nil {
+		x.xxx_hidden_OneofField = &testAllTypes_OneofBool{*b.OneofBool}
+	}
+	if b.OneofUint64 != nil {
+		x.xxx_hidden_OneofField = &testAllTypes_OneofUint64{*b.OneofUint64}
+	}
+	if b.OneofFloat != nil {
+		x.xxx_hidden_OneofField = &testAllTypes_OneofFloat{*b.OneofFloat}
+	}
+	if b.OneofDouble != nil {
+		x.xxx_hidden_OneofField = &testAllTypes_OneofDouble{*b.OneofDouble}
+	}
+	if b.OneofEnum != nil {
+		x.xxx_hidden_OneofField = &testAllTypes_OneofEnum{*b.OneofEnum}
+	}
+	return m0
+}
+
+type case_TestAllTypes_OneofField protoreflect.FieldNumber
+
+func (x case_TestAllTypes_OneofField) String() string {
+	md := file_internal_testprotos_test3_test3_opaque_test_opaque_proto_msgTypes[0].Descriptor()
+	if x == 0 {
+		return "not set"
+	}
+	return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isTestAllTypes_OneofField interface {
+	isTestAllTypes_OneofField()
+}
+
+type testAllTypes_OneofUint32 struct {
+	OneofUint32 uint32 `protobuf:"varint,111,opt,name=oneof_uint32,json=oneofUint32,proto3,oneof"`
+}
+
+type testAllTypes_OneofNestedMessage struct {
+	OneofNestedMessage *TestAllTypes_NestedMessage `protobuf:"bytes,112,opt,name=oneof_nested_message,json=oneofNestedMessage,proto3,oneof"`
+}
+
+type testAllTypes_OneofString struct {
+	OneofString string `protobuf:"bytes,113,opt,name=oneof_string,json=oneofString,proto3,oneof"`
+}
+
+type testAllTypes_OneofBytes struct {
+	OneofBytes []byte `protobuf:"bytes,114,opt,name=oneof_bytes,json=oneofBytes,proto3,oneof"`
+}
+
+type testAllTypes_OneofBool struct {
+	OneofBool bool `protobuf:"varint,115,opt,name=oneof_bool,json=oneofBool,proto3,oneof"`
+}
+
+type testAllTypes_OneofUint64 struct {
+	OneofUint64 uint64 `protobuf:"varint,116,opt,name=oneof_uint64,json=oneofUint64,proto3,oneof"`
+}
+
+type testAllTypes_OneofFloat struct {
+	OneofFloat float32 `protobuf:"fixed32,117,opt,name=oneof_float,json=oneofFloat,proto3,oneof"`
+}
+
+type testAllTypes_OneofDouble struct {
+	OneofDouble float64 `protobuf:"fixed64,118,opt,name=oneof_double,json=oneofDouble,proto3,oneof"`
+}
+
+type testAllTypes_OneofEnum struct {
+	OneofEnum TestAllTypes_NestedEnum `protobuf:"varint,119,opt,name=oneof_enum,json=oneofEnum,proto3,enum=opaque.goproto.proto.test3.TestAllTypes_NestedEnum,oneof"`
+}
+
+func (*testAllTypes_OneofUint32) isTestAllTypes_OneofField() {}
+
+func (*testAllTypes_OneofNestedMessage) isTestAllTypes_OneofField() {}
+
+func (*testAllTypes_OneofString) isTestAllTypes_OneofField() {}
+
+func (*testAllTypes_OneofBytes) isTestAllTypes_OneofField() {}
+
+func (*testAllTypes_OneofBool) isTestAllTypes_OneofField() {}
+
+func (*testAllTypes_OneofUint64) isTestAllTypes_OneofField() {}
+
+func (*testAllTypes_OneofFloat) isTestAllTypes_OneofField() {}
+
+func (*testAllTypes_OneofDouble) isTestAllTypes_OneofField() {}
+
+func (*testAllTypes_OneofEnum) isTestAllTypes_OneofField() {}
+
+type ForeignMessage struct {
+	state         protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_C  int32                  `protobuf:"varint,1,opt,name=c,proto3" json:"c,omitempty"`
+	xxx_hidden_D  int32                  `protobuf:"varint,2,opt,name=d,proto3" json:"d,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *ForeignMessage) Reset() {
+	*x = ForeignMessage{}
+	mi := &file_internal_testprotos_test3_test3_opaque_test_opaque_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ForeignMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ForeignMessage) ProtoMessage() {}
+
+func (x *ForeignMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_test3_test3_opaque_test_opaque_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *ForeignMessage) GetC() int32 {
+	if x != nil {
+		return x.xxx_hidden_C
+	}
+	return 0
+}
+
+func (x *ForeignMessage) GetD() int32 {
+	if x != nil {
+		return x.xxx_hidden_D
+	}
+	return 0
+}
+
+func (x *ForeignMessage) SetC(v int32) {
+	x.xxx_hidden_C = v
+}
+
+func (x *ForeignMessage) SetD(v int32) {
+	x.xxx_hidden_D = v
+}
+
+type ForeignMessage_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	C int32
+	D int32
+}
+
+func (b0 ForeignMessage_builder) Build() *ForeignMessage {
+	m0 := &ForeignMessage{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_C = b.C
+	x.xxx_hidden_D = b.D
+	return m0
+}
+
+type TestAllTypes_NestedMessage struct {
+	state                  protoimpl.MessageState `protogen:"opaque.v1"`
+	xxx_hidden_A           int32                  `protobuf:"varint,1,opt,name=a,proto3" json:"a,omitempty"`
+	xxx_hidden_Corecursive *TestAllTypes          `protobuf:"bytes,2,opt,name=corecursive,proto3" json:"corecursive,omitempty"`
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *TestAllTypes_NestedMessage) Reset() {
+	*x = TestAllTypes_NestedMessage{}
+	mi := &file_internal_testprotos_test3_test3_opaque_test_opaque_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestAllTypes_NestedMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestAllTypes_NestedMessage) ProtoMessage() {}
+
+func (x *TestAllTypes_NestedMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_test3_test3_opaque_test_opaque_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+func (x *TestAllTypes_NestedMessage) GetA() int32 {
+	if x != nil {
+		return x.xxx_hidden_A
+	}
+	return 0
+}
+
+func (x *TestAllTypes_NestedMessage) GetCorecursive() *TestAllTypes {
+	if x != nil {
+		return x.xxx_hidden_Corecursive
+	}
+	return nil
+}
+
+func (x *TestAllTypes_NestedMessage) SetA(v int32) {
+	x.xxx_hidden_A = v
+}
+
+func (x *TestAllTypes_NestedMessage) SetCorecursive(v *TestAllTypes) {
+	x.xxx_hidden_Corecursive = v
+}
+
+func (x *TestAllTypes_NestedMessage) HasCorecursive() bool {
+	if x == nil {
+		return false
+	}
+	return x.xxx_hidden_Corecursive != nil
+}
+
+func (x *TestAllTypes_NestedMessage) ClearCorecursive() {
+	x.xxx_hidden_Corecursive = nil
+}
+
+type TestAllTypes_NestedMessage_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+	A           int32
+	Corecursive *TestAllTypes
+}
+
+func (b0 TestAllTypes_NestedMessage_builder) Build() *TestAllTypes_NestedMessage {
+	m0 := &TestAllTypes_NestedMessage{}
+	b, x := &b0, m0
+	_, _ = b, x
+	x.xxx_hidden_A = b.A
+	x.xxx_hidden_Corecursive = b.Corecursive
+	return m0
+}
+
+var File_internal_testprotos_test3_test3_opaque_test_opaque_proto protoreflect.FileDescriptor
+
+var file_internal_testprotos_test3_test3_opaque_test_opaque_proto_rawDesc = []byte{
+	0x0a, 0x38, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2f, 0x74, 0x65, 0x73, 0x74,
+	0x33, 0x5f, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x6f, 0x70,
+	0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x1a, 0x3f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c,
+	0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74,
+	0x33, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x33, 0x5f, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2f, 0x74,
+	0x65, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75,
+	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa9, 0x3e, 0x0a, 0x0c, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x69, 0x6e, 0x67,
+	0x75, 0x6c, 0x61, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x51, 0x20, 0x01, 0x28, 0x05,
+	0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12,
+	0x25, 0x0a, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x36,
+	0x34, 0x18, 0x52, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61,
+	0x72, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
+	0x61, 0x72, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x53, 0x20, 0x01, 0x28, 0x0d, 0x52,
+	0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12,
+	0x27, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x75, 0x69, 0x6e, 0x74,
+	0x36, 0x34, 0x18, 0x54, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
+	0x61, 0x72, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67,
+	0x75, 0x6c, 0x61, 0x72, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x55, 0x20, 0x01, 0x28,
+	0x11, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x53, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x73, 0x69,
+	0x6e, 0x74, 0x36, 0x34, 0x18, 0x56, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67,
+	0x75, 0x6c, 0x61, 0x72, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x69,
+	0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x57,
+	0x20, 0x01, 0x28, 0x07, 0x52, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x46, 0x69,
+	0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61,
+	0x72, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x58, 0x20, 0x01, 0x28, 0x06, 0x52,
+	0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
+	0x12, 0x2b, 0x0a, 0x11, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x73, 0x66, 0x69,
+	0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x59, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x10, 0x73, 0x69, 0x6e,
+	0x67, 0x75, 0x6c, 0x61, 0x72, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2b, 0x0a,
+	0x11, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x36, 0x34, 0x18, 0x5a, 0x20, 0x01, 0x28, 0x10, 0x52, 0x10, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
+	0x61, 0x72, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x69,
+	0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x5b, 0x20, 0x01,
+	0x28, 0x02, 0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x46, 0x6c, 0x6f, 0x61,
+	0x74, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x64, 0x6f,
+	0x75, 0x62, 0x6c, 0x65, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67,
+	0x75, 0x6c, 0x61, 0x72, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x69,
+	0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x5d, 0x20, 0x01, 0x28,
+	0x08, 0x52, 0x0c, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x42, 0x6f, 0x6f, 0x6c, 0x12,
+	0x27, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x73, 0x74, 0x72, 0x69,
+	0x6e, 0x67, 0x18, 0x5e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
+	0x61, 0x72, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x69, 0x6e, 0x67,
+	0x75, 0x6c, 0x61, 0x72, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x5f, 0x20, 0x01, 0x28, 0x0c,
+	0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12,
+	0x6e, 0x0a, 0x17, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x6e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x62, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x36, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
+	0x61, 0x72, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12,
+	0x64, 0x0a, 0x18, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x66, 0x6f, 0x72, 0x65,
+	0x69, 0x67, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x63, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x46,
+	0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x16, 0x73,
+	0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x61, 0x0a, 0x17, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61,
+	0x72, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x33, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x52, 0x15, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x49, 0x6d, 0x70, 0x6f, 0x72,
+	0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x65, 0x0a, 0x14, 0x73, 0x69, 0x6e, 0x67,
+	0x75, 0x6c, 0x61, 0x72, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d,
+	0x18, 0x65, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12, 0x73, 0x69, 0x6e,
+	0x67, 0x75, 0x6c, 0x61, 0x72, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12,
+	0x5b, 0x0a, 0x15, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x66, 0x6f, 0x72, 0x65,
+	0x69, 0x67, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27,
+	0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x46, 0x6f, 0x72, 0x65,
+	0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x13, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61,
+	0x72, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x58, 0x0a, 0x14,
+	0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f,
+	0x65, 0x6e, 0x75, 0x6d, 0x18, 0x67, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x70, 0x61,
+	0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e,
+	0x75, 0x6d, 0x52, 0x12, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x49, 0x6d, 0x70, 0x6f,
+	0x72, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x2a, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01,
+	0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x88,
+	0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69,
+	0x6e, 0x74, 0x36, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x0d, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x2c,
+	0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x03, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
+	0x6c, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x05, 0x20,
+	0x01, 0x28, 0x11, 0x48, 0x05, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53,
+	0x69, 0x6e, 0x74, 0x33, 0x32, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x06, 0x20, 0x01, 0x28,
+	0x12, 0x48, 0x06, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x07,
+	0x48, 0x07, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, 0x78, 0x65,
+	0x64, 0x33, 0x32, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x08, 0x20, 0x01, 0x28, 0x06,
+	0x48, 0x08, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, 0x78, 0x65,
+	0x64, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28,
+	0x0f, 0x48, 0x09, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x66, 0x69,
+	0x78, 0x65, 0x64, 0x33, 0x32, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x0a, 0x20,
+	0x01, 0x28, 0x10, 0x48, 0x0a, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01,
+	0x28, 0x02, 0x48, 0x0b, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x6c,
+	0x6f, 0x61, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x48,
+	0x0c, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x75, 0x62, 0x6c,
+	0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+	0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x48, 0x0d, 0x52, 0x0c, 0x6f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2c,
+	0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e,
+	0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x48, 0x0e, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0f,
+	0x20, 0x01, 0x28, 0x0c, 0x48, 0x0f, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+	0x42, 0x79, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x73, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
+	0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x48, 0x10, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a,
+	0x18, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67,
+	0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x2a, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x46, 0x6f, 0x72,
+	0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x11, 0x52, 0x16, 0x6f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x66, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x48, 0x12, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+	0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01,
+	0x12, 0x6a, 0x0a, 0x14, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33,
+	0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45,
+	0x6e, 0x75, 0x6d, 0x48, 0x13, 0x52, 0x12, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x15,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e,
+	0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x70,
+	0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e,
+	0x45, 0x6e, 0x75, 0x6d, 0x48, 0x14, 0x52, 0x13, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+	0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x5d,
+	0x0a, 0x14, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72,
+	0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f,
+	0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74,
+	0x45, 0x6e, 0x75, 0x6d, 0x48, 0x15, 0x52, 0x12, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+	0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a,
+	0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18,
+	0x1f, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49,
+	0x6e, 0x74, 0x33, 0x32, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x20, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0d, 0x72, 0x65,
+	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x21,
+	0x20, 0x03, 0x28, 0x0d, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x55, 0x69,
+	0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x22, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0e, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a,
+	0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x18, 0x23, 0x20, 0x03, 0x28, 0x11, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
+	0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x24, 0x20, 0x03, 0x28, 0x12, 0x52,
+	0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
+	0x29, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65,
+	0x64, 0x33, 0x32, 0x18, 0x25, 0x20, 0x03, 0x28, 0x07, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65,
+	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x26,
+	0x20, 0x03, 0x28, 0x06, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69,
+	0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x27, 0x20, 0x03, 0x28, 0x0f,
+	0x52, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x33, 0x32, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x28, 0x20, 0x03, 0x28, 0x10, 0x52, 0x10, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12,
+	0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61,
+	0x74, 0x18, 0x29, 0x20, 0x03, 0x28, 0x02, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
+	0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
+	0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x2a, 0x20, 0x03, 0x28, 0x01, 0x52,
+	0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12,
+	0x23, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x6f, 0x6f, 0x6c,
+	0x18, 0x2b, 0x20, 0x03, 0x28, 0x08, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x2c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a,
+	0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18,
+	0x2d, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42,
+	0x79, 0x74, 0x65, 0x73, 0x12, 0x6e, 0x0a, 0x17, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18,
+	0x30, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67,
+	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x72,
+	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x12, 0x64, 0x0a, 0x18, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+	0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x18, 0x31, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x33, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x52, 0x16, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x65,
+	0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x60, 0x0a, 0x16, 0x72, 0x65,
+	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x6d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x18, 0x32, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x70, 0x61,
+	0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49,
+	0x6d, 0x70, 0x6f, 0x72, 0x74, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x65, 0x0a, 0x14,
+	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f,
+	0x65, 0x6e, 0x75, 0x6d, 0x18, 0x33, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x6f, 0x70, 0x61,
+	0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52,
+	0x12, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45,
+	0x6e, 0x75, 0x6d, 0x12, 0x5b, 0x0a, 0x15, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f,
+	0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x34, 0x20, 0x03,
+	0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e,
+	0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x13, 0x72, 0x65, 0x70,
+	0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d,
+	0x12, 0x57, 0x0a, 0x13, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6d, 0x70,
+	0x6f, 0x72, 0x74, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x35, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x26, 0x2e,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72,
+	0x74, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49,
+	0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x63, 0x0a, 0x0f, 0x6d, 0x61, 0x70,
+	0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x38, 0x20, 0x03,
+	0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70,
+	0x49, 0x6e, 0x74, 0x33, 0x32, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
+	0x0d, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x63,
+	0x0a, 0x0f, 0x6d, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x69, 0x6e, 0x74, 0x36,
+	0x34, 0x18, 0x39, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x45,
+	0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x49, 0x6e,
+	0x74, 0x36, 0x34, 0x12, 0x69, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x3a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d,
+	0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74,
+	0x33, 0x32, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d,
+	0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x69,
+	0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x75, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x18, 0x3b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
+	0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x55, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x55, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x69, 0x0a, 0x11, 0x6d, 0x61, 0x70,
+	0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x3c,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d,
+	0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e,
+	0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x53, 0x69,
+	0x6e, 0x74, 0x33, 0x32, 0x12, 0x69, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x69, 0x6e, 0x74,
+	0x36, 0x34, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x3d, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x3d, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f,
+	0x6d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
+	0x6f, 0x0a, 0x13, 0x6d, 0x61, 0x70, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x5f, 0x66,
+	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x3e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x6f,
+	0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33,
+	0x32, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x6d,
+	0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
+	0x12, 0x6f, 0x0a, 0x13, 0x6d, 0x61, 0x70, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x5f,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x3f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e,
+	0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
+	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64,
+	0x36, 0x34, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11,
+	0x6d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36,
+	0x34, 0x12, 0x75, 0x0a, 0x15, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,
+	0x32, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x40, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x41, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x66,
+	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45, 0x6e,
+	0x74, 0x72, 0x79, 0x52, 0x13, 0x6d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
+	0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x75, 0x0a, 0x15, 0x6d, 0x61, 0x70, 0x5f,
+	0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
+	0x34, 0x18, 0x41, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65,
+	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
+	0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x53, 0x66, 0x69,
+	0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x6d, 0x61, 0x70, 0x53,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12,
+	0x63, 0x0a, 0x0f, 0x6d, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x66, 0x6c, 0x6f,
+	0x61, 0x74, 0x18, 0x42, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75,
+	0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70,
+	0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x46, 0x6c, 0x6f, 0x61, 0x74,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x46,
+	0x6c, 0x6f, 0x61, 0x74, 0x12, 0x66, 0x0a, 0x10, 0x6d, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x43, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c,
+	0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74,
+	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33,
+	0x32, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x6d, 0x61,
+	0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x5d, 0x0a, 0x0d,
+	0x6d, 0x61, 0x70, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x44, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33,
+	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61,
+	0x70, 0x42, 0x6f, 0x6f, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b,
+	0x6d, 0x61, 0x70, 0x42, 0x6f, 0x6f, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x69, 0x0a, 0x11, 0x6d,
+	0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
+	0x18, 0x45, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e,
+	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
+	0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
+	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x66, 0x0a, 0x10, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74,
+	0x72, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x46, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x3c, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65,
+	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74,
+	0x72, 0x69, 0x6e, 0x67, 0x42, 0x79, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e,
+	0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x7f,
+	0x0a, 0x19, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x47, 0x20, 0x03, 0x28,
+	0x0b, 0x32, 0x44, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54,
+	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53,
+	0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x16, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69,
+	0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12,
+	0x76, 0x0a, 0x16, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x49, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x41, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73,
+	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72,
+	0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74,
+	0x72, 0x79, 0x52, 0x13, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
+	0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x6f, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52,
+	0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x6a, 0x0a, 0x14,
+	0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x18, 0x70, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x6f, 0x70, 0x61,
+	0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x48, 0x00, 0x52, 0x12, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x4e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f,
+	0x66, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x71, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,
+	0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x0a,
+	0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x72, 0x20, 0x01,
+	0x28, 0x0c, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x42, 0x79, 0x74, 0x65, 0x73,
+	0x12, 0x1f, 0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x73,
+	0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x42, 0x6f, 0x6f,
+	0x6c, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36,
+	0x34, 0x18, 0x74, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
+	0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x21, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f,
+	0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x75, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x6f,
+	0x6e, 0x65, 0x6f, 0x66, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65,
+	0x6f, 0x66, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x76, 0x20, 0x01, 0x28, 0x01, 0x48,
+	0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x54,
+	0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x77, 0x20, 0x01,
+	0x28, 0x0e, 0x32, 0x33, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e,
+	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
+	0x45, 0x6e, 0x75, 0x6d, 0x1a, 0x69, 0x0a, 0x0d, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
+	0x52, 0x01, 0x61, 0x12, 0x4a, 0x0a, 0x0b, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69,
+	0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75,
+	0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70,
+	0x65, 0x73, 0x52, 0x0b, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x1a,
+	0x40, 0x0a, 0x12, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x49, 0x6e, 0x74, 0x33, 0x32,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
+	0x01, 0x1a, 0x40, 0x0a, 0x12, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x49, 0x6e, 0x74,
+	0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
+	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
+	0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
+	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
+	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61,
+	0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x55, 0x69,
+	0x6e, 0x74, 0x36, 0x34, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
+	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6b, 0x65,
+	0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04,
+	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d,
+	0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e,
+	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11,
+	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
+	0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x53, 0x69, 0x6e, 0x74,
+	0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x12, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
+	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x12, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
+	0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33,
+	0x32, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
+	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x07, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
+	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x07, 0x52, 0x05,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x4d, 0x61, 0x70,
+	0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e,
+	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x06,
+	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x06, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
+	0x46, 0x0a, 0x18, 0x4d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x53, 0x66,
+	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
+	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
+	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x05, 0x76, 0x61,
+	0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x46, 0x0a, 0x18, 0x4d, 0x61, 0x70, 0x53, 0x66,
+	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e,
+	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x10,
+	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x10, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
+	0x40, 0x0a, 0x12, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x46, 0x6c, 0x6f, 0x61, 0x74,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
+	0x01, 0x1a, 0x41, 0x0a, 0x13, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x44, 0x6f, 0x75,
+	0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
+	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x4d, 0x61, 0x70, 0x42, 0x6f, 0x6f, 0x6c, 0x42,
+	0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
+	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e,
+	0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
+	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
+	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76,
+	0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x4d, 0x61, 0x70, 0x53,
+	0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x79, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
+	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
+	0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c,
+	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x81, 0x01, 0x0a, 0x1b,
+	0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
+	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4c, 0x0a,
+	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x6f,
+	0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
+	0x7b, 0x0a, 0x18, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
+	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x49, 0x0a,
+	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x6f,
+	0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
+	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75,
+	0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x39, 0x0a, 0x0a,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x07, 0x0a, 0x03, 0x46, 0x4f,
+	0x4f, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x41, 0x52, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03,
+	0x42, 0x41, 0x5a, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x45, 0x47, 0x10, 0xff, 0xff, 0xff,
+	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
+	0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x42, 0x12, 0x0a, 0x10,
+	0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69,
+	0x6e, 0x74, 0x36, 0x34, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
+	0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6f, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x42, 0x13, 0x0a, 0x11,
+	0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,
+	0x32, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66,
+	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x42, 0x14, 0x0a, 0x12,
+	0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x36, 0x34, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f,
+	0x66, 0x6c, 0x6f, 0x61, 0x74, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x42, 0x12, 0x0a, 0x10, 0x5f,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42,
+	0x11, 0x0a, 0x0f, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74,
+	0x65, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f,
+	0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x1b,
+	0x0a, 0x19, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65,
+	0x69, 0x67, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f,
+	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d,
+	0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6f,
+	0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65,
+	0x6e, 0x75, 0x6d, 0x22, 0x2c, 0x0a, 0x0e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
+	0x52, 0x01, 0x63, 0x12, 0x0c, 0x0a, 0x01, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01,
+	0x64, 0x2a, 0x52, 0x0a, 0x0b, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d,
+	0x12, 0x10, 0x0a, 0x0c, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x5a, 0x45, 0x52, 0x4f,
+	0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x46, 0x4f,
+	0x4f, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x42,
+	0x41, 0x52, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f,
+	0x42, 0x41, 0x5a, 0x10, 0x06, 0x42, 0x43, 0x5a, 0x41, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+	0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73,
+	0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2f, 0x74, 0x65,
+	0x73, 0x74, 0x33, 0x5f, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x33,
+}
+
+var file_internal_testprotos_test3_test3_opaque_test_opaque_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
+var file_internal_testprotos_test3_test3_opaque_test_opaque_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
+var file_internal_testprotos_test3_test3_opaque_test_opaque_proto_goTypes = []any{
+	(ForeignEnum)(0),                   // 0: opaque.goproto.proto.test3.ForeignEnum
+	(TestAllTypes_NestedEnum)(0),       // 1: opaque.goproto.proto.test3.TestAllTypes.NestedEnum
+	(*TestAllTypes)(nil),               // 2: opaque.goproto.proto.test3.TestAllTypes
+	(*ForeignMessage)(nil),             // 3: opaque.goproto.proto.test3.ForeignMessage
+	(*TestAllTypes_NestedMessage)(nil), // 4: opaque.goproto.proto.test3.TestAllTypes.NestedMessage
+	nil,                                // 5: opaque.goproto.proto.test3.TestAllTypes.MapInt32Int32Entry
+	nil,                                // 6: opaque.goproto.proto.test3.TestAllTypes.MapInt64Int64Entry
+	nil,                                // 7: opaque.goproto.proto.test3.TestAllTypes.MapUint32Uint32Entry
+	nil,                                // 8: opaque.goproto.proto.test3.TestAllTypes.MapUint64Uint64Entry
+	nil,                                // 9: opaque.goproto.proto.test3.TestAllTypes.MapSint32Sint32Entry
+	nil,                                // 10: opaque.goproto.proto.test3.TestAllTypes.MapSint64Sint64Entry
+	nil,                                // 11: opaque.goproto.proto.test3.TestAllTypes.MapFixed32Fixed32Entry
+	nil,                                // 12: opaque.goproto.proto.test3.TestAllTypes.MapFixed64Fixed64Entry
+	nil,                                // 13: opaque.goproto.proto.test3.TestAllTypes.MapSfixed32Sfixed32Entry
+	nil,                                // 14: opaque.goproto.proto.test3.TestAllTypes.MapSfixed64Sfixed64Entry
+	nil,                                // 15: opaque.goproto.proto.test3.TestAllTypes.MapInt32FloatEntry
+	nil,                                // 16: opaque.goproto.proto.test3.TestAllTypes.MapInt32DoubleEntry
+	nil,                                // 17: opaque.goproto.proto.test3.TestAllTypes.MapBoolBoolEntry
+	nil,                                // 18: opaque.goproto.proto.test3.TestAllTypes.MapStringStringEntry
+	nil,                                // 19: opaque.goproto.proto.test3.TestAllTypes.MapStringBytesEntry
+	nil,                                // 20: opaque.goproto.proto.test3.TestAllTypes.MapStringNestedMessageEntry
+	nil,                                // 21: opaque.goproto.proto.test3.TestAllTypes.MapStringNestedEnumEntry
+	(*ImportMessage)(nil),              // 22: opaque.goproto.proto.test3.ImportMessage
+	(ImportEnum)(0),                    // 23: opaque.goproto.proto.test3.ImportEnum
+}
+var file_internal_testprotos_test3_test3_opaque_test_opaque_proto_depIdxs = []int32{
+	4,  // 0: opaque.goproto.proto.test3.TestAllTypes.singular_nested_message:type_name -> opaque.goproto.proto.test3.TestAllTypes.NestedMessage
+	3,  // 1: opaque.goproto.proto.test3.TestAllTypes.singular_foreign_message:type_name -> opaque.goproto.proto.test3.ForeignMessage
+	22, // 2: opaque.goproto.proto.test3.TestAllTypes.singular_import_message:type_name -> opaque.goproto.proto.test3.ImportMessage
+	1,  // 3: opaque.goproto.proto.test3.TestAllTypes.singular_nested_enum:type_name -> opaque.goproto.proto.test3.TestAllTypes.NestedEnum
+	0,  // 4: opaque.goproto.proto.test3.TestAllTypes.singular_foreign_enum:type_name -> opaque.goproto.proto.test3.ForeignEnum
+	23, // 5: opaque.goproto.proto.test3.TestAllTypes.singular_import_enum:type_name -> opaque.goproto.proto.test3.ImportEnum
+	4,  // 6: opaque.goproto.proto.test3.TestAllTypes.optional_nested_message:type_name -> opaque.goproto.proto.test3.TestAllTypes.NestedMessage
+	3,  // 7: opaque.goproto.proto.test3.TestAllTypes.optional_foreign_message:type_name -> opaque.goproto.proto.test3.ForeignMessage
+	22, // 8: opaque.goproto.proto.test3.TestAllTypes.optional_import_message:type_name -> opaque.goproto.proto.test3.ImportMessage
+	1,  // 9: opaque.goproto.proto.test3.TestAllTypes.optional_nested_enum:type_name -> opaque.goproto.proto.test3.TestAllTypes.NestedEnum
+	0,  // 10: opaque.goproto.proto.test3.TestAllTypes.optional_foreign_enum:type_name -> opaque.goproto.proto.test3.ForeignEnum
+	23, // 11: opaque.goproto.proto.test3.TestAllTypes.optional_import_enum:type_name -> opaque.goproto.proto.test3.ImportEnum
+	4,  // 12: opaque.goproto.proto.test3.TestAllTypes.repeated_nested_message:type_name -> opaque.goproto.proto.test3.TestAllTypes.NestedMessage
+	3,  // 13: opaque.goproto.proto.test3.TestAllTypes.repeated_foreign_message:type_name -> opaque.goproto.proto.test3.ForeignMessage
+	22, // 14: opaque.goproto.proto.test3.TestAllTypes.repeated_importmessage:type_name -> opaque.goproto.proto.test3.ImportMessage
+	1,  // 15: opaque.goproto.proto.test3.TestAllTypes.repeated_nested_enum:type_name -> opaque.goproto.proto.test3.TestAllTypes.NestedEnum
+	0,  // 16: opaque.goproto.proto.test3.TestAllTypes.repeated_foreign_enum:type_name -> opaque.goproto.proto.test3.ForeignEnum
+	23, // 17: opaque.goproto.proto.test3.TestAllTypes.repeated_importenum:type_name -> opaque.goproto.proto.test3.ImportEnum
+	5,  // 18: opaque.goproto.proto.test3.TestAllTypes.map_int32_int32:type_name -> opaque.goproto.proto.test3.TestAllTypes.MapInt32Int32Entry
+	6,  // 19: opaque.goproto.proto.test3.TestAllTypes.map_int64_int64:type_name -> opaque.goproto.proto.test3.TestAllTypes.MapInt64Int64Entry
+	7,  // 20: opaque.goproto.proto.test3.TestAllTypes.map_uint32_uint32:type_name -> opaque.goproto.proto.test3.TestAllTypes.MapUint32Uint32Entry
+	8,  // 21: opaque.goproto.proto.test3.TestAllTypes.map_uint64_uint64:type_name -> opaque.goproto.proto.test3.TestAllTypes.MapUint64Uint64Entry
+	9,  // 22: opaque.goproto.proto.test3.TestAllTypes.map_sint32_sint32:type_name -> opaque.goproto.proto.test3.TestAllTypes.MapSint32Sint32Entry
+	10, // 23: opaque.goproto.proto.test3.TestAllTypes.map_sint64_sint64:type_name -> opaque.goproto.proto.test3.TestAllTypes.MapSint64Sint64Entry
+	11, // 24: opaque.goproto.proto.test3.TestAllTypes.map_fixed32_fixed32:type_name -> opaque.goproto.proto.test3.TestAllTypes.MapFixed32Fixed32Entry
+	12, // 25: opaque.goproto.proto.test3.TestAllTypes.map_fixed64_fixed64:type_name -> opaque.goproto.proto.test3.TestAllTypes.MapFixed64Fixed64Entry
+	13, // 26: opaque.goproto.proto.test3.TestAllTypes.map_sfixed32_sfixed32:type_name -> opaque.goproto.proto.test3.TestAllTypes.MapSfixed32Sfixed32Entry
+	14, // 27: opaque.goproto.proto.test3.TestAllTypes.map_sfixed64_sfixed64:type_name -> opaque.goproto.proto.test3.TestAllTypes.MapSfixed64Sfixed64Entry
+	15, // 28: opaque.goproto.proto.test3.TestAllTypes.map_int32_float:type_name -> opaque.goproto.proto.test3.TestAllTypes.MapInt32FloatEntry
+	16, // 29: opaque.goproto.proto.test3.TestAllTypes.map_int32_double:type_name -> opaque.goproto.proto.test3.TestAllTypes.MapInt32DoubleEntry
+	17, // 30: opaque.goproto.proto.test3.TestAllTypes.map_bool_bool:type_name -> opaque.goproto.proto.test3.TestAllTypes.MapBoolBoolEntry
+	18, // 31: opaque.goproto.proto.test3.TestAllTypes.map_string_string:type_name -> opaque.goproto.proto.test3.TestAllTypes.MapStringStringEntry
+	19, // 32: opaque.goproto.proto.test3.TestAllTypes.map_string_bytes:type_name -> opaque.goproto.proto.test3.TestAllTypes.MapStringBytesEntry
+	20, // 33: opaque.goproto.proto.test3.TestAllTypes.map_string_nested_message:type_name -> opaque.goproto.proto.test3.TestAllTypes.MapStringNestedMessageEntry
+	21, // 34: opaque.goproto.proto.test3.TestAllTypes.map_string_nested_enum:type_name -> opaque.goproto.proto.test3.TestAllTypes.MapStringNestedEnumEntry
+	4,  // 35: opaque.goproto.proto.test3.TestAllTypes.oneof_nested_message:type_name -> opaque.goproto.proto.test3.TestAllTypes.NestedMessage
+	1,  // 36: opaque.goproto.proto.test3.TestAllTypes.oneof_enum:type_name -> opaque.goproto.proto.test3.TestAllTypes.NestedEnum
+	2,  // 37: opaque.goproto.proto.test3.TestAllTypes.NestedMessage.corecursive:type_name -> opaque.goproto.proto.test3.TestAllTypes
+	4,  // 38: opaque.goproto.proto.test3.TestAllTypes.MapStringNestedMessageEntry.value:type_name -> opaque.goproto.proto.test3.TestAllTypes.NestedMessage
+	1,  // 39: opaque.goproto.proto.test3.TestAllTypes.MapStringNestedEnumEntry.value:type_name -> opaque.goproto.proto.test3.TestAllTypes.NestedEnum
+	40, // [40:40] is the sub-list for method output_type
+	40, // [40:40] is the sub-list for method input_type
+	40, // [40:40] is the sub-list for extension type_name
+	40, // [40:40] is the sub-list for extension extendee
+	0,  // [0:40] is the sub-list for field type_name
+}
+
+func init() { file_internal_testprotos_test3_test3_opaque_test_opaque_proto_init() }
+func file_internal_testprotos_test3_test3_opaque_test_opaque_proto_init() {
+	if File_internal_testprotos_test3_test3_opaque_test_opaque_proto != nil {
+		return
+	}
+	file_internal_testprotos_test3_test3_opaque_test_import_opaque_proto_init()
+	file_internal_testprotos_test3_test3_opaque_test_opaque_proto_msgTypes[0].OneofWrappers = []any{
+		(*testAllTypes_OneofUint32)(nil),
+		(*testAllTypes_OneofNestedMessage)(nil),
+		(*testAllTypes_OneofString)(nil),
+		(*testAllTypes_OneofBytes)(nil),
+		(*testAllTypes_OneofBool)(nil),
+		(*testAllTypes_OneofUint64)(nil),
+		(*testAllTypes_OneofFloat)(nil),
+		(*testAllTypes_OneofDouble)(nil),
+		(*testAllTypes_OneofEnum)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_internal_testprotos_test3_test3_opaque_test_opaque_proto_rawDesc,
+			NumEnums:      2,
+			NumMessages:   20,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_internal_testprotos_test3_test3_opaque_test_opaque_proto_goTypes,
+		DependencyIndexes: file_internal_testprotos_test3_test3_opaque_test_opaque_proto_depIdxs,
+		EnumInfos:         file_internal_testprotos_test3_test3_opaque_test_opaque_proto_enumTypes,
+		MessageInfos:      file_internal_testprotos_test3_test3_opaque_test_opaque_proto_msgTypes,
+	}.Build()
+	File_internal_testprotos_test3_test3_opaque_test_opaque_proto = out.File
+	file_internal_testprotos_test3_test3_opaque_test_opaque_proto_rawDesc = nil
+	file_internal_testprotos_test3_test3_opaque_test_opaque_proto_goTypes = nil
+	file_internal_testprotos_test3_test3_opaque_test_opaque_proto_depIdxs = nil
+}
diff --git a/internal/testprotos/test3/test3_opaque/test.opaque.proto b/internal/testprotos/test3/test3_opaque/test.opaque.proto
new file mode 100644
index 0000000..a6df253
--- /dev/null
+++ b/internal/testprotos/test3/test3_opaque/test.opaque.proto
@@ -0,0 +1,134 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+syntax = "proto3";
+
+package opaque.goproto.proto.test3;
+
+import "internal/testprotos/test3/test3_opaque/test_import.opaque.proto";
+
+option go_package = "google.golang.org/protobuf/internal/testprotos/test3/test3_opaque";
+
+
+message TestAllTypes {
+  message NestedMessage {
+    int32 a = 1;
+    TestAllTypes corecursive = 2;
+  }
+
+  enum NestedEnum {
+    FOO = 0;
+    BAR = 1;
+    BAZ = 2;
+    NEG = -1;  // Intentionally negative.
+  }
+
+  int32 singular_int32 = 81;
+  int64 singular_int64 = 82;
+  uint32 singular_uint32 = 83;
+  uint64 singular_uint64 = 84;
+  sint32 singular_sint32 = 85;
+  sint64 singular_sint64 = 86;
+  fixed32 singular_fixed32 = 87;
+  fixed64 singular_fixed64 = 88;
+  sfixed32 singular_sfixed32 = 89;
+  sfixed64 singular_sfixed64 = 90;
+  float singular_float = 91;
+  double singular_double = 92;
+  bool singular_bool = 93;
+  string singular_string = 94;
+  bytes singular_bytes = 95;
+  NestedMessage singular_nested_message = 98;
+  ForeignMessage singular_foreign_message = 99;
+  ImportMessage singular_import_message = 100;
+  NestedEnum singular_nested_enum = 101;
+  ForeignEnum singular_foreign_enum = 102;
+  ImportEnum singular_import_enum = 103;
+
+  optional int32 optional_int32 = 1;
+  optional int64 optional_int64 = 2;
+  optional uint32 optional_uint32 = 3;
+  optional uint64 optional_uint64 = 4;
+  optional sint32 optional_sint32 = 5;
+  optional sint64 optional_sint64 = 6;
+  optional fixed32 optional_fixed32 = 7;
+  optional fixed64 optional_fixed64 = 8;
+  optional sfixed32 optional_sfixed32 = 9;
+  optional sfixed64 optional_sfixed64 = 10;
+  optional float optional_float = 11;
+  optional double optional_double = 12;
+  optional bool optional_bool = 13;
+  optional string optional_string = 14;
+  optional bytes optional_bytes = 15;
+  optional NestedMessage optional_nested_message = 18;
+  optional ForeignMessage optional_foreign_message = 19;
+  optional ImportMessage optional_import_message = 20;
+  optional NestedEnum optional_nested_enum = 21;
+  optional ForeignEnum optional_foreign_enum = 22;
+  optional ImportEnum optional_import_enum = 23;
+
+  repeated int32 repeated_int32 = 31;
+  repeated int64 repeated_int64 = 32;
+  repeated uint32 repeated_uint32 = 33;
+  repeated uint64 repeated_uint64 = 34;
+  repeated sint32 repeated_sint32 = 35;
+  repeated sint64 repeated_sint64 = 36;
+  repeated fixed32 repeated_fixed32 = 37;
+  repeated fixed64 repeated_fixed64 = 38;
+  repeated sfixed32 repeated_sfixed32 = 39;
+  repeated sfixed64 repeated_sfixed64 = 40;
+  repeated float repeated_float = 41;
+  repeated double repeated_double = 42;
+  repeated bool repeated_bool = 43;
+  repeated string repeated_string = 44;
+  repeated bytes repeated_bytes = 45;
+  repeated NestedMessage repeated_nested_message = 48;
+  repeated ForeignMessage repeated_foreign_message = 49;
+  repeated ImportMessage repeated_importmessage = 50;
+  repeated NestedEnum repeated_nested_enum = 51;
+  repeated ForeignEnum repeated_foreign_enum = 52;
+  repeated ImportEnum repeated_importenum = 53;
+
+  map<int32, int32> map_int32_int32 = 56;
+  map<int64, int64> map_int64_int64 = 57;
+  map<uint32, uint32> map_uint32_uint32 = 58;
+  map<uint64, uint64> map_uint64_uint64 = 59;
+  map<sint32, sint32> map_sint32_sint32 = 60;
+  map<sint64, sint64> map_sint64_sint64 = 61;
+  map<fixed32, fixed32> map_fixed32_fixed32 = 62;
+  map<fixed64, fixed64> map_fixed64_fixed64 = 63;
+  map<sfixed32, sfixed32> map_sfixed32_sfixed32 = 64;
+  map<sfixed64, sfixed64> map_sfixed64_sfixed64 = 65;
+  map<int32, float> map_int32_float = 66;
+  map<int32, double> map_int32_double = 67;
+  map<bool, bool> map_bool_bool = 68;
+  map<string, string> map_string_string = 69;
+  map<string, bytes> map_string_bytes = 70;
+  map<string, NestedMessage> map_string_nested_message = 71;
+  map<string, NestedEnum> map_string_nested_enum = 73;
+
+  oneof oneof_field {
+    uint32 oneof_uint32 = 111;
+    NestedMessage oneof_nested_message = 112;
+    string oneof_string = 113;
+    bytes oneof_bytes = 114;
+    bool oneof_bool = 115;
+    uint64 oneof_uint64 = 116;
+    float oneof_float = 117;
+    double oneof_double = 118;
+    NestedEnum oneof_enum = 119;
+  }
+}
+
+message ForeignMessage {
+  int32 c = 1;
+  int32 d = 2;
+}
+
+enum ForeignEnum {
+  FOREIGN_ZERO = 0;
+  FOREIGN_FOO = 4;
+  FOREIGN_BAR = 5;
+  FOREIGN_BAZ = 6;
+}
\ No newline at end of file
diff --git a/internal/testprotos/test3/test3_opaque/test_import.opaque.pb.go b/internal/testprotos/test3/test3_opaque/test_import.opaque.pb.go
new file mode 100644
index 0000000..07c94bd
--- /dev/null
+++ b/internal/testprotos/test3/test3_opaque/test_import.opaque.pb.go
@@ -0,0 +1,154 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: internal/testprotos/test3/test3_opaque/test_import.opaque.proto
+
+package test3_opaque
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+)
+
+type ImportEnum int32
+
+const (
+	ImportEnum_IMPORT_ZERO ImportEnum = 0
+)
+
+// Enum value maps for ImportEnum.
+var (
+	ImportEnum_name = map[int32]string{
+		0: "IMPORT_ZERO",
+	}
+	ImportEnum_value = map[string]int32{
+		"IMPORT_ZERO": 0,
+	}
+)
+
+func (x ImportEnum) Enum() *ImportEnum {
+	p := new(ImportEnum)
+	*p = x
+	return p
+}
+
+func (x ImportEnum) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ImportEnum) Descriptor() protoreflect.EnumDescriptor {
+	return file_internal_testprotos_test3_test3_opaque_test_import_opaque_proto_enumTypes[0].Descriptor()
+}
+
+func (ImportEnum) Type() protoreflect.EnumType {
+	return &file_internal_testprotos_test3_test3_opaque_test_import_opaque_proto_enumTypes[0]
+}
+
+func (x ImportEnum) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+type ImportMessage struct {
+	state         protoimpl.MessageState `protogen:"opaque.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *ImportMessage) Reset() {
+	*x = ImportMessage{}
+	mi := &file_internal_testprotos_test3_test3_opaque_test_import_opaque_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ImportMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ImportMessage) ProtoMessage() {}
+
+func (x *ImportMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_internal_testprotos_test3_test3_opaque_test_import_opaque_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+type ImportMessage_builder struct {
+	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 ImportMessage_builder) Build() *ImportMessage {
+	m0 := &ImportMessage{}
+	b, x := &b0, m0
+	_, _ = b, x
+	return m0
+}
+
+var File_internal_testprotos_test3_test3_opaque_test_import_opaque_proto protoreflect.FileDescriptor
+
+var file_internal_testprotos_test3_test3_opaque_test_import_opaque_proto_rawDesc = []byte{
+	0x0a, 0x3f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2f, 0x74, 0x65, 0x73, 0x74,
+	0x33, 0x5f, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6d,
+	0x70, 0x6f, 0x72, 0x74, 0x2e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x12, 0x1a, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x22, 0x0f, 0x0a,
+	0x0d, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2a, 0x1d,
+	0x0a, 0x0a, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b,
+	0x49, 0x4d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x42, 0x43, 0x5a,
+	0x41, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f,
+	0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65,
+	0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f,
+	0x74, 0x65, 0x73, 0x74, 0x33, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x33, 0x5f, 0x6f, 0x70, 0x61, 0x71,
+	0x75, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var file_internal_testprotos_test3_test3_opaque_test_import_opaque_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_internal_testprotos_test3_test3_opaque_test_import_opaque_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_internal_testprotos_test3_test3_opaque_test_import_opaque_proto_goTypes = []any{
+	(ImportEnum)(0),       // 0: opaque.goproto.proto.test3.ImportEnum
+	(*ImportMessage)(nil), // 1: opaque.goproto.proto.test3.ImportMessage
+}
+var file_internal_testprotos_test3_test3_opaque_test_import_opaque_proto_depIdxs = []int32{
+	0, // [0:0] is the sub-list for method output_type
+	0, // [0:0] is the sub-list for method input_type
+	0, // [0:0] is the sub-list for extension type_name
+	0, // [0:0] is the sub-list for extension extendee
+	0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_internal_testprotos_test3_test3_opaque_test_import_opaque_proto_init() }
+func file_internal_testprotos_test3_test3_opaque_test_import_opaque_proto_init() {
+	if File_internal_testprotos_test3_test3_opaque_test_import_opaque_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_internal_testprotos_test3_test3_opaque_test_import_opaque_proto_rawDesc,
+			NumEnums:      1,
+			NumMessages:   1,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_internal_testprotos_test3_test3_opaque_test_import_opaque_proto_goTypes,
+		DependencyIndexes: file_internal_testprotos_test3_test3_opaque_test_import_opaque_proto_depIdxs,
+		EnumInfos:         file_internal_testprotos_test3_test3_opaque_test_import_opaque_proto_enumTypes,
+		MessageInfos:      file_internal_testprotos_test3_test3_opaque_test_import_opaque_proto_msgTypes,
+	}.Build()
+	File_internal_testprotos_test3_test3_opaque_test_import_opaque_proto = out.File
+	file_internal_testprotos_test3_test3_opaque_test_import_opaque_proto_rawDesc = nil
+	file_internal_testprotos_test3_test3_opaque_test_import_opaque_proto_goTypes = nil
+	file_internal_testprotos_test3_test3_opaque_test_import_opaque_proto_depIdxs = nil
+}
diff --git a/internal/testprotos/test3/test3_opaque/test_import.opaque.proto b/internal/testprotos/test3/test3_opaque/test_import.opaque.proto
new file mode 100644
index 0000000..26a1081
--- /dev/null
+++ b/internal/testprotos/test3/test3_opaque/test_import.opaque.proto
@@ -0,0 +1,16 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+syntax = "proto3";
+
+package opaque.goproto.proto.test3;
+
+option go_package = "google.golang.org/protobuf/internal/testprotos/test3/test3_opaque";
+
+
+message ImportMessage {}
+
+enum ImportEnum {
+  IMPORT_ZERO = 0;
+}
\ No newline at end of file
diff --git a/proto/oneof_which_test.go b/proto/oneof_which_test.go
index a53ae30..43108d1 100644
--- a/proto/oneof_which_test.go
+++ b/proto/oneof_which_test.go
@@ -8,6 +8,8 @@
 	"testing"
 
 	test3openpb "google.golang.org/protobuf/internal/testprotos/test3"
+	test3hybridpb "google.golang.org/protobuf/internal/testprotos/test3/test3_hybrid"
+	test3opaquepb "google.golang.org/protobuf/internal/testprotos/test3/test3_opaque"
 	testhybridpb "google.golang.org/protobuf/internal/testprotos/testeditions/testeditions_hybrid"
 	testopaquepb "google.golang.org/protobuf/internal/testprotos/testeditions/testeditions_opaque"
 	"google.golang.org/protobuf/proto"
@@ -189,7 +191,7 @@
 	}
 }
 
-func TestSyntheticOneof(t *testing.T) {
+func TestSyntheticOneofOpen(t *testing.T) {
 	msg := test3openpb.TestAllTypes{}
 	md := msg.ProtoReflect().Descriptor()
 	ood := md.Oneofs().ByName("_optional_int32")
@@ -208,4 +210,40 @@
 	}
 }
 
-// TODO(stapelberg): add test variants for the Hybrid API and Opaque API.
+func TestSyntheticOneofHybrid(t *testing.T) {
+	msg := test3hybridpb.TestAllTypes{}
+	md := msg.ProtoReflect().Descriptor()
+	ood := md.Oneofs().ByName("_optional_int32")
+	if ood == nil {
+		t.Fatal("failed to find oneof _optional_int32")
+	}
+	if !ood.IsSynthetic() {
+		t.Fatal("oneof _optional_int32 should be synthetic")
+	}
+	if msg.ProtoReflect().WhichOneof(ood) != nil {
+		t.Error("oneof _optional_int32 should not have a field set yet")
+	}
+	msg.OptionalInt32 = proto.Int32(123)
+	if msg.ProtoReflect().WhichOneof(ood) == nil {
+		t.Error("oneof _optional_int32 should have a field set")
+	}
+}
+
+func TestSyntheticOneofOpaque(t *testing.T) {
+	msg := test3opaquepb.TestAllTypes{}
+	md := msg.ProtoReflect().Descriptor()
+	ood := md.Oneofs().ByName("_optional_int32")
+	if ood == nil {
+		t.Fatal("failed to find oneof _optional_int32")
+	}
+	if !ood.IsSynthetic() {
+		t.Fatal("oneof _optional_int32 should be synthetic")
+	}
+	if msg.ProtoReflect().WhichOneof(ood) != nil {
+		t.Error("oneof _optional_int32 should not have a field set yet")
+	}
+	msg.SetOptionalInt32(123)
+	if msg.ProtoReflect().WhichOneof(ood) == nil {
+		t.Error("oneof _optional_int32 should have a field set")
+	}
+}