internal/fileinit: generate reflect data structures from raw descriptors

This CL takes a significantly different approach to generating support
for protobuf reflection. The previous approach involved generating a
large number of Go literals to represent the reflection information.
While that approach was correct, it resulted in too much binary bloat.

The approach taken here initializes the reflection information from
the raw descriptor proto, which is a relatively dense representation
of the protobuf reflection information. In order to keep initialization
cost low, several measures were taken:
* At program init, the bare minimum is parsed in order to initialize
naming information for enums, messages, extensions, and services declared
in the file. This is done because those top-level declarations are often
relevant for registration.
* Only upon first are most of the other data structures for protobuf
reflection actually initialized.
* Instead of using proto.Unmarshal, a hand-written unmarshaler is used.
This allows us to avoid a dependendency on the descriptor proto and also
because the API for the descriptor proto is fundamentally non-performant
since it requires an allocation for every primitive field.

At a high-level, the new implementation lives in internal/fileinit.

Several changes were made to other parts of the repository:
* cmd/protoc-gen-go:
  * Stop compressing the raw descriptors. While compression does reduce
the size of the descriptors by approximately 2x, it is a pre-mature
optimization since the descriptors themselves are around 1% of the total
binary bloat that is due to generated protobufs.
  * Seeding protobuf reflection from the raw descriptor significantly
simplifies the generator implementation since it is no longer responsible
for constructing a tree of Go literals to represent the same information.
  * We remove the generation of the shadow types and instead call
protoimpl.MessageType.MessageOf. Unfortunately, this incurs an allocation
for every call to ProtoReflect since we need to allocate a tuple that wraps
a pointer to the message value, and a pointer to message type.
* internal/impl:
  * We add a MessageType.GoType field and make it required that it is
set prior to first use. This is done so that we can avoid calling
MessageType.init except for when it is actually needed. The allows code
to call (*FooMessage)(nil).ProtoReflect().Type() without fearing that the
init code will run, possibly triggering a recursive deadlock (where the
init code depends on getting the Type of some dependency which may be
declared within the same file).
* internal/cmd/generate-types:
  * The code to generate reflect/prototype/protofile_list_gen.go was copied
and altered to generated internal/fileinit.desc_list_gen.go.

At a high-level this CL adds significant technical complexity.
However, this is offset by several possible future changes:
* The prototype package can be drastically simplified. We can probably
reimplement internal/legacy to use internal/fileinit instead, allowing us
to drop another dependency on the prototype package. As a result, we can
probably delete most of the constructor types in that package.
* With the prototype package significantly pruned, and the fact that generated
code no longer depend on depends on that package, we can consider merging
what's left of prototype into protodesc.

Change-Id: I6090f023f2e1b6afaf62bd3ae883566242e30715
Reviewed-on: https://go-review.googlesource.com/c/158539
Reviewed-by: Herbie Ong <herbie@google.com>
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
diff --git a/encoding/textpb/testprotos/pb2/test.pb.go b/encoding/textpb/testprotos/pb2/test.pb.go
index 3810398..84eb603 100644
--- a/encoding/textpb/testprotos/pb2/test.pb.go
+++ b/encoding/textpb/testprotos/pb2/test.pb.go
@@ -4,6 +4,8 @@
 package pb2
 
 import (
+	bytes "bytes"
+	gzip "compress/gzip"
 	proto "github.com/golang/protobuf/proto"
 	any "github.com/golang/protobuf/ptypes/any"
 	duration "github.com/golang/protobuf/ptypes/duration"
@@ -12,8 +14,8 @@
 	timestamp "github.com/golang/protobuf/ptypes/timestamp"
 	wrappers "github.com/golang/protobuf/ptypes/wrappers"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
-	prototype "github.com/golang/protobuf/v2/reflect/prototype"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	reflect "reflect"
 )
 
 // This is a compile-time assertion to ensure that this generated file
@@ -32,7 +34,7 @@
 )
 
 func (e Enum) Type() protoreflect.EnumType {
-	return xxx_Test_protoFile_EnumTypes[0]
+	return xxx_Test_protoFile_enumTypes[0]
 }
 func (e Enum) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(e)
@@ -72,7 +74,7 @@
 }
 
 func (Enum) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72, []int{0}
+	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{0}
 }
 
 type Enums_NestedEnum int32
@@ -84,7 +86,7 @@
 )
 
 func (e Enums_NestedEnum) Type() protoreflect.EnumType {
-	return xxx_Test_protoFile_EnumTypes[1]
+	return xxx_Test_protoFile_enumTypes[1]
 }
 func (e Enums_NestedEnum) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(e)
@@ -122,7 +124,7 @@
 }
 
 func (Enums_NestedEnum) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72, []int{2, 0}
+	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{2, 0}
 }
 
 // Scalars contains optional scalar fields.
@@ -147,29 +149,14 @@
 	XXX_sizecache        int32    `json:"-"`
 }
 
-type xxx_Scalars struct{ m *Scalars }
-
 func (m *Scalars) ProtoReflect() protoreflect.Message {
-	return xxx_Scalars{m}
+	return xxx_Test_protoFile_messageTypes[0].MessageOf(m)
 }
-func (m xxx_Scalars) Type() protoreflect.MessageType {
-	return xxx_Test_protoFile_MessageTypes[0].Type
-}
-func (m xxx_Scalars) KnownFields() protoreflect.KnownFields {
-	return xxx_Test_protoFile_MessageTypes[0].KnownFieldsOf(m.m)
-}
-func (m xxx_Scalars) UnknownFields() protoreflect.UnknownFields {
-	return xxx_Test_protoFile_MessageTypes[0].UnknownFieldsOf(m.m)
-}
-func (m xxx_Scalars) Interface() protoreflect.ProtoMessage {
-	return m.m
-}
-
 func (m *Scalars) Reset()         { *m = Scalars{} }
 func (m *Scalars) String() string { return proto.CompactTextString(m) }
 func (*Scalars) ProtoMessage()    {}
 func (*Scalars) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72, []int{0}
+	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{0}
 }
 
 func (m *Scalars) XXX_Unmarshal(b []byte) error {
@@ -311,29 +298,14 @@
 	XXX_sizecache        int32     `json:"-"`
 }
 
-type xxx_Repeats struct{ m *Repeats }
-
 func (m *Repeats) ProtoReflect() protoreflect.Message {
-	return xxx_Repeats{m}
+	return xxx_Test_protoFile_messageTypes[1].MessageOf(m)
 }
-func (m xxx_Repeats) Type() protoreflect.MessageType {
-	return xxx_Test_protoFile_MessageTypes[1].Type
-}
-func (m xxx_Repeats) KnownFields() protoreflect.KnownFields {
-	return xxx_Test_protoFile_MessageTypes[1].KnownFieldsOf(m.m)
-}
-func (m xxx_Repeats) UnknownFields() protoreflect.UnknownFields {
-	return xxx_Test_protoFile_MessageTypes[1].UnknownFieldsOf(m.m)
-}
-func (m xxx_Repeats) Interface() protoreflect.ProtoMessage {
-	return m.m
-}
-
 func (m *Repeats) Reset()         { *m = Repeats{} }
 func (m *Repeats) String() string { return proto.CompactTextString(m) }
 func (*Repeats) ProtoMessage()    {}
 func (*Repeats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72, []int{1}
+	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{1}
 }
 
 func (m *Repeats) XXX_Unmarshal(b []byte) error {
@@ -428,29 +400,14 @@
 	XXX_sizecache        int32              `json:"-"`
 }
 
-type xxx_Enums struct{ m *Enums }
-
 func (m *Enums) ProtoReflect() protoreflect.Message {
-	return xxx_Enums{m}
+	return xxx_Test_protoFile_messageTypes[2].MessageOf(m)
 }
-func (m xxx_Enums) Type() protoreflect.MessageType {
-	return xxx_Test_protoFile_MessageTypes[2].Type
-}
-func (m xxx_Enums) KnownFields() protoreflect.KnownFields {
-	return xxx_Test_protoFile_MessageTypes[2].KnownFieldsOf(m.m)
-}
-func (m xxx_Enums) UnknownFields() protoreflect.UnknownFields {
-	return xxx_Test_protoFile_MessageTypes[2].UnknownFieldsOf(m.m)
-}
-func (m xxx_Enums) Interface() protoreflect.ProtoMessage {
-	return m.m
-}
-
 func (m *Enums) Reset()         { *m = Enums{} }
 func (m *Enums) String() string { return proto.CompactTextString(m) }
 func (*Enums) ProtoMessage()    {}
 func (*Enums) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72, []int{2}
+	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{2}
 }
 
 func (m *Enums) XXX_Unmarshal(b []byte) error {
@@ -510,29 +467,14 @@
 	XXX_sizecache        int32             `json:"-"`
 }
 
-type xxx_Nests struct{ m *Nests }
-
 func (m *Nests) ProtoReflect() protoreflect.Message {
-	return xxx_Nests{m}
+	return xxx_Test_protoFile_messageTypes[3].MessageOf(m)
 }
-func (m xxx_Nests) Type() protoreflect.MessageType {
-	return xxx_Test_protoFile_MessageTypes[3].Type
-}
-func (m xxx_Nests) KnownFields() protoreflect.KnownFields {
-	return xxx_Test_protoFile_MessageTypes[3].KnownFieldsOf(m.m)
-}
-func (m xxx_Nests) UnknownFields() protoreflect.UnknownFields {
-	return xxx_Test_protoFile_MessageTypes[3].UnknownFieldsOf(m.m)
-}
-func (m xxx_Nests) Interface() protoreflect.ProtoMessage {
-	return m.m
-}
-
 func (m *Nests) Reset()         { *m = Nests{} }
 func (m *Nests) String() string { return proto.CompactTextString(m) }
 func (*Nests) ProtoMessage()    {}
 func (*Nests) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72, []int{3}
+	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{3}
 }
 
 func (m *Nests) XXX_Unmarshal(b []byte) error {
@@ -590,29 +532,14 @@
 	XXX_sizecache        int32    `json:"-"`
 }
 
-type xxx_Nested struct{ m *Nested }
-
 func (m *Nested) ProtoReflect() protoreflect.Message {
-	return xxx_Nested{m}
+	return xxx_Test_protoFile_messageTypes[4].MessageOf(m)
 }
-func (m xxx_Nested) Type() protoreflect.MessageType {
-	return xxx_Test_protoFile_MessageTypes[4].Type
-}
-func (m xxx_Nested) KnownFields() protoreflect.KnownFields {
-	return xxx_Test_protoFile_MessageTypes[4].KnownFieldsOf(m.m)
-}
-func (m xxx_Nested) UnknownFields() protoreflect.UnknownFields {
-	return xxx_Test_protoFile_MessageTypes[4].UnknownFieldsOf(m.m)
-}
-func (m xxx_Nested) Interface() protoreflect.ProtoMessage {
-	return m.m
-}
-
 func (m *Nested) Reset()         { *m = Nested{} }
 func (m *Nested) String() string { return proto.CompactTextString(m) }
 func (*Nested) ProtoMessage()    {}
 func (*Nested) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72, []int{4}
+	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{4}
 }
 
 func (m *Nested) XXX_Unmarshal(b []byte) error {
@@ -665,29 +592,14 @@
 	XXX_sizecache        int32    `json:"-"`
 }
 
-type xxx_Requireds struct{ m *Requireds }
-
 func (m *Requireds) ProtoReflect() protoreflect.Message {
-	return xxx_Requireds{m}
+	return xxx_Test_protoFile_messageTypes[5].MessageOf(m)
 }
-func (m xxx_Requireds) Type() protoreflect.MessageType {
-	return xxx_Test_protoFile_MessageTypes[5].Type
-}
-func (m xxx_Requireds) KnownFields() protoreflect.KnownFields {
-	return xxx_Test_protoFile_MessageTypes[5].KnownFieldsOf(m.m)
-}
-func (m xxx_Requireds) UnknownFields() protoreflect.UnknownFields {
-	return xxx_Test_protoFile_MessageTypes[5].UnknownFieldsOf(m.m)
-}
-func (m xxx_Requireds) Interface() protoreflect.ProtoMessage {
-	return m.m
-}
-
 func (m *Requireds) Reset()         { *m = Requireds{} }
 func (m *Requireds) String() string { return proto.CompactTextString(m) }
 func (*Requireds) ProtoMessage()    {}
 func (*Requireds) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72, []int{5}
+	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{5}
 }
 
 func (m *Requireds) XXX_Unmarshal(b []byte) error {
@@ -794,29 +706,14 @@
 	XXX_sizecache        int32    `json:"-"`
 }
 
-type xxx_PartialRequired struct{ m *PartialRequired }
-
 func (m *PartialRequired) ProtoReflect() protoreflect.Message {
-	return xxx_PartialRequired{m}
+	return xxx_Test_protoFile_messageTypes[6].MessageOf(m)
 }
-func (m xxx_PartialRequired) Type() protoreflect.MessageType {
-	return xxx_Test_protoFile_MessageTypes[6].Type
-}
-func (m xxx_PartialRequired) KnownFields() protoreflect.KnownFields {
-	return xxx_Test_protoFile_MessageTypes[6].KnownFieldsOf(m.m)
-}
-func (m xxx_PartialRequired) UnknownFields() protoreflect.UnknownFields {
-	return xxx_Test_protoFile_MessageTypes[6].UnknownFieldsOf(m.m)
-}
-func (m xxx_PartialRequired) Interface() protoreflect.ProtoMessage {
-	return m.m
-}
-
 func (m *PartialRequired) Reset()         { *m = PartialRequired{} }
 func (m *PartialRequired) String() string { return proto.CompactTextString(m) }
 func (*PartialRequired) ProtoMessage()    {}
 func (*PartialRequired) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72, []int{6}
+	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{6}
 }
 
 func (m *PartialRequired) XXX_Unmarshal(b []byte) error {
@@ -862,29 +759,14 @@
 	XXX_sizecache        int32          `json:"-"`
 }
 
-type xxx_Oneofs struct{ m *Oneofs }
-
 func (m *Oneofs) ProtoReflect() protoreflect.Message {
-	return xxx_Oneofs{m}
+	return xxx_Test_protoFile_messageTypes[7].MessageOf(m)
 }
-func (m xxx_Oneofs) Type() protoreflect.MessageType {
-	return xxx_Test_protoFile_MessageTypes[7].Type
-}
-func (m xxx_Oneofs) KnownFields() protoreflect.KnownFields {
-	return xxx_Test_protoFile_MessageTypes[7].KnownFieldsOf(m.m)
-}
-func (m xxx_Oneofs) UnknownFields() protoreflect.UnknownFields {
-	return xxx_Test_protoFile_MessageTypes[7].UnknownFieldsOf(m.m)
-}
-func (m xxx_Oneofs) Interface() protoreflect.ProtoMessage {
-	return m.m
-}
-
 func (m *Oneofs) Reset()         { *m = Oneofs{} }
 func (m *Oneofs) String() string { return proto.CompactTextString(m) }
 func (*Oneofs) ProtoMessage()    {}
 func (*Oneofs) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72, []int{7}
+	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{7}
 }
 
 func (m *Oneofs) XXX_Unmarshal(b []byte) error {
@@ -963,29 +845,14 @@
 	XXX_sizecache        int32              `json:"-"`
 }
 
-type xxx_Maps struct{ m *Maps }
-
 func (m *Maps) ProtoReflect() protoreflect.Message {
-	return xxx_Maps{m}
+	return xxx_Test_protoFile_messageTypes[8].MessageOf(m)
 }
-func (m xxx_Maps) Type() protoreflect.MessageType {
-	return xxx_Test_protoFile_MessageTypes[8].Type
-}
-func (m xxx_Maps) KnownFields() protoreflect.KnownFields {
-	return xxx_Test_protoFile_MessageTypes[8].KnownFieldsOf(m.m)
-}
-func (m xxx_Maps) UnknownFields() protoreflect.UnknownFields {
-	return xxx_Test_protoFile_MessageTypes[8].UnknownFieldsOf(m.m)
-}
-func (m xxx_Maps) Interface() protoreflect.ProtoMessage {
-	return m.m
-}
-
 func (m *Maps) Reset()         { *m = Maps{} }
 func (m *Maps) String() string { return proto.CompactTextString(m) }
 func (*Maps) ProtoMessage()    {}
 func (*Maps) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72, []int{8}
+	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{8}
 }
 
 func (m *Maps) XXX_Unmarshal(b []byte) error {
@@ -1055,29 +922,14 @@
 	XXX_sizecache        int32    `json:"-"`
 }
 
-type xxx_NestedWithRequired struct{ m *NestedWithRequired }
-
 func (m *NestedWithRequired) ProtoReflect() protoreflect.Message {
-	return xxx_NestedWithRequired{m}
+	return xxx_Test_protoFile_messageTypes[9].MessageOf(m)
 }
-func (m xxx_NestedWithRequired) Type() protoreflect.MessageType {
-	return xxx_Test_protoFile_MessageTypes[9].Type
-}
-func (m xxx_NestedWithRequired) KnownFields() protoreflect.KnownFields {
-	return xxx_Test_protoFile_MessageTypes[9].KnownFieldsOf(m.m)
-}
-func (m xxx_NestedWithRequired) UnknownFields() protoreflect.UnknownFields {
-	return xxx_Test_protoFile_MessageTypes[9].UnknownFieldsOf(m.m)
-}
-func (m xxx_NestedWithRequired) Interface() protoreflect.ProtoMessage {
-	return m.m
-}
-
 func (m *NestedWithRequired) Reset()         { *m = NestedWithRequired{} }
 func (m *NestedWithRequired) String() string { return proto.CompactTextString(m) }
 func (*NestedWithRequired) ProtoMessage()    {}
 func (*NestedWithRequired) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72, []int{9}
+	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{9}
 }
 
 func (m *NestedWithRequired) XXX_Unmarshal(b []byte) error {
@@ -1114,29 +966,14 @@
 	XXX_sizecache        int32                          `json:"-"`
 }
 
-type xxx_IndirectRequired struct{ m *IndirectRequired }
-
 func (m *IndirectRequired) ProtoReflect() protoreflect.Message {
-	return xxx_IndirectRequired{m}
+	return xxx_Test_protoFile_messageTypes[10].MessageOf(m)
 }
-func (m xxx_IndirectRequired) Type() protoreflect.MessageType {
-	return xxx_Test_protoFile_MessageTypes[10].Type
-}
-func (m xxx_IndirectRequired) KnownFields() protoreflect.KnownFields {
-	return xxx_Test_protoFile_MessageTypes[10].KnownFieldsOf(m.m)
-}
-func (m xxx_IndirectRequired) UnknownFields() protoreflect.UnknownFields {
-	return xxx_Test_protoFile_MessageTypes[10].UnknownFieldsOf(m.m)
-}
-func (m xxx_IndirectRequired) Interface() protoreflect.ProtoMessage {
-	return m.m
-}
-
 func (m *IndirectRequired) Reset()         { *m = IndirectRequired{} }
 func (m *IndirectRequired) String() string { return proto.CompactTextString(m) }
 func (*IndirectRequired) ProtoMessage()    {}
 func (*IndirectRequired) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72, []int{10}
+	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{10}
 }
 
 func (m *IndirectRequired) XXX_Unmarshal(b []byte) error {
@@ -1188,29 +1025,14 @@
 	XXX_sizecache                int32  `json:"-"`
 }
 
-type xxx_Extensions struct{ m *Extensions }
-
 func (m *Extensions) ProtoReflect() protoreflect.Message {
-	return xxx_Extensions{m}
+	return xxx_Test_protoFile_messageTypes[11].MessageOf(m)
 }
-func (m xxx_Extensions) Type() protoreflect.MessageType {
-	return xxx_Test_protoFile_MessageTypes[11].Type
-}
-func (m xxx_Extensions) KnownFields() protoreflect.KnownFields {
-	return xxx_Test_protoFile_MessageTypes[11].KnownFieldsOf(m.m)
-}
-func (m xxx_Extensions) UnknownFields() protoreflect.UnknownFields {
-	return xxx_Test_protoFile_MessageTypes[11].UnknownFieldsOf(m.m)
-}
-func (m xxx_Extensions) Interface() protoreflect.ProtoMessage {
-	return m.m
-}
-
 func (m *Extensions) Reset()         { *m = Extensions{} }
 func (m *Extensions) String() string { return proto.CompactTextString(m) }
 func (*Extensions) ProtoMessage()    {}
 func (*Extensions) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72, []int{11}
+	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{11}
 }
 
 var extRange_Extensions = []proto.ExtensionRange{
@@ -1266,29 +1088,14 @@
 	XXX_sizecache        int32    `json:"-"`
 }
 
-type xxx_ExtensionsContainer struct{ m *ExtensionsContainer }
-
 func (m *ExtensionsContainer) ProtoReflect() protoreflect.Message {
-	return xxx_ExtensionsContainer{m}
+	return xxx_Test_protoFile_messageTypes[12].MessageOf(m)
 }
-func (m xxx_ExtensionsContainer) Type() protoreflect.MessageType {
-	return xxx_Test_protoFile_MessageTypes[12].Type
-}
-func (m xxx_ExtensionsContainer) KnownFields() protoreflect.KnownFields {
-	return xxx_Test_protoFile_MessageTypes[12].KnownFieldsOf(m.m)
-}
-func (m xxx_ExtensionsContainer) UnknownFields() protoreflect.UnknownFields {
-	return xxx_Test_protoFile_MessageTypes[12].UnknownFieldsOf(m.m)
-}
-func (m xxx_ExtensionsContainer) Interface() protoreflect.ProtoMessage {
-	return m.m
-}
-
 func (m *ExtensionsContainer) Reset()         { *m = ExtensionsContainer{} }
 func (m *ExtensionsContainer) String() string { return proto.CompactTextString(m) }
 func (*ExtensionsContainer) ProtoMessage()    {}
 func (*ExtensionsContainer) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72, []int{12}
+	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{12}
 }
 
 func (m *ExtensionsContainer) XXX_Unmarshal(b []byte) error {
@@ -1316,29 +1123,14 @@
 	XXX_sizecache                int32  `json:"-"`
 }
 
-type xxx_MessageSet struct{ m *MessageSet }
-
 func (m *MessageSet) ProtoReflect() protoreflect.Message {
-	return xxx_MessageSet{m}
+	return xxx_Test_protoFile_messageTypes[13].MessageOf(m)
 }
-func (m xxx_MessageSet) Type() protoreflect.MessageType {
-	return xxx_Test_protoFile_MessageTypes[13].Type
-}
-func (m xxx_MessageSet) KnownFields() protoreflect.KnownFields {
-	return xxx_Test_protoFile_MessageTypes[13].KnownFieldsOf(m.m)
-}
-func (m xxx_MessageSet) UnknownFields() protoreflect.UnknownFields {
-	return xxx_Test_protoFile_MessageTypes[13].UnknownFieldsOf(m.m)
-}
-func (m xxx_MessageSet) Interface() protoreflect.ProtoMessage {
-	return m.m
-}
-
 func (m *MessageSet) Reset()         { *m = MessageSet{} }
 func (m *MessageSet) String() string { return proto.CompactTextString(m) }
 func (*MessageSet) ProtoMessage()    {}
 func (*MessageSet) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72, []int{13}
+	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{13}
 }
 
 var extRange_MessageSet = []proto.ExtensionRange{
@@ -1374,29 +1166,14 @@
 	XXX_sizecache        int32    `json:"-"`
 }
 
-type xxx_MessageSetExtension struct{ m *MessageSetExtension }
-
 func (m *MessageSetExtension) ProtoReflect() protoreflect.Message {
-	return xxx_MessageSetExtension{m}
+	return xxx_Test_protoFile_messageTypes[14].MessageOf(m)
 }
-func (m xxx_MessageSetExtension) Type() protoreflect.MessageType {
-	return xxx_Test_protoFile_MessageTypes[14].Type
-}
-func (m xxx_MessageSetExtension) KnownFields() protoreflect.KnownFields {
-	return xxx_Test_protoFile_MessageTypes[14].KnownFieldsOf(m.m)
-}
-func (m xxx_MessageSetExtension) UnknownFields() protoreflect.UnknownFields {
-	return xxx_Test_protoFile_MessageTypes[14].UnknownFieldsOf(m.m)
-}
-func (m xxx_MessageSetExtension) Interface() protoreflect.ProtoMessage {
-	return m.m
-}
-
 func (m *MessageSetExtension) Reset()         { *m = MessageSetExtension{} }
 func (m *MessageSetExtension) String() string { return proto.CompactTextString(m) }
 func (*MessageSetExtension) ProtoMessage()    {}
 func (*MessageSetExtension) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72, []int{14}
+	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{14}
 }
 
 func (m *MessageSetExtension) XXX_Unmarshal(b []byte) error {
@@ -1447,29 +1224,14 @@
 	XXX_sizecache        int32                 `json:"-"`
 }
 
-type xxx_KnownTypes struct{ m *KnownTypes }
-
 func (m *KnownTypes) ProtoReflect() protoreflect.Message {
-	return xxx_KnownTypes{m}
+	return xxx_Test_protoFile_messageTypes[15].MessageOf(m)
 }
-func (m xxx_KnownTypes) Type() protoreflect.MessageType {
-	return xxx_Test_protoFile_MessageTypes[15].Type
-}
-func (m xxx_KnownTypes) KnownFields() protoreflect.KnownFields {
-	return xxx_Test_protoFile_MessageTypes[15].KnownFieldsOf(m.m)
-}
-func (m xxx_KnownTypes) UnknownFields() protoreflect.UnknownFields {
-	return xxx_Test_protoFile_MessageTypes[15].UnknownFieldsOf(m.m)
-}
-func (m xxx_KnownTypes) Interface() protoreflect.ProtoMessage {
-	return m.m
-}
-
 func (m *KnownTypes) Reset()         { *m = KnownTypes{} }
 func (m *KnownTypes) String() string { return proto.CompactTextString(m) }
 func (*KnownTypes) ProtoMessage()    {}
 func (*KnownTypes) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72, []int{15}
+	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{15}
 }
 
 func (m *KnownTypes) XXX_Unmarshal(b []byte) error {
@@ -1612,29 +1374,14 @@
 	XXX_sizecache        int32                          `json:"-"`
 }
 
-type xxx_Nests_OptGroup struct{ m *Nests_OptGroup }
-
 func (m *Nests_OptGroup) ProtoReflect() protoreflect.Message {
-	return xxx_Nests_OptGroup{m}
+	return xxx_Test_protoFile_messageTypes[16].MessageOf(m)
 }
-func (m xxx_Nests_OptGroup) Type() protoreflect.MessageType {
-	return xxx_Test_protoFile_MessageTypes[16].Type
-}
-func (m xxx_Nests_OptGroup) KnownFields() protoreflect.KnownFields {
-	return xxx_Test_protoFile_MessageTypes[16].KnownFieldsOf(m.m)
-}
-func (m xxx_Nests_OptGroup) UnknownFields() protoreflect.UnknownFields {
-	return xxx_Test_protoFile_MessageTypes[16].UnknownFieldsOf(m.m)
-}
-func (m xxx_Nests_OptGroup) Interface() protoreflect.ProtoMessage {
-	return m.m
-}
-
 func (m *Nests_OptGroup) Reset()         { *m = Nests_OptGroup{} }
 func (m *Nests_OptGroup) String() string { return proto.CompactTextString(m) }
 func (*Nests_OptGroup) ProtoMessage()    {}
 func (*Nests_OptGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72, []int{3, 0}
+	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{3, 0}
 }
 
 func (m *Nests_OptGroup) XXX_Unmarshal(b []byte) error {
@@ -1690,29 +1437,14 @@
 	XXX_sizecache        int32    `json:"-"`
 }
 
-type xxx_Nests_RptGroup struct{ m *Nests_RptGroup }
-
 func (m *Nests_RptGroup) ProtoReflect() protoreflect.Message {
-	return xxx_Nests_RptGroup{m}
+	return xxx_Test_protoFile_messageTypes[17].MessageOf(m)
 }
-func (m xxx_Nests_RptGroup) Type() protoreflect.MessageType {
-	return xxx_Test_protoFile_MessageTypes[17].Type
-}
-func (m xxx_Nests_RptGroup) KnownFields() protoreflect.KnownFields {
-	return xxx_Test_protoFile_MessageTypes[17].KnownFieldsOf(m.m)
-}
-func (m xxx_Nests_RptGroup) UnknownFields() protoreflect.UnknownFields {
-	return xxx_Test_protoFile_MessageTypes[17].UnknownFieldsOf(m.m)
-}
-func (m xxx_Nests_RptGroup) Interface() protoreflect.ProtoMessage {
-	return m.m
-}
-
 func (m *Nests_RptGroup) Reset()         { *m = Nests_RptGroup{} }
 func (m *Nests_RptGroup) String() string { return proto.CompactTextString(m) }
 func (*Nests_RptGroup) ProtoMessage()    {}
 func (*Nests_RptGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72, []int{3, 1}
+	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{3, 1}
 }
 
 func (m *Nests_RptGroup) XXX_Unmarshal(b []byte) error {
@@ -1747,31 +1479,14 @@
 	XXX_sizecache        int32    `json:"-"`
 }
 
-type xxx_Nests_OptGroup_OptNestedGroup struct {
-	m *Nests_OptGroup_OptNestedGroup
-}
-
 func (m *Nests_OptGroup_OptNestedGroup) ProtoReflect() protoreflect.Message {
-	return xxx_Nests_OptGroup_OptNestedGroup{m}
+	return xxx_Test_protoFile_messageTypes[18].MessageOf(m)
 }
-func (m xxx_Nests_OptGroup_OptNestedGroup) Type() protoreflect.MessageType {
-	return xxx_Test_protoFile_MessageTypes[18].Type
-}
-func (m xxx_Nests_OptGroup_OptNestedGroup) KnownFields() protoreflect.KnownFields {
-	return xxx_Test_protoFile_MessageTypes[18].KnownFieldsOf(m.m)
-}
-func (m xxx_Nests_OptGroup_OptNestedGroup) UnknownFields() protoreflect.UnknownFields {
-	return xxx_Test_protoFile_MessageTypes[18].UnknownFieldsOf(m.m)
-}
-func (m xxx_Nests_OptGroup_OptNestedGroup) Interface() protoreflect.ProtoMessage {
-	return m.m
-}
-
 func (m *Nests_OptGroup_OptNestedGroup) Reset()         { *m = Nests_OptGroup_OptNestedGroup{} }
 func (m *Nests_OptGroup_OptNestedGroup) String() string { return proto.CompactTextString(m) }
 func (*Nests_OptGroup_OptNestedGroup) ProtoMessage()    {}
 func (*Nests_OptGroup_OptNestedGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72, []int{3, 0, 0}
+	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{3, 0, 0}
 }
 
 func (m *Nests_OptGroup_OptNestedGroup) XXX_Unmarshal(b []byte) error {
@@ -1953,7 +1668,7 @@
 }
 
 func init() {
-	proto.RegisterFile("encoding/textpb/testprotos/pb2/test.proto", fileDescriptor_c8d7acc1bcec9a72)
+	proto.RegisterFile("encoding/textpb/testprotos/pb2/test.proto", fileDescriptor_c8d7acc1bcec9a72_gzipped)
 	proto.RegisterEnum("pb2.Enum", Enum_name, Enum_value)
 	proto.RegisterEnum("pb2.Enums_NestedEnum", Enums_NestedEnum_name, Enums_NestedEnum_value)
 	proto.RegisterType((*Scalars)(nil), "pb2.Scalars")
@@ -2002,1295 +1717,547 @@
 }
 
 var fileDescriptor_c8d7acc1bcec9a72 = []byte{
-	// 1945 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x58, 0xdb, 0x6e, 0x1b, 0xc9,
-	0x11, 0xdd, 0x99, 0xe1, 0xb5, 0xa9, 0x0b, 0x3d, 0x92, 0xbd, 0x14, 0xbd, 0xbb, 0x1a, 0x13, 0x9b,
-	0x80, 0x11, 0xb0, 0x12, 0x32, 0xa2, 0x19, 0x81, 0x5a, 0xdb, 0xb0, 0xd6, 0xf4, 0xae, 0xd7, 0x59,
-	0x29, 0x20, 0xe9, 0x18, 0x58, 0x20, 0x10, 0x48, 0xb1, 0xc5, 0x1d, 0x84, 0x9c, 0x1e, 0xf6, 0x34,
-	0x6d, 0xe9, 0x3f, 0xf2, 0x0d, 0xc9, 0x1f, 0xe4, 0x21, 0xf9, 0x93, 0xfc, 0x44, 0x5e, 0xf2, 0x10,
-	0x20, 0x0f, 0x0e, 0xaa, 0x7a, 0x2e, 0xcd, 0x19, 0xde, 0xde, 0xa6, 0xbb, 0xea, 0x9c, 0xaa, 0xae,
-	0xea, 0xae, 0xea, 0x69, 0xf2, 0x1b, 0xea, 0xde, 0xb0, 0xa1, 0xe3, 0x8e, 0x4e, 0x04, 0xbd, 0x13,
-	0xde, 0xe0, 0x44, 0x50, 0x5f, 0x78, 0x9c, 0x09, 0xe6, 0x9f, 0x78, 0x03, 0x1b, 0x87, 0xc7, 0x38,
-	0x36, 0x0d, 0x6f, 0x60, 0x57, 0x0f, 0x46, 0x8c, 0x8d, 0xc6, 0xf4, 0x04, 0xa7, 0x06, 0xb3, 0xdb,
-	0x93, 0xbe, 0x7b, 0x2f, 0xe5, 0xd5, 0xc7, 0x49, 0x11, 0x9d, 0x78, 0x22, 0x14, 0x7e, 0x95, 0x14,
-	0x0e, 0x67, 0xbc, 0x2f, 0x1c, 0xe6, 0x06, 0xf2, 0x2f, 0x92, 0x72, 0x5f, 0xf0, 0xd9, 0x4d, 0x60,
-	0xba, 0x7a, 0x98, 0x94, 0x0a, 0x67, 0x42, 0x7d, 0xd1, 0x9f, 0x78, 0xcb, 0xe8, 0x3f, 0xf2, 0xbe,
-	0xe7, 0x51, 0xee, 0x4b, 0x79, 0xed, 0x5f, 0x06, 0xc9, 0x77, 0x6f, 0xfa, 0xe3, 0x3e, 0xf7, 0xcd,
-	0x03, 0x52, 0x60, 0x9e, 0xb8, 0x1e, 0x30, 0x36, 0xae, 0x68, 0x96, 0x56, 0x2f, 0x74, 0xf2, 0xcc,
-	0x13, 0x17, 0x8c, 0x8d, 0xcd, 0xc7, 0xa4, 0x08, 0x22, 0xc7, 0x15, 0xa7, 0x76, 0x45, 0xb7, 0xb4,
-	0x7a, 0xb6, 0x03, 0xba, 0x6f, 0x60, 0xac, 0x08, 0x9b, 0x8d, 0x8a, 0x61, 0x69, 0x75, 0x23, 0x14,
-	0x36, 0x1b, 0xe6, 0x97, 0x84, 0x80, 0x70, 0x26, 0xa1, 0x19, 0x4b, 0xab, 0x6f, 0x77, 0x40, 0xfd,
-	0x1d, 0x4e, 0xa8, 0xe2, 0x66, 0xa3, 0x92, 0xb5, 0xb4, 0x7a, 0x26, 0x12, 0xc7, 0x68, 0x5f, 0xa2,
-	0x73, 0x96, 0x56, 0x7f, 0x80, 0xe2, 0xee, 0x1c, 0xda, 0x97, 0xe8, 0xbc, 0xa5, 0xd5, 0xcd, 0x48,
-	0xdc, 0x6c, 0x98, 0x87, 0xa4, 0x04, 0xe2, 0x5b, 0xe7, 0x8e, 0x0e, 0x4f, 0xed, 0x4a, 0xc1, 0xd2,
-	0xea, 0xf9, 0x0e, 0x20, 0x5e, 0xcb, 0x99, 0x39, 0x85, 0x66, 0xa3, 0x52, 0xb4, 0xb4, 0x7a, 0x2e,
-	0x56, 0x68, 0x36, 0xcc, 0x27, 0x64, 0x0b, 0x0d, 0x84, 0x14, 0xc4, 0xd2, 0xea, 0xbb, 0x1d, 0x00,
-	0x75, 0x83, 0xa9, 0x79, 0x95, 0x66, 0xa3, 0x52, 0xb2, 0xb4, 0x7a, 0x59, 0x51, 0x69, 0x36, 0xc2,
-	0x00, 0xdd, 0x8e, 0x59, 0x5f, 0x54, 0xf6, 0x2d, 0xad, 0xae, 0x63, 0x80, 0x5e, 0xc3, 0x38, 0x5c,
-	0xc3, 0x90, 0xcd, 0x06, 0x63, 0x5a, 0x79, 0x68, 0x69, 0x75, 0x0d, 0xd7, 0xf0, 0x0a, 0x27, 0x42,
-	0xec, 0xe0, 0x5e, 0x50, 0xbf, 0xb2, 0x63, 0x69, 0xf5, 0x2d, 0xc4, 0x5e, 0xc0, 0x38, 0x5a, 0xbf,
-	0xe0, 0x8e, 0x3b, 0xaa, 0x6c, 0x5b, 0x5a, 0xbd, 0x28, 0xd7, 0x8f, 0x13, 0xb5, 0xbf, 0xe8, 0x24,
-	0xdf, 0xa1, 0x1e, 0xed, 0x0b, 0x4c, 0x2e, 0x8f, 0x93, 0x6b, 0x40, 0x72, 0x79, 0x9c, 0x5c, 0xae,
-	0x24, 0xd7, 0x80, 0xe4, 0x72, 0x25, 0xb9, 0x5c, 0x49, 0xae, 0x01, 0xc9, 0xe5, 0x4a, 0x72, 0xb9,
-	0x9a, 0x5c, 0x03, 0x92, 0xcb, 0xd5, 0xe4, 0x72, 0x35, 0xb9, 0x06, 0x24, 0x97, 0x47, 0xc9, 0x0d,
-	0xa8, 0x65, 0x58, 0x72, 0x96, 0x01, 0x61, 0xe1, 0x4a, 0x58, 0x78, 0x1c, 0x96, 0xbc, 0x65, 0x40,
-	0x58, 0x78, 0x14, 0x96, 0x40, 0x1c, 0xac, 0x7c, 0xd7, 0x32, 0x60, 0xe5, 0x3c, 0x5c, 0x79, 0x48,
-	0x1d, 0x46, 0xcd, 0x80, 0xa8, 0xf1, 0x20, 0x6a, 0xb5, 0xff, 0x69, 0x24, 0xdb, 0x76, 0x67, 0x13,
-	0xdf, 0xfc, 0x5a, 0xee, 0x78, 0xea, 0xce, 0x26, 0xb8, 0xe3, 0x77, 0xec, 0xe2, 0xb1, 0x37, 0xb0,
-	0x8f, 0x41, 0x8a, 0x9b, 0x1f, 0x3e, 0x40, 0x8b, 0x87, 0x5a, 0x10, 0x9e, 0x79, 0x2d, 0x1e, 0x68,
-	0x3d, 0x23, 0xbb, 0xc0, 0xe5, 0x52, 0x5f, 0xd0, 0xa1, 0x54, 0x36, 0x90, 0xf2, 0x61, 0xa4, 0xec,
-	0x1f, 0x5f, 0xa2, 0x14, 0x81, 0xdb, 0xcc, 0x13, 0xf1, 0x10, 0xe0, 0x3c, 0x01, 0xcf, 0xa0, 0xad,
-	0x65, 0x70, 0xae, 0xc2, 0x6b, 0x75, 0x42, 0x14, 0xb2, 0x3c, 0x31, 0xde, 0x5d, 0x5e, 0x95, 0x35,
-	0xf8, 0x78, 0x75, 0xd5, 0x2d, 0xeb, 0x66, 0x81, 0x64, 0x5e, 0xbd, 0x69, 0xff, 0x5c, 0x26, 0xb5,
-	0x7f, 0x1b, 0x24, 0x0b, 0xaa, 0xbe, 0x79, 0x24, 0x77, 0x8f, 0x34, 0x89, 0xeb, 0x2f, 0xd9, 0x25,
-	0xb4, 0x26, 0xa9, 0x70, 0x2b, 0xc9, 0x4f, 0xf3, 0x04, 0x23, 0x35, 0xe2, 0x6c, 0xe6, 0xe1, 0xf9,
-	0x27, 0xf6, 0x5e, 0xa4, 0xe9, 0x1f, 0x5f, 0x79, 0xe2, 0x7b, 0x10, 0x75, 0x22, 0x25, 0x20, 0x8f,
-	0xd7, 0x83, 0x1b, 0x27, 0x49, 0xce, 0x55, 0x72, 0x1e, 0x92, 0xc3, 0xa2, 0xe7, 0xc9, 0x3b, 0x11,
-	0x79, 0xa8, 0x54, 0xfd, 0x8f, 0x46, 0x0a, 0xa1, 0xcd, 0x55, 0x65, 0x6b, 0xfe, 0x7c, 0xe8, 0x89,
-	0xf3, 0x91, 0x08, 0x80, 0xb1, 0x32, 0x00, 0x3f, 0x92, 0x1d, 0xe6, 0x09, 0xa9, 0x1a, 0x7a, 0x0a,
-	0x61, 0xa8, 0x2d, 0x08, 0x03, 0x7c, 0x48, 0x98, 0x74, 0x3c, 0x81, 0xac, 0x36, 0xc9, 0xce, 0xbc,
-	0xc6, 0x66, 0x1b, 0xb1, 0xfa, 0x2b, 0x52, 0xe8, 0x28, 0xab, 0x5e, 0x72, 0x9e, 0x3b, 0x3b, 0x9c,
-	0xfa, 0x94, 0x7f, 0xa0, 0xc3, 0xeb, 0x5b, 0x87, 0x8e, 0x87, 0xb5, 0x2e, 0xc9, 0x05, 0x8b, 0x98,
-	0x8f, 0x87, 0xb6, 0x3a, 0x1e, 0xfa, 0xaa, 0x78, 0xd4, 0xfe, 0xab, 0x93, 0x62, 0x87, 0x4e, 0x67,
-	0x0e, 0xa7, 0x43, 0x59, 0x5d, 0xe8, 0x34, 0xf4, 0x46, 0x47, 0x6f, 0xe8, 0x14, 0x73, 0x70, 0x48,
-	0x4a, 0x20, 0x0a, 0x2b, 0xa8, 0x6e, 0xe9, 0x50, 0x84, 0x39, 0x9d, 0x2a, 0x45, 0x38, 0x52, 0xc0,
-	0x1a, 0xa3, 0x43, 0x11, 0x0e, 0x15, 0x64, 0x11, 0x06, 0x85, 0xa8, 0x08, 0x67, 0x2c, 0x1d, 0x8a,
-	0x30, 0xa7, 0x53, 0xb5, 0x08, 0xc7, 0x2a, 0x58, 0x6b, 0x74, 0x28, 0xc2, 0x91, 0x4a, 0x50, 0x6d,
-	0xc0, 0x4c, 0x50, 0x6d, 0x74, 0xac, 0x36, 0x74, 0x1a, 0x57, 0x1b, 0x3a, 0x8d, 0xab, 0x8d, 0x8e,
-	0xd5, 0x86, 0x4e, 0x95, 0x6a, 0x03, 0xf4, 0x32, 0x6e, 0x05, 0x4b, 0xc7, 0x6a, 0x43, 0xa7, 0x4a,
-	0xb5, 0x81, 0xd5, 0x63, 0xb5, 0x29, 0x5a, 0x3a, 0x56, 0x1b, 0x3a, 0x95, 0x35, 0xfa, 0x6b, 0x19,
-	0x1a, 0x4c, 0x2d, 0xb1, 0xf4, 0x64, 0xf5, 0xa0, 0x53, 0x3c, 0xb1, 0x47, 0xd2, 0x42, 0x10, 0xfa,
-	0x92, 0xa5, 0xa7, 0x8f, 0x0b, 0x9d, 0x06, 0xa1, 0xbf, 0x22, 0xbb, 0x7f, 0xe8, 0x73, 0xe1, 0xf4,
-	0xc7, 0x61, 0x02, 0x12, 0x0e, 0x6a, 0x49, 0x07, 0x57, 0x9f, 0x83, 0xda, 0x6b, 0x92, 0xbb, 0x72,
-	0x29, 0xbb, 0xf5, 0x4d, 0x93, 0x18, 0xbe, 0xe0, 0x72, 0x67, 0xfc, 0xf0, 0x59, 0x07, 0x06, 0xe6,
-	0x21, 0x31, 0x26, 0xfe, 0x68, 0xc1, 0x76, 0x00, 0x85, 0x89, 0x3f, 0xba, 0xc8, 0x93, 0xec, 0xcc,
-	0x75, 0x98, 0x5b, 0xfb, 0x67, 0x8e, 0x64, 0x7e, 0xea, 0x7b, 0xbe, 0x79, 0x4e, 0xb6, 0xb0, 0x03,
-	0x5c, 0x0b, 0x76, 0x2d, 0xf9, 0xe0, 0xf8, 0x1f, 0x20, 0x16, 0x14, 0x8e, 0xb1, 0xb7, 0xf4, 0x58,
-	0x57, 0xf0, 0xb6, 0x2b, 0xf8, 0x7d, 0x87, 0x38, 0xd1, 0x84, 0xf9, 0x3d, 0x29, 0x87, 0x79, 0x04,
-	0x3c, 0xee, 0x29, 0x1d, 0x09, 0xbe, 0x8c, 0x09, 0xc2, 0xb4, 0xf6, 0x18, 0x6c, 0x32, 0x49, 0xb2,
-	0xe3, 0xcf, 0x4d, 0x9a, 0x2f, 0xc9, 0x0e, 0x80, 0x81, 0x24, 0xe8, 0x50, 0xb2, 0x0c, 0x3d, 0x8e,
-	0x69, 0x40, 0xaf, 0xc7, 0x64, 0xbb, 0x92, 0x24, 0x5b, 0x03, 0x65, 0x0a, 0x28, 0x64, 0xf7, 0x02,
-	0x92, 0xa8, 0x28, 0xcf, 0x51, 0xc8, 0x66, 0xd6, 0x63, 0x90, 0xc6, 0x80, 0x62, 0xa6, 0x4c, 0x99,
-	0xcf, 0xc9, 0xb6, 0x2f, 0x38, 0xe0, 0x83, 0xe4, 0x66, 0x91, 0xa1, 0xaa, 0xac, 0x45, 0xf0, 0x1e,
-	0x0b, 0xab, 0x37, 0x10, 0x94, 0xfc, 0x78, 0x46, 0xc1, 0x33, 0xcc, 0x11, 0x76, 0xca, 0x34, 0x5e,
-	0x26, 0x50, 0xc5, 0xcb, 0x99, 0xea, 0x33, 0xb2, 0x9b, 0x88, 0xb6, 0x59, 0x26, 0xc6, 0x9f, 0xe9,
-	0x3d, 0x66, 0x39, 0xdb, 0x81, 0x4f, 0x73, 0x9f, 0x64, 0x3f, 0xf4, 0xc7, 0x33, 0x1a, 0xec, 0x0d,
-	0x39, 0x68, 0xe9, 0x67, 0x5a, 0xf5, 0x25, 0xd9, 0x5b, 0x10, 0x6b, 0x95, 0xa2, 0xbc, 0x80, 0xa2,
-	0xa0, 0x52, 0xbc, 0x20, 0x0f, 0x52, 0x71, 0x56, 0x09, 0x0a, 0x0b, 0x08, 0xb6, 0x55, 0x82, 0x1f,
-	0xc9, 0x83, 0x54, 0x94, 0x55, 0x82, 0x8c, 0x24, 0x38, 0x54, 0x09, 0xe6, 0x8e, 0x99, 0xc2, 0xf5,
-	0x96, 0x94, 0x93, 0xf1, 0x56, 0xa9, 0x8a, 0x92, 0xea, 0x89, 0x4a, 0x95, 0x38, 0x89, 0x0b, 0xc8,
-	0x94, 0xe0, 0x6f, 0x4a, 0x26, 0x21, 0x0a, 0x59, 0xed, 0x94, 0x98, 0xd2, 0xc2, 0x7b, 0x47, 0xfc,
-	0xb2, 0xe1, 0xc9, 0xae, 0xfd, 0x4d, 0x27, 0xe5, 0x37, 0xee, 0xd0, 0xe1, 0xf4, 0x46, 0x44, 0x98,
-	0xe6, 0x82, 0xc6, 0xfe, 0xb9, 0xb2, 0x04, 0xd5, 0x80, 0xda, 0xe3, 0x9a, 0x73, 0x3d, 0x5b, 0x9e,
-	0xb9, 0xe5, 0x38, 0xae, 0xf4, 0xc6, 0xc4, 0x16, 0x97, 0xe7, 0xec, 0xd7, 0x08, 0x4d, 0x7a, 0xb7,
-	0x7a, 0xbb, 0x57, 0xdf, 0x6f, 0x94, 0x9f, 0x6f, 0xe6, 0x43, 0xba, 0xd4, 0x49, 0x25, 0xbc, 0x0e,
-	0x21, 0xed, 0x3b, 0x41, 0x5d, 0xdf, 0x61, 0xae, 0xbf, 0xae, 0x13, 0xaa, 0x77, 0x0a, 0xba, 0xf9,
-	0xaf, 0xd0, 0x51, 0xa6, 0xb0, 0x5f, 0xa6, 0xb5, 0x7f, 0x18, 0x64, 0x2f, 0xb6, 0xf5, 0x1d, 0x73,
-	0x45, 0xdf, 0x71, 0x29, 0xb7, 0x7f, 0x2b, 0x7f, 0x15, 0xe8, 0x9d, 0x64, 0x36, 0x77, 0xe5, 0x0e,
-	0x8d, 0x34, 0x2b, 0xa7, 0x68, 0x0a, 0x3c, 0x6b, 0xdf, 0xa1, 0x35, 0xfb, 0x29, 0x5e, 0x3b, 0x10,
-	0x22, 0x7d, 0x4d, 0x83, 0x1a, 0xe8, 0xfc, 0x96, 0x04, 0x49, 0xff, 0xed, 0x6f, 0x63, 0x4b, 0x50,
-	0xb5, 0xd2, 0xa0, 0xa7, 0xc9, 0x23, 0x12, 0x18, 0x85, 0x6f, 0xfb, 0x22, 0x36, 0x2a, 0x13, 0x9a,
-	0xc6, 0x37, 0xd3, 0xe7, 0x22, 0xf0, 0x40, 0x8e, 0xc0, 0x71, 0xbe, 0xc6, 0xf1, 0x67, 0x78, 0x6b,
-	0xdf, 0xe2, 0x09, 0xc7, 0xf9, 0x4a, 0xc7, 0x9f, 0x27, 0x2f, 0xe0, 0x84, 0xcf, 0x39, 0xce, 0xd7,
-	0x38, 0xfe, 0x22, 0x7d, 0x13, 0x0d, 0x3c, 0x08, 0xba, 0x6b, 0x95, 0x90, 0x9f, 0xa8, 0xef, 0xf7,
-	0x47, 0xb4, 0x4b, 0xc5, 0x51, 0xa1, 0x90, 0x29, 0x7f, 0xfa, 0xf4, 0xe9, 0x53, 0xbe, 0xa5, 0x17,
-	0xb4, 0xda, 0xdf, 0x75, 0xb2, 0x17, 0x0b, 0x23, 0xd6, 0x35, 0xbb, 0xc9, 0xfe, 0x13, 0x79, 0x38,
-	0x91, 0xa8, 0x6b, 0x9f, 0xa2, 0x7b, 0x01, 0x4e, 0x7a, 0x17, 0x33, 0xe2, 0xff, 0x65, 0xc9, 0xae,
-	0x24, 0xa6, 0x23, 0x43, 0x9d, 0xbd, 0x49, 0x7a, 0xd2, 0x1e, 0x92, 0x03, 0x97, 0x89, 0xeb, 0x0d,
-	0x4d, 0xec, 0xaf, 0x31, 0xf1, 0xc8, 0x65, 0x62, 0xc1, 0xbc, 0x7d, 0x4e, 0x48, 0x2a, 0xae, 0x0a,
-	0xed, 0x57, 0x0b, 0x6e, 0x8b, 0x34, 0x0a, 0xea, 0x5f, 0xf3, 0x84, 0xbc, 0x75, 0xd9, 0x47, 0xb7,
-	0x77, 0xef, 0x51, 0xdf, 0x7c, 0x9a, 0xb8, 0xb2, 0x43, 0x3b, 0x93, 0x0f, 0x15, 0xc7, 0xe1, 0x43,
-	0x05, 0xb6, 0xe6, 0x3f, 0xc2, 0xe9, 0x8d, 0x8f, 0xde, 0x59, 0xf2, 0xe8, 0x41, 0x23, 0x4e, 0xe2,
-	0xf0, 0x20, 0x4a, 0x60, 0xfc, 0x44, 0x71, 0x96, 0x7c, 0xa2, 0x58, 0x82, 0x6c, 0x36, 0xe6, 0x90,
-	0xcd, 0x86, 0x79, 0x9e, 0x7a, 0xbf, 0x28, 0xd9, 0x5f, 0xa4, 0xa0, 0xef, 0x14, 0xab, 0xca, 0xeb,
-	0xc6, 0x79, 0xea, 0x75, 0x63, 0x19, 0x38, 0x34, 0xac, 0xbc, 0x7d, 0x9c, 0xa9, 0xaf, 0x06, 0xb9,
-	0x25, 0x3e, 0xe3, 0xf5, 0x35, 0xf6, 0x59, 0xde, 0x66, 0xcf, 0xe7, 0x9e, 0x14, 0xf2, 0x4b, 0xcc,
-	0xca, 0xbb, 0x6d, 0x6c, 0x36, 0xb8, 0xeb, 0x9e, 0xcf, 0xed, 0xe5, 0xc2, 0x12, 0xb0, 0xdc, 0xd9,
-	0x31, 0x38, 0xa8, 0x9b, 0x67, 0xea, 0x6b, 0x45, 0x71, 0x89, 0xcf, 0x78, 0x2f, 0x8e, 0x7d, 0x96,
-	0xd7, 0xe4, 0xa0, 0x62, 0x85, 0xaf, 0x5f, 0xc1, 0x36, 0x3d, 0x48, 0x7b, 0x1d, 0x28, 0xe0, 0x0b,
-	0x4b, 0x38, 0x30, 0x5f, 0x10, 0xf8, 0x9d, 0xbe, 0x8e, 0x5e, 0xbf, 0xf0, 0x1d, 0x65, 0xd1, 0xae,
-	0xea, 0x85, 0x1a, 0x58, 0xae, 0xa2, 0x51, 0xd8, 0x32, 0xe5, 0xe3, 0x5a, 0xe5, 0x20, 0xe8, 0x2a,
-	0x0b, 0x56, 0x3d, 0xbb, 0x11, 0xe1, 0x82, 0x67, 0x37, 0x22, 0xdc, 0xc9, 0x63, 0xc7, 0x17, 0x95,
-	0xea, 0x12, 0x9b, 0xbf, 0x77, 0x7c, 0x11, 0xef, 0x64, 0x18, 0x99, 0xa7, 0x32, 0x4e, 0xb2, 0x87,
-	0x3d, 0x46, 0xdc, 0xa3, 0x14, 0x2e, 0x0e, 0x11, 0x7e, 0x85, 0x20, 0x7c, 0x3d, 0x0c, 0xce, 0x5b,
-	0x1a, 0xd4, 0x06, 0x29, 0x82, 0xf0, 0xcb, 0xfc, 0x86, 0x80, 0xd1, 0xeb, 0xbe, 0x7b, 0x5f, 0xb1,
-	0x10, 0xb2, 0x9f, 0x82, 0xbc, 0x74, 0xef, 0x3b, 0x39, 0xe6, 0x89, 0x97, 0xee, 0xfd, 0xd1, 0x53,
-	0x92, 0xc1, 0x5b, 0x6b, 0x89, 0xe4, 0xdf, 0x5d, 0xbe, 0xbd, 0xbc, 0x7a, 0x7f, 0x59, 0xfe, 0xcc,
-	0x2c, 0x92, 0xec, 0xeb, 0x37, 0x9d, 0x6e, 0xaf, 0xac, 0x99, 0x84, 0xe4, 0xba, 0xed, 0xef, 0xae,
-	0x2e, 0x5f, 0x95, 0x75, 0x98, 0xee, 0xb5, 0x2f, 0x7b, 0x3f, 0x94, 0x49, 0x6b, 0x6d, 0x67, 0x7b,
-	0x98, 0xec, 0x6c, 0xad, 0x0d, 0x3a, 0xdb, 0xa3, 0x74, 0x67, 0x6b, 0xad, 0xed, 0x6c, 0x9f, 0xaf,
-	0xe8, 0x6c, 0xad, 0x0d, 0x3a, 0x5b, 0x65, 0x4d, 0x67, 0x6b, 0xfd, 0x4e, 0xbe, 0xd4, 0x00, 0x47,
-	0xf8, 0xfb, 0x99, 0x22, 0x39, 0xb4, 0x8c, 0x7a, 0x1e, 0xdf, 0x68, 0xda, 0x77, 0xe1, 0x6b, 0x63,
-	0x6b, 0x6d, 0x6f, 0xb3, 0x56, 0xf4, 0xb6, 0xd6, 0x06, 0xbd, 0xed, 0xc9, 0x9a, 0xde, 0x76, 0xf1,
-	0xfc, 0xe7, 0x6f, 0x47, 0x8e, 0xf8, 0x65, 0x36, 0x38, 0xbe, 0x61, 0x93, 0x93, 0x11, 0x1b, 0xf7,
-	0xdd, 0x51, 0xfc, 0x34, 0xfc, 0xc1, 0x3e, 0x59, 0xfd, 0xe8, 0xfd, 0xff, 0x00, 0x00, 0x00, 0xff,
-	0xff, 0x59, 0x20, 0x4f, 0x36, 0x15, 0x17, 0x00, 0x00,
+	// 5909 bytes of the wire-encoded FileDescriptorProto
+	0x0a, 0x29, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x70,
+	0x62, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x70, 0x62, 0x32,
+	0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x70, 0x62, 0x32,
+	0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+	0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f,
+	0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70,
+	0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69,
+	0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+	0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72,
+	0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xda, 0x03, 0x0a, 0x07, 0x53, 0x63, 0x61, 0x6c,
+	0x61, 0x72, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x1b,
+	0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x05, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1b, 0x0a, 0x09, 0x6f,
+	0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08,
+	0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f,
+	0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6f, 0x70,
+	0x74, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x75,
+	0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6f, 0x70, 0x74,
+	0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x69,
+	0x6e, 0x74, 0x33, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53,
+	0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x69,
+	0x6e, 0x74, 0x36, 0x34, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x69, 0x78, 0x65,
+	0x64, 0x33, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x46, 0x69,
+	0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x69, 0x78,
+	0x65, 0x64, 0x36, 0x34, 0x18, 0x09, 0x20, 0x01, 0x28, 0x06, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x46,
+	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x66,
+	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x0b, 0x6f, 0x70,
+	0x74, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x70, 0x74,
+	0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x10, 0x52,
+	0x0b, 0x6f, 0x70, 0x74, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x1b, 0x0a, 0x09,
+	0x6f, 0x70, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x02, 0x52,
+	0x08, 0x6f, 0x70, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74,
+	0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x6f,
+	0x70, 0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f,
+	0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6f, 0x70, 0x74,
+	0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72,
+	0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74,
+	0x72, 0x69, 0x6e, 0x67, 0x22, 0x94, 0x02, 0x0a, 0x07, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x73,
+	0x12, 0x19, 0x0a, 0x08, 0x72, 0x70, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x03,
+	0x28, 0x08, 0x52, 0x07, 0x72, 0x70, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x72,
+	0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08,
+	0x72, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x70, 0x74, 0x5f,
+	0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x72, 0x70, 0x74,
+	0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e,
+	0x74, 0x33, 0x32, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x70, 0x74, 0x55, 0x69,
+	0x6e, 0x74, 0x33, 0x32, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74,
+	0x36, 0x34, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, 0x52, 0x09, 0x72, 0x70, 0x74, 0x55, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x70, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74,
+	0x18, 0x06, 0x20, 0x03, 0x28, 0x02, 0x52, 0x08, 0x72, 0x70, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74,
+	0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x07,
+	0x20, 0x03, 0x28, 0x01, 0x52, 0x09, 0x72, 0x70, 0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12,
+	0x1d, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0f, 0x20,
+	0x03, 0x28, 0x09, 0x52, 0x09, 0x72, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1b,
+	0x0a, 0x09, 0x72, 0x70, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28,
+	0x0c, 0x52, 0x08, 0x72, 0x70, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xfb, 0x01, 0x0a, 0x05,
+	0x45, 0x6e, 0x75, 0x6d, 0x73, 0x12, 0x24, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x6e, 0x75,
+	0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e,
+	0x75, 0x6d, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x24, 0x0a, 0x08, 0x72,
+	0x70, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x09, 0x2e,
+	0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x07, 0x72, 0x70, 0x74, 0x45, 0x6e, 0x75,
+	0x6d, 0x12, 0x3d, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f,
+	0x65, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x62, 0x32,
+	0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75,
+	0x6d, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d,
+	0x12, 0x3d, 0x0a, 0x0f, 0x72, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65,
+	0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x62, 0x32, 0x2e,
+	0x45, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d,
+	0x52, 0x0d, 0x72, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x22,
+	0x28, 0x0a, 0x0a, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x07, 0x0a,
+	0x03, 0x55, 0x4e, 0x4f, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x44, 0x4f, 0x53, 0x10, 0x02, 0x12,
+	0x08, 0x0a, 0x04, 0x44, 0x49, 0x45, 0x5a, 0x10, 0x0a, 0x22, 0xef, 0x03, 0x0a, 0x05, 0x4e, 0x65,
+	0x73, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12,
+	0x2f, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x0a, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x4f, 0x70,
+	0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70,
+	0x12, 0x2a, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x03,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x52, 0x09, 0x72, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x2f, 0x0a, 0x08,
+	0x72, 0x70, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x13,
+	0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x52, 0x70, 0x74, 0x47, 0x72,
+	0x6f, 0x75, 0x70, 0x52, 0x08, 0x72, 0x70, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0xf4, 0x01,
+	0x0a, 0x08, 0x4f, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x70,
+	0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6f, 0x70,
+	0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72,
+	0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74,
+	0x72, 0x69, 0x6e, 0x67, 0x12, 0x2a, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x12, 0x4a, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x67, 0x72, 0x6f,
+	0x75, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0a, 0x32, 0x22, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e,
+	0x65, 0x73, 0x74, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x4f, 0x70,
+	0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0e, 0x6f, 0x70,
+	0x74, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x36, 0x0a, 0x0e,
+	0x4f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x24,
+	0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
+	0x32, 0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x07, 0x6f, 0x70, 0x74,
+	0x45, 0x6e, 0x75, 0x6d, 0x1a, 0x25, 0x0a, 0x08, 0x52, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70,
+	0x12, 0x19, 0x0a, 0x08, 0x72, 0x70, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x03,
+	0x28, 0x08, 0x52, 0x07, 0x72, 0x70, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x0e, 0x72, 0x65, 0x73,
+	0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x53, 0x0a, 0x06, 0x4e,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72,
+	0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74,
+	0x72, 0x69, 0x6e, 0x67, 0x12, 0x2a, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x22, 0xf8, 0x02, 0x0a, 0x09, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x73, 0x12, 0x19,
+	0x0a, 0x08, 0x72, 0x65, 0x71, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x02, 0x28, 0x08,
+	0x52, 0x07, 0x72, 0x65, 0x71, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x71,
+	0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x02, 0x20, 0x02, 0x28, 0x07, 0x52, 0x0a,
+	0x72, 0x65, 0x71, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65,
+	0x71, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x03, 0x20, 0x02, 0x28, 0x06, 0x52,
+	0x0a, 0x72, 0x65, 0x71, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x21, 0x0a, 0x0c, 0x72,
+	0x65, 0x71, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x04, 0x20, 0x02, 0x28,
+	0x0f, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x21,
+	0x0a, 0x0c, 0x72, 0x65, 0x71, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x05,
+	0x20, 0x02, 0x28, 0x10, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
+	0x34, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x06,
+	0x20, 0x02, 0x28, 0x02, 0x52, 0x08, 0x72, 0x65, 0x71, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x1d,
+	0x0a, 0x0a, 0x72, 0x65, 0x71, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x02,
+	0x28, 0x01, 0x52, 0x09, 0x72, 0x65, 0x71, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x0a,
+	0x0a, 0x72, 0x65, 0x71, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x02, 0x28,
+	0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1b, 0x0a, 0x09,
+	0x72, 0x65, 0x71, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x02, 0x28, 0x0c, 0x52,
+	0x08, 0x72, 0x65, 0x71, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x08, 0x72, 0x65, 0x71,
+	0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x0a, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62,
+	0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x07, 0x72, 0x65, 0x71, 0x45, 0x6e, 0x75, 0x6d, 0x12,
+	0x2a, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x0b, 0x20,
+	0x02, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x52, 0x09, 0x72, 0x65, 0x71, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22, 0x4f, 0x0a, 0x0f, 0x50,
+	0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x1d,
+	0x0a, 0x0a, 0x72, 0x65, 0x71, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x02,
+	0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x0a,
+	0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x46, 0x0a, 0x06,
+	0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x73, 0x12, 0x12, 0x0a, 0x03, 0x73, 0x74, 0x72, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x73, 0x74, 0x72, 0x12, 0x1f, 0x0a, 0x03, 0x6d, 0x73,
+	0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x42, 0x07, 0x0a, 0x05, 0x75,
+	0x6e, 0x69, 0x6f, 0x6e, 0x22, 0xbb, 0x06, 0x0a, 0x04, 0x4d, 0x61, 0x70, 0x73, 0x12, 0x3b, 0x0a,
+	0x0c, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x74, 0x72, 0x18, 0x01, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x61, 0x70, 0x73, 0x2e, 0x49,
+	0x6e, 0x74, 0x33, 0x32, 0x54, 0x6f, 0x53, 0x74, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a,
+	0x69, 0x6e, 0x74, 0x33, 0x32, 0x54, 0x6f, 0x53, 0x74, 0x72, 0x12, 0x47, 0x0a, 0x10, 0x73, 0x66,
+	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x5f, 0x74, 0x6f, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x02,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x61, 0x70, 0x73, 0x2e,
+	0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x54, 0x6f, 0x42, 0x6f, 0x6f, 0x6c, 0x45, 0x6e,
+	0x74, 0x72, 0x79, 0x52, 0x0e, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x54, 0x6f, 0x42,
+	0x6f, 0x6f, 0x6c, 0x12, 0x41, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x74, 0x6f, 0x5f, 0x75,
+	0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x62,
+	0x32, 0x2e, 0x4d, 0x61, 0x70, 0x73, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x54, 0x6f, 0x55, 0x69, 0x6e,
+	0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6c, 0x54, 0x6f,
+	0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x41, 0x0a, 0x0e, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34,
+	0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b,
+	0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x61, 0x70, 0x73, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34,
+	0x54, 0x6f, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x75, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x54, 0x6f, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x3e, 0x0a, 0x0d, 0x73, 0x74, 0x72,
+	0x5f, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x1a, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x61, 0x70, 0x73, 0x2e, 0x53, 0x74, 0x72, 0x54,
+	0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x73, 0x74,
+	0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x3e, 0x0a, 0x0d, 0x73, 0x74, 0x72,
+	0x5f, 0x74, 0x6f, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x1a, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x61, 0x70, 0x73, 0x2e, 0x53, 0x74, 0x72, 0x54,
+	0x6f, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x73, 0x74,
+	0x72, 0x54, 0x6f, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x49, 0x6e, 0x74,
+	0x33, 0x32, 0x54, 0x6f, 0x53, 0x74, 0x72, 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, 0x09, 0x52, 0x05, 0x76,
+	0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x53, 0x66, 0x69, 0x78,
+	0x65, 0x64, 0x36, 0x34, 0x54, 0x6f, 0x42, 0x6f, 0x6f, 0x6c, 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, 0x08,
+	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3f, 0x0a, 0x11, 0x42,
+	0x6f, 0x6f, 0x6c, 0x54, 0x6f, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 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,
+	0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4a, 0x0a, 0x11,
+	0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x54, 0x6f, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72,
+	0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03,
+	0x6b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x76,
+	0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4b, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x54,
+	0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
+	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x21,
+	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e,
+	0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4b, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x54, 0x6f, 0x4f, 0x6e,
+	0x65, 0x6f, 0x66, 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, 0x21, 0x0a, 0x05, 0x76,
+	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32,
+	0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
+	0x38, 0x01, 0x22, 0x33, 0x0a, 0x12, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68,
+	0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x5f,
+	0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65,
+	0x71, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0xa7, 0x02, 0x0a, 0x10, 0x49, 0x6e, 0x64, 0x69,
+	0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x0a,
+	0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x17, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74,
+	0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x4e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
+	0x64, 0x52, 0x09, 0x72, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x4a, 0x0a, 0x0d,
+	0x73, 0x74, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x72, 0x65,
+	0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x2e, 0x53, 0x74, 0x72, 0x54, 0x6f,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x73, 0x74, 0x72,
+	0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x1a, 0x57, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x54,
+	0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
+	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d,
+	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e,
+	0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65,
+	0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
+	0x01, 0x22, 0x69, 0x0a, 0x0a, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12,
+	0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x19,
+	0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x65, 0x20, 0x01, 0x28, 0x08,
+	0x52, 0x07, 0x6f, 0x70, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74,
+	0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70,
+	0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x2a, 0x04, 0x08, 0x14, 0x10, 0x65, 0x22, 0xba, 0x03, 0x0a,
+	0x13, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61,
+	0x69, 0x6e, 0x65, 0x72, 0x32, 0x31, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f,
+	0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e,
+	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x33, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6f, 0x70, 0x74,
+	0x45, 0x78, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x32, 0x35, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x5f, 0x65,
+	0x78, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e,
+	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x34, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x0c, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x32, 0x3c,
+	0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x0f,
+	0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
+	0x35, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d,
+	0x52, 0x0a, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x32, 0x42, 0x0a, 0x0e,
+	0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x0f,
+	0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
+	0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x32, 0x35, 0x0a, 0x0e, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69,
+	0x6e, 0x67, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x73, 0x18, 0x3d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x70, 0x74, 0x45, 0x78,
+	0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x32, 0x3c, 0x0a, 0x0c, 0x72, 0x70, 0x74, 0x5f, 0x65,
+	0x78, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x3e, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x09,
+	0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x72, 0x70, 0x74, 0x45, 0x78,
+	0x74, 0x45, 0x6e, 0x75, 0x6d, 0x32, 0x42, 0x0a, 0x0e, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74,
+	0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x3f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b,
+	0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x0c, 0x72, 0x70, 0x74,
+	0x45, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22, 0x1a, 0x0a, 0x0a, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x2a, 0x08, 0x08, 0x04, 0x10, 0xff, 0xff, 0xff, 0xff,
+	0x07, 0x3a, 0x02, 0x08, 0x01, 0x22, 0xb6, 0x02, 0x0a, 0x13, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a,
+	0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x32, 0x5d, 0x0a, 0x15,
+	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70,
+	0x62, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53,
+	0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0x64, 0x0a, 0x19, 0x6e,
+	0x6f, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x18, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74,
+	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x6e, 0x6f, 0x74, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+	0x6e, 0x32, 0x3b, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12,
+	0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74,
+	0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x52, 0x09, 0x65, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22, 0xa6,
+	0x07, 0x0a, 0x0a, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x35, 0x0a,
+	0x08, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+	0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74,
+	0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56,
+	0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x38,
+	0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08,
+	0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x3b, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f,
+	0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55,
+	0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x55,
+	0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x3b, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e,
+	0x74, 0x36, 0x34, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74,
+	0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74,
+	0x36, 0x34, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18,
+	0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c,
+	0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x3b, 0x0a, 0x0a,
+	0x6f, 0x70, 0x74, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+	0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09,
+	0x6f, 0x70, 0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x6f, 0x70, 0x74,
+	0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
+	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
+	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6f, 0x70, 0x74,
+	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x79,
+	0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x79, 0x74, 0x65,
+	0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73,
+	0x12, 0x3c, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+	0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
+	0x6e, 0x52, 0x0b, 0x6f, 0x70, 0x74, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f,
+	0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18,
+	0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+	0x70, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12,
+	0x36, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x18, 0x19, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x09, 0x6f, 0x70,
+	0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x6c,
+	0x69, 0x73, 0x74, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74,
+	0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x33,
+	0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x56, 0x61,
+	0x6c, 0x75, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79,
+	0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x08,
+	0x6f, 0x70, 0x74, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x2d, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x5f,
+	0x61, 0x6e, 0x79, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52,
+	0x06, 0x6f, 0x70, 0x74, 0x41, 0x6e, 0x79, 0x2a, 0x35, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12,
+	0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05,
+	0x46, 0x49, 0x52, 0x53, 0x54, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x45, 0x43, 0x4f, 0x4e,
+	0x44, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x45, 0x4e, 0x54, 0x48, 0x10, 0x0a, 0x3a, 0x31,
+	0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x0f,
+	0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
+	0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x42, 0x6f, 0x6f,
+	0x6c, 0x3a, 0x35, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x74, 0x72,
+	0x69, 0x6e, 0x67, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x45,
+	0x78, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x3a, 0x3c, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f,
+	0x65, 0x78, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0e, 0x32,
+	0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x45,
+	0x78, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x42, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78,
+	0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x0c, 0x6f, 0x70,
+	0x74, 0x45, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x3a, 0x37, 0x0a, 0x0f, 0x72, 0x70,
+	0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x0f, 0x2e,
+	0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x1f,
+	0x20, 0x03, 0x28, 0x07, 0x52, 0x0d, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x46, 0x69, 0x78, 0x65,
+	0x64, 0x33, 0x32, 0x3a, 0x3c, 0x0a, 0x0c, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x65,
+	0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x20, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x32,
+	0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x45, 0x6e, 0x75,
+	0x6d, 0x3a, 0x42, 0x0a, 0x0e, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x21, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32,
+	0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x0c, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x4e,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x42, 0x3e, 0x5a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
+	0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x62, 0x75, 0x66, 0x2f, 0x76, 0x32, 0x2f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x2f,
+	0x74, 0x65, 0x78, 0x74, 0x70, 0x62, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x73, 0x2f, 0x70, 0x62, 0x32,
 }
 
-func init() {
-	xxx_Test_protoFile_FileDesc.Enums = xxx_Test_protoFile_EnumDescs[0:1]
-	xxx_Test_protoFile_FileDesc.Messages = xxx_Test_protoFile_MessageDescs[0:16]
-	xxx_Test_protoFile_MessageDescs[2].Enums = xxx_Test_protoFile_EnumDescs[1:2]
-	xxx_Test_protoFile_MessageDescs[3].Messages = xxx_Test_protoFile_MessageDescs[16:18]
-	xxx_Test_protoFile_MessageDescs[8].Messages = xxx_Test_protoFile_MessageDescs[19:25]
-	xxx_Test_protoFile_MessageDescs[10].Messages = xxx_Test_protoFile_MessageDescs[25:26]
-	xxx_Test_protoFile_MessageDescs[16].Messages = xxx_Test_protoFile_MessageDescs[18:19]
-	xxx_Test_protoFile_MessageDescs[2].Fields[0].EnumType = xxx_Test_protoFile_EnumTypes[0]
-	xxx_Test_protoFile_MessageDescs[2].Fields[1].EnumType = xxx_Test_protoFile_EnumTypes[0]
-	xxx_Test_protoFile_MessageDescs[2].Fields[2].EnumType = xxx_Test_protoFile_EnumTypes[1]
-	xxx_Test_protoFile_MessageDescs[2].Fields[3].EnumType = xxx_Test_protoFile_EnumTypes[1]
-	xxx_Test_protoFile_MessageDescs[3].Fields[0].MessageType = xxx_Test_protoFile_MessageTypes[4].Type
-	xxx_Test_protoFile_MessageDescs[3].Fields[1].MessageType = xxx_Test_protoFile_MessageTypes[16].Type
-	xxx_Test_protoFile_MessageDescs[3].Fields[2].MessageType = xxx_Test_protoFile_MessageTypes[4].Type
-	xxx_Test_protoFile_MessageDescs[3].Fields[3].MessageType = xxx_Test_protoFile_MessageTypes[17].Type
-	xxx_Test_protoFile_MessageDescs[4].Fields[1].MessageType = xxx_Test_protoFile_MessageTypes[4].Type
-	xxx_Test_protoFile_MessageDescs[5].Fields[9].EnumType = xxx_Test_protoFile_EnumTypes[0]
-	xxx_Test_protoFile_MessageDescs[5].Fields[10].MessageType = xxx_Test_protoFile_MessageTypes[4].Type
-	xxx_Test_protoFile_MessageDescs[7].Fields[1].MessageType = xxx_Test_protoFile_MessageTypes[4].Type
-	xxx_Test_protoFile_MessageDescs[8].Fields[0].MessageType = xxx_Test_protoFile_MessageDescs[19].Reference()
-	xxx_Test_protoFile_MessageDescs[8].Fields[1].MessageType = xxx_Test_protoFile_MessageDescs[20].Reference()
-	xxx_Test_protoFile_MessageDescs[8].Fields[2].MessageType = xxx_Test_protoFile_MessageDescs[21].Reference()
-	xxx_Test_protoFile_MessageDescs[8].Fields[3].MessageType = xxx_Test_protoFile_MessageDescs[22].Reference()
-	xxx_Test_protoFile_MessageDescs[8].Fields[4].MessageType = xxx_Test_protoFile_MessageDescs[23].Reference()
-	xxx_Test_protoFile_MessageDescs[8].Fields[5].MessageType = xxx_Test_protoFile_MessageDescs[24].Reference()
-	xxx_Test_protoFile_MessageDescs[10].Fields[0].MessageType = xxx_Test_protoFile_MessageTypes[9].Type
-	xxx_Test_protoFile_MessageDescs[10].Fields[1].MessageType = xxx_Test_protoFile_MessageTypes[9].Type
-	xxx_Test_protoFile_MessageDescs[10].Fields[2].MessageType = xxx_Test_protoFile_MessageDescs[25].Reference()
-	xxx_Test_protoFile_MessageDescs[15].Fields[0].MessageType = protoimpl.X.MessageTypeOf((*wrappers.BoolValue)(nil))
-	xxx_Test_protoFile_MessageDescs[15].Fields[1].MessageType = protoimpl.X.MessageTypeOf((*wrappers.Int32Value)(nil))
-	xxx_Test_protoFile_MessageDescs[15].Fields[2].MessageType = protoimpl.X.MessageTypeOf((*wrappers.Int64Value)(nil))
-	xxx_Test_protoFile_MessageDescs[15].Fields[3].MessageType = protoimpl.X.MessageTypeOf((*wrappers.UInt32Value)(nil))
-	xxx_Test_protoFile_MessageDescs[15].Fields[4].MessageType = protoimpl.X.MessageTypeOf((*wrappers.UInt64Value)(nil))
-	xxx_Test_protoFile_MessageDescs[15].Fields[5].MessageType = protoimpl.X.MessageTypeOf((*wrappers.FloatValue)(nil))
-	xxx_Test_protoFile_MessageDescs[15].Fields[6].MessageType = protoimpl.X.MessageTypeOf((*wrappers.DoubleValue)(nil))
-	xxx_Test_protoFile_MessageDescs[15].Fields[7].MessageType = protoimpl.X.MessageTypeOf((*wrappers.StringValue)(nil))
-	xxx_Test_protoFile_MessageDescs[15].Fields[8].MessageType = protoimpl.X.MessageTypeOf((*wrappers.BytesValue)(nil))
-	xxx_Test_protoFile_MessageDescs[15].Fields[9].MessageType = protoimpl.X.MessageTypeOf((*duration.Duration)(nil))
-	xxx_Test_protoFile_MessageDescs[15].Fields[10].MessageType = protoimpl.X.MessageTypeOf((*timestamp.Timestamp)(nil))
-	xxx_Test_protoFile_MessageDescs[15].Fields[11].MessageType = protoimpl.X.MessageTypeOf((*_struct.Struct)(nil))
-	xxx_Test_protoFile_MessageDescs[15].Fields[12].MessageType = protoimpl.X.MessageTypeOf((*_struct.ListValue)(nil))
-	xxx_Test_protoFile_MessageDescs[15].Fields[13].MessageType = protoimpl.X.MessageTypeOf((*_struct.Value)(nil))
-	xxx_Test_protoFile_MessageDescs[15].Fields[14].MessageType = protoimpl.X.MessageTypeOf((*empty.Empty)(nil))
-	xxx_Test_protoFile_MessageDescs[15].Fields[15].MessageType = protoimpl.X.MessageTypeOf((*any.Any)(nil))
-	xxx_Test_protoFile_MessageDescs[16].Fields[2].MessageType = xxx_Test_protoFile_MessageTypes[4].Type
-	xxx_Test_protoFile_MessageDescs[16].Fields[3].MessageType = xxx_Test_protoFile_MessageTypes[18].Type
-	xxx_Test_protoFile_MessageDescs[18].Fields[0].EnumType = xxx_Test_protoFile_EnumTypes[0]
-	xxx_Test_protoFile_MessageDescs[22].Fields[1].EnumType = xxx_Test_protoFile_EnumTypes[0]
-	xxx_Test_protoFile_MessageDescs[23].Fields[1].MessageType = xxx_Test_protoFile_MessageTypes[4].Type
-	xxx_Test_protoFile_MessageDescs[24].Fields[1].MessageType = xxx_Test_protoFile_MessageTypes[7].Type
-	xxx_Test_protoFile_MessageDescs[25].Fields[1].MessageType = xxx_Test_protoFile_MessageTypes[9].Type
-	var err error
-	Test_protoFile, err = prototype.NewFile(&xxx_Test_protoFile_FileDesc)
-	if err != nil {
-		panic(err)
-	}
-}
+var fileDescriptor_c8d7acc1bcec9a72_gzipped = func() []byte {
+	bb := new(bytes.Buffer)
+	zw, _ := gzip.NewWriterLevel(bb, gzip.NoCompression)
+	zw.Write(fileDescriptor_c8d7acc1bcec9a72)
+	zw.Close()
+	return bb.Bytes()
+}()
 
 const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
 
 var Test_protoFile protoreflect.FileDescriptor
 
-var xxx_Test_protoFile_FileDesc = prototype.File{
-	Syntax:  protoreflect.Proto2,
-	Path:    "encoding/textpb/testprotos/pb2/test.proto",
-	Package: "pb2",
-	Imports: []protoreflect.FileImport{
-		{FileDescriptor: prototype.PlaceholderFile("google/protobuf/any.proto", "google.protobuf")},
-		{FileDescriptor: prototype.PlaceholderFile("google/protobuf/empty.proto", "google.protobuf")},
-		{FileDescriptor: prototype.PlaceholderFile("google/protobuf/duration.proto", "google.protobuf")},
-		{FileDescriptor: prototype.PlaceholderFile("google/protobuf/struct.proto", "google.protobuf")},
-		{FileDescriptor: prototype.PlaceholderFile("google/protobuf/timestamp.proto", "google.protobuf")},
-		{FileDescriptor: prototype.PlaceholderFile("google/protobuf/wrappers.proto", "google.protobuf")},
-	},
+var xxx_Test_protoFile_enumTypes [2]protoreflect.EnumType
+var xxx_Test_protoFile_messageTypes [26]protoimpl.MessageType
+var xxx_Test_protoFile_goTypes = []interface{}{
+	(Enum)(0),                             // 0: pb2.Enum
+	(Enums_NestedEnum)(0),                 // 1: pb2.Enums.NestedEnum
+	(*Scalars)(nil),                       // 2: pb2.Scalars
+	(*Repeats)(nil),                       // 3: pb2.Repeats
+	(*Enums)(nil),                         // 4: pb2.Enums
+	(*Nests)(nil),                         // 5: pb2.Nests
+	(*Nested)(nil),                        // 6: pb2.Nested
+	(*Requireds)(nil),                     // 7: pb2.Requireds
+	(*PartialRequired)(nil),               // 8: pb2.PartialRequired
+	(*Oneofs)(nil),                        // 9: pb2.Oneofs
+	(*Maps)(nil),                          // 10: pb2.Maps
+	(*NestedWithRequired)(nil),            // 11: pb2.NestedWithRequired
+	(*IndirectRequired)(nil),              // 12: pb2.IndirectRequired
+	(*Extensions)(nil),                    // 13: pb2.Extensions
+	(*ExtensionsContainer)(nil),           // 14: pb2.ExtensionsContainer
+	(*MessageSet)(nil),                    // 15: pb2.MessageSet
+	(*MessageSetExtension)(nil),           // 16: pb2.MessageSetExtension
+	(*KnownTypes)(nil),                    // 17: pb2.KnownTypes
+	(*Nests_OptGroup)(nil),                // 18: pb2.Nests.OptGroup
+	(*Nests_RptGroup)(nil),                // 19: pb2.Nests.RptGroup
+	(*Nests_OptGroup_OptNestedGroup)(nil), // 20: pb2.Nests.OptGroup.OptNestedGroup
+	nil,                                   // 21: pb2.Maps.Int32ToStrEntry
+	nil,                                   // 22: pb2.Maps.Sfixed64ToBoolEntry
+	nil,                                   // 23: pb2.Maps.BoolToUint32Entry
+	nil,                                   // 24: pb2.Maps.Uint64ToEnumEntry
+	nil,                                   // 25: pb2.Maps.StrToNestedEntry
+	nil,                                   // 26: pb2.Maps.StrToOneofsEntry
+	nil,                                   // 27: pb2.IndirectRequired.StrToNestedEntry
+	(*wrappers.BoolValue)(nil),            // 28: google.protobuf.BoolValue
+	(*wrappers.Int32Value)(nil),           // 29: google.protobuf.Int32Value
+	(*wrappers.Int64Value)(nil),           // 30: google.protobuf.Int64Value
+	(*wrappers.UInt32Value)(nil),          // 31: google.protobuf.UInt32Value
+	(*wrappers.UInt64Value)(nil),          // 32: google.protobuf.UInt64Value
+	(*wrappers.FloatValue)(nil),           // 33: google.protobuf.FloatValue
+	(*wrappers.DoubleValue)(nil),          // 34: google.protobuf.DoubleValue
+	(*wrappers.StringValue)(nil),          // 35: google.protobuf.StringValue
+	(*wrappers.BytesValue)(nil),           // 36: google.protobuf.BytesValue
+	(*duration.Duration)(nil),             // 37: google.protobuf.Duration
+	(*timestamp.Timestamp)(nil),           // 38: google.protobuf.Timestamp
+	(*_struct.Struct)(nil),                // 39: google.protobuf.Struct
+	(*_struct.ListValue)(nil),             // 40: google.protobuf.ListValue
+	(*_struct.Value)(nil),                 // 41: google.protobuf.Value
+	(*empty.Empty)(nil),                   // 42: google.protobuf.Empty
+	(*any.Any)(nil),                       // 43: google.protobuf.Any
 }
-var xxx_Test_protoFile_EnumTypes = [2]protoreflect.EnumType{
-	prototype.GoEnum(
-		xxx_Test_protoFile_EnumDescs[0].Reference(),
-		func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
-			return Enum(n)
-		},
-	),
-	prototype.GoEnum(
-		xxx_Test_protoFile_EnumDescs[1].Reference(),
-		func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
-			return Enums_NestedEnum(n)
-		},
-	),
+var xxx_Test_protoFile_depIdxs = []int32{
+	13, // pb2.opt_ext_bool:extendee -> pb2.Extensions
+	13, // pb2.opt_ext_string:extendee -> pb2.Extensions
+	13, // pb2.opt_ext_enum:extendee -> pb2.Extensions
+	13, // pb2.opt_ext_nested:extendee -> pb2.Extensions
+	13, // pb2.rpt_ext_fixed32:extendee -> pb2.Extensions
+	13, // pb2.rpt_ext_enum:extendee -> pb2.Extensions
+	13, // pb2.rpt_ext_nested:extendee -> pb2.Extensions
+	13, // pb2.ExtensionsContainer.opt_ext_bool:extendee -> pb2.Extensions
+	13, // pb2.ExtensionsContainer.opt_ext_string:extendee -> pb2.Extensions
+	13, // pb2.ExtensionsContainer.opt_ext_enum:extendee -> pb2.Extensions
+	13, // pb2.ExtensionsContainer.opt_ext_nested:extendee -> pb2.Extensions
+	13, // pb2.ExtensionsContainer.rpt_ext_string:extendee -> pb2.Extensions
+	13, // pb2.ExtensionsContainer.rpt_ext_enum:extendee -> pb2.Extensions
+	13, // pb2.ExtensionsContainer.rpt_ext_nested:extendee -> pb2.Extensions
+	15, // pb2.MessageSetExtension.message_set_extension:extendee -> pb2.MessageSet
+	15, // pb2.MessageSetExtension.not_message_set_extension:extendee -> pb2.MessageSet
+	15, // pb2.MessageSetExtension.ext_nested:extendee -> pb2.MessageSet
+	0,  // pb2.Enums.opt_enum:type_name -> pb2.Enum
+	0,  // pb2.Enums.rpt_enum:type_name -> pb2.Enum
+	1,  // pb2.Enums.opt_nested_enum:type_name -> pb2.Enums.NestedEnum
+	1,  // pb2.Enums.rpt_nested_enum:type_name -> pb2.Enums.NestedEnum
+	6,  // pb2.Nests.opt_nested:type_name -> pb2.Nested
+	18, // pb2.Nests.optgroup:type_name -> pb2.Nests.OptGroup
+	6,  // pb2.Nests.rpt_nested:type_name -> pb2.Nested
+	19, // pb2.Nests.rptgroup:type_name -> pb2.Nests.RptGroup
+	6,  // pb2.Nested.opt_nested:type_name -> pb2.Nested
+	0,  // pb2.Requireds.req_enum:type_name -> pb2.Enum
+	6,  // pb2.Requireds.req_nested:type_name -> pb2.Nested
+	6,  // pb2.Oneofs.msg:type_name -> pb2.Nested
+	21, // pb2.Maps.int32_to_str:type_name -> pb2.Maps.Int32ToStrEntry
+	22, // pb2.Maps.sfixed64_to_bool:type_name -> pb2.Maps.Sfixed64ToBoolEntry
+	23, // pb2.Maps.bool_to_uint32:type_name -> pb2.Maps.BoolToUint32Entry
+	24, // pb2.Maps.uint64_to_enum:type_name -> pb2.Maps.Uint64ToEnumEntry
+	25, // pb2.Maps.str_to_nested:type_name -> pb2.Maps.StrToNestedEntry
+	26, // pb2.Maps.str_to_oneofs:type_name -> pb2.Maps.StrToOneofsEntry
+	11, // pb2.IndirectRequired.opt_nested:type_name -> pb2.NestedWithRequired
+	11, // pb2.IndirectRequired.rpt_nested:type_name -> pb2.NestedWithRequired
+	27, // pb2.IndirectRequired.str_to_nested:type_name -> pb2.IndirectRequired.StrToNestedEntry
+	28, // pb2.KnownTypes.opt_bool:type_name -> google.protobuf.BoolValue
+	29, // pb2.KnownTypes.opt_int32:type_name -> google.protobuf.Int32Value
+	30, // pb2.KnownTypes.opt_int64:type_name -> google.protobuf.Int64Value
+	31, // pb2.KnownTypes.opt_uint32:type_name -> google.protobuf.UInt32Value
+	32, // pb2.KnownTypes.opt_uint64:type_name -> google.protobuf.UInt64Value
+	33, // pb2.KnownTypes.opt_float:type_name -> google.protobuf.FloatValue
+	34, // pb2.KnownTypes.opt_double:type_name -> google.protobuf.DoubleValue
+	35, // pb2.KnownTypes.opt_string:type_name -> google.protobuf.StringValue
+	36, // pb2.KnownTypes.opt_bytes:type_name -> google.protobuf.BytesValue
+	37, // pb2.KnownTypes.opt_duration:type_name -> google.protobuf.Duration
+	38, // pb2.KnownTypes.opt_timestamp:type_name -> google.protobuf.Timestamp
+	39, // pb2.KnownTypes.opt_struct:type_name -> google.protobuf.Struct
+	40, // pb2.KnownTypes.opt_list:type_name -> google.protobuf.ListValue
+	41, // pb2.KnownTypes.opt_value:type_name -> google.protobuf.Value
+	42, // pb2.KnownTypes.opt_empty:type_name -> google.protobuf.Empty
+	43, // pb2.KnownTypes.opt_any:type_name -> google.protobuf.Any
+	6,  // pb2.Nests.OptGroup.opt_nested:type_name -> pb2.Nested
+	20, // pb2.Nests.OptGroup.optnestedgroup:type_name -> pb2.Nests.OptGroup.OptNestedGroup
+	0,  // pb2.Nests.OptGroup.OptNestedGroup.opt_enum:type_name -> pb2.Enum
+	0,  // pb2.Maps.Uint64ToEnumEntry.value:type_name -> pb2.Enum
+	6,  // pb2.Maps.StrToNestedEntry.value:type_name -> pb2.Nested
+	9,  // pb2.Maps.StrToOneofsEntry.value:type_name -> pb2.Oneofs
+	11, // pb2.IndirectRequired.StrToNestedEntry.value:type_name -> pb2.NestedWithRequired
+	0,  // pb2.opt_ext_enum:type_name -> pb2.Enum
+	6,  // pb2.opt_ext_nested:type_name -> pb2.Nested
+	0,  // pb2.rpt_ext_enum:type_name -> pb2.Enum
+	6,  // pb2.rpt_ext_nested:type_name -> pb2.Nested
+	0,  // pb2.ExtensionsContainer.opt_ext_enum:type_name -> pb2.Enum
+	6,  // pb2.ExtensionsContainer.opt_ext_nested:type_name -> pb2.Nested
+	0,  // pb2.ExtensionsContainer.rpt_ext_enum:type_name -> pb2.Enum
+	6,  // pb2.ExtensionsContainer.rpt_ext_nested:type_name -> pb2.Nested
+	16, // pb2.MessageSetExtension.message_set_extension:type_name -> pb2.MessageSetExtension
+	16, // pb2.MessageSetExtension.not_message_set_extension:type_name -> pb2.MessageSetExtension
+	6,  // pb2.MessageSetExtension.ext_nested:type_name -> pb2.Nested
 }
-var xxx_Test_protoFile_EnumDescs = [2]prototype.Enum{
-	{
-		Name: "Enum",
-		Values: []prototype.EnumValue{
-			{Name: "UNKNOWN", Number: 0},
-			{Name: "FIRST", Number: 1},
-			{Name: "SECOND", Number: 2},
-			{Name: "TENTH", Number: 10},
-		},
-	},
-	{
-		Name: "NestedEnum",
-		Values: []prototype.EnumValue{
-			{Name: "UNO", Number: 1},
-			{Name: "DOS", Number: 2},
-			{Name: "DIEZ", Number: 10},
-		},
-	},
-}
-var xxx_Test_protoFile_MessageTypes = [26]protoimpl.MessageType{
-	{Type: prototype.GoMessage(
-		xxx_Test_protoFile_MessageDescs[0].Reference(),
-		func(protoreflect.MessageType) protoreflect.Message {
-			return xxx_Scalars{new(Scalars)}
-		},
-	)},
-	{Type: prototype.GoMessage(
-		xxx_Test_protoFile_MessageDescs[1].Reference(),
-		func(protoreflect.MessageType) protoreflect.Message {
-			return xxx_Repeats{new(Repeats)}
-		},
-	)},
-	{Type: prototype.GoMessage(
-		xxx_Test_protoFile_MessageDescs[2].Reference(),
-		func(protoreflect.MessageType) protoreflect.Message {
-			return xxx_Enums{new(Enums)}
-		},
-	)},
-	{Type: prototype.GoMessage(
-		xxx_Test_protoFile_MessageDescs[3].Reference(),
-		func(protoreflect.MessageType) protoreflect.Message {
-			return xxx_Nests{new(Nests)}
-		},
-	)},
-	{Type: prototype.GoMessage(
-		xxx_Test_protoFile_MessageDescs[4].Reference(),
-		func(protoreflect.MessageType) protoreflect.Message {
-			return xxx_Nested{new(Nested)}
-		},
-	)},
-	{Type: prototype.GoMessage(
-		xxx_Test_protoFile_MessageDescs[5].Reference(),
-		func(protoreflect.MessageType) protoreflect.Message {
-			return xxx_Requireds{new(Requireds)}
-		},
-	)},
-	{Type: prototype.GoMessage(
-		xxx_Test_protoFile_MessageDescs[6].Reference(),
-		func(protoreflect.MessageType) protoreflect.Message {
-			return xxx_PartialRequired{new(PartialRequired)}
-		},
-	)},
-	{Type: prototype.GoMessage(
-		xxx_Test_protoFile_MessageDescs[7].Reference(),
-		func(protoreflect.MessageType) protoreflect.Message {
-			return xxx_Oneofs{new(Oneofs)}
-		},
-	)},
-	{Type: prototype.GoMessage(
-		xxx_Test_protoFile_MessageDescs[8].Reference(),
-		func(protoreflect.MessageType) protoreflect.Message {
-			return xxx_Maps{new(Maps)}
-		},
-	)},
-	{Type: prototype.GoMessage(
-		xxx_Test_protoFile_MessageDescs[9].Reference(),
-		func(protoreflect.MessageType) protoreflect.Message {
-			return xxx_NestedWithRequired{new(NestedWithRequired)}
-		},
-	)},
-	{Type: prototype.GoMessage(
-		xxx_Test_protoFile_MessageDescs[10].Reference(),
-		func(protoreflect.MessageType) protoreflect.Message {
-			return xxx_IndirectRequired{new(IndirectRequired)}
-		},
-	)},
-	{Type: prototype.GoMessage(
-		xxx_Test_protoFile_MessageDescs[11].Reference(),
-		func(protoreflect.MessageType) protoreflect.Message {
-			return xxx_Extensions{new(Extensions)}
-		},
-	)},
-	{Type: prototype.GoMessage(
-		xxx_Test_protoFile_MessageDescs[12].Reference(),
-		func(protoreflect.MessageType) protoreflect.Message {
-			return xxx_ExtensionsContainer{new(ExtensionsContainer)}
-		},
-	)},
-	{Type: prototype.GoMessage(
-		xxx_Test_protoFile_MessageDescs[13].Reference(),
-		func(protoreflect.MessageType) protoreflect.Message {
-			return xxx_MessageSet{new(MessageSet)}
-		},
-	)},
-	{Type: prototype.GoMessage(
-		xxx_Test_protoFile_MessageDescs[14].Reference(),
-		func(protoreflect.MessageType) protoreflect.Message {
-			return xxx_MessageSetExtension{new(MessageSetExtension)}
-		},
-	)},
-	{Type: prototype.GoMessage(
-		xxx_Test_protoFile_MessageDescs[15].Reference(),
-		func(protoreflect.MessageType) protoreflect.Message {
-			return xxx_KnownTypes{new(KnownTypes)}
-		},
-	)},
-	{Type: prototype.GoMessage(
-		xxx_Test_protoFile_MessageDescs[16].Reference(),
-		func(protoreflect.MessageType) protoreflect.Message {
-			return xxx_Nests_OptGroup{new(Nests_OptGroup)}
-		},
-	)},
-	{Type: prototype.GoMessage(
-		xxx_Test_protoFile_MessageDescs[17].Reference(),
-		func(protoreflect.MessageType) protoreflect.Message {
-			return xxx_Nests_RptGroup{new(Nests_RptGroup)}
-		},
-	)},
-	{Type: prototype.GoMessage(
-		xxx_Test_protoFile_MessageDescs[18].Reference(),
-		func(protoreflect.MessageType) protoreflect.Message {
-			return xxx_Nests_OptGroup_OptNestedGroup{new(Nests_OptGroup_OptNestedGroup)}
-		},
-	)},
-	{ /* no message type for Maps_Int32ToStrEntry */ },
-	{ /* no message type for Maps_Sfixed64ToBoolEntry */ },
-	{ /* no message type for Maps_BoolToUint32Entry */ },
-	{ /* no message type for Maps_Uint64ToEnumEntry */ },
-	{ /* no message type for Maps_StrToNestedEntry */ },
-	{ /* no message type for Maps_StrToOneofsEntry */ },
-	{ /* no message type for IndirectRequired_StrToNestedEntry */ },
-}
-var xxx_Test_protoFile_MessageDescs = [26]prototype.Message{
-	{
-		Name: "Scalars",
-		Fields: []prototype.Field{
-			{
-				Name:        "opt_bool",
-				Number:      1,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.BoolKind,
-				JSONName:    "optBool",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_int32",
-				Number:      2,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.Int32Kind,
-				JSONName:    "optInt32",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_int64",
-				Number:      3,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.Int64Kind,
-				JSONName:    "optInt64",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_uint32",
-				Number:      4,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.Uint32Kind,
-				JSONName:    "optUint32",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_uint64",
-				Number:      5,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.Uint64Kind,
-				JSONName:    "optUint64",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_sint32",
-				Number:      6,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.Sint32Kind,
-				JSONName:    "optSint32",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_sint64",
-				Number:      7,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.Sint64Kind,
-				JSONName:    "optSint64",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_fixed32",
-				Number:      8,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.Fixed32Kind,
-				JSONName:    "optFixed32",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_fixed64",
-				Number:      9,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.Fixed64Kind,
-				JSONName:    "optFixed64",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_sfixed32",
-				Number:      10,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.Sfixed32Kind,
-				JSONName:    "optSfixed32",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_sfixed64",
-				Number:      11,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.Sfixed64Kind,
-				JSONName:    "optSfixed64",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_float",
-				Number:      20,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.FloatKind,
-				JSONName:    "optFloat",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_double",
-				Number:      21,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.DoubleKind,
-				JSONName:    "optDouble",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_bytes",
-				Number:      14,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.BytesKind,
-				JSONName:    "optBytes",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_string",
-				Number:      13,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.StringKind,
-				JSONName:    "optString",
-				IsPacked:    prototype.False,
-			},
-		},
-	},
-	{
-		Name: "Repeats",
-		Fields: []prototype.Field{
-			{
-				Name:        "rpt_bool",
-				Number:      1,
-				Cardinality: protoreflect.Repeated,
-				Kind:        protoreflect.BoolKind,
-				JSONName:    "rptBool",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "rpt_int32",
-				Number:      2,
-				Cardinality: protoreflect.Repeated,
-				Kind:        protoreflect.Int32Kind,
-				JSONName:    "rptInt32",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "rpt_int64",
-				Number:      3,
-				Cardinality: protoreflect.Repeated,
-				Kind:        protoreflect.Int64Kind,
-				JSONName:    "rptInt64",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "rpt_uint32",
-				Number:      4,
-				Cardinality: protoreflect.Repeated,
-				Kind:        protoreflect.Uint32Kind,
-				JSONName:    "rptUint32",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "rpt_uint64",
-				Number:      5,
-				Cardinality: protoreflect.Repeated,
-				Kind:        protoreflect.Uint64Kind,
-				JSONName:    "rptUint64",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "rpt_float",
-				Number:      6,
-				Cardinality: protoreflect.Repeated,
-				Kind:        protoreflect.FloatKind,
-				JSONName:    "rptFloat",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "rpt_double",
-				Number:      7,
-				Cardinality: protoreflect.Repeated,
-				Kind:        protoreflect.DoubleKind,
-				JSONName:    "rptDouble",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "rpt_string",
-				Number:      15,
-				Cardinality: protoreflect.Repeated,
-				Kind:        protoreflect.StringKind,
-				JSONName:    "rptString",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "rpt_bytes",
-				Number:      14,
-				Cardinality: protoreflect.Repeated,
-				Kind:        protoreflect.BytesKind,
-				JSONName:    "rptBytes",
-				IsPacked:    prototype.False,
-			},
-		},
-	},
-	{
-		Name: "Enums",
-		Fields: []prototype.Field{
-			{
-				Name:        "opt_enum",
-				Number:      1,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.EnumKind,
-				JSONName:    "optEnum",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "rpt_enum",
-				Number:      2,
-				Cardinality: protoreflect.Repeated,
-				Kind:        protoreflect.EnumKind,
-				JSONName:    "rptEnum",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_nested_enum",
-				Number:      3,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.EnumKind,
-				JSONName:    "optNestedEnum",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "rpt_nested_enum",
-				Number:      4,
-				Cardinality: protoreflect.Repeated,
-				Kind:        protoreflect.EnumKind,
-				JSONName:    "rptNestedEnum",
-				IsPacked:    prototype.False,
-			},
-		},
-	},
-	{
-		Name: "Nests",
-		Fields: []prototype.Field{
-			{
-				Name:        "opt_nested",
-				Number:      1,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "optNested",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "optgroup",
-				Number:      2,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.GroupKind,
-				JSONName:    "optgroup",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "rpt_nested",
-				Number:      3,
-				Cardinality: protoreflect.Repeated,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "rptNested",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "rptgroup",
-				Number:      4,
-				Cardinality: protoreflect.Repeated,
-				Kind:        protoreflect.GroupKind,
-				JSONName:    "rptgroup",
-				IsPacked:    prototype.False,
-			},
-		},
-		ReservedNames: []protoreflect.Name{"reserved_field"},
-	},
-	{
-		Name: "Nested",
-		Fields: []prototype.Field{
-			{
-				Name:        "opt_string",
-				Number:      1,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.StringKind,
-				JSONName:    "optString",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_nested",
-				Number:      2,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "optNested",
-				IsPacked:    prototype.False,
-			},
-		},
-	},
-	{
-		Name: "Requireds",
-		Fields: []prototype.Field{
-			{
-				Name:        "req_bool",
-				Number:      1,
-				Cardinality: protoreflect.Required,
-				Kind:        protoreflect.BoolKind,
-				JSONName:    "reqBool",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "req_fixed32",
-				Number:      2,
-				Cardinality: protoreflect.Required,
-				Kind:        protoreflect.Fixed32Kind,
-				JSONName:    "reqFixed32",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "req_fixed64",
-				Number:      3,
-				Cardinality: protoreflect.Required,
-				Kind:        protoreflect.Fixed64Kind,
-				JSONName:    "reqFixed64",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "req_sfixed32",
-				Number:      4,
-				Cardinality: protoreflect.Required,
-				Kind:        protoreflect.Sfixed32Kind,
-				JSONName:    "reqSfixed32",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "req_sfixed64",
-				Number:      5,
-				Cardinality: protoreflect.Required,
-				Kind:        protoreflect.Sfixed64Kind,
-				JSONName:    "reqSfixed64",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "req_float",
-				Number:      6,
-				Cardinality: protoreflect.Required,
-				Kind:        protoreflect.FloatKind,
-				JSONName:    "reqFloat",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "req_double",
-				Number:      7,
-				Cardinality: protoreflect.Required,
-				Kind:        protoreflect.DoubleKind,
-				JSONName:    "reqDouble",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "req_string",
-				Number:      8,
-				Cardinality: protoreflect.Required,
-				Kind:        protoreflect.StringKind,
-				JSONName:    "reqString",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "req_bytes",
-				Number:      9,
-				Cardinality: protoreflect.Required,
-				Kind:        protoreflect.BytesKind,
-				JSONName:    "reqBytes",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "req_enum",
-				Number:      10,
-				Cardinality: protoreflect.Required,
-				Kind:        protoreflect.EnumKind,
-				JSONName:    "reqEnum",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "req_nested",
-				Number:      11,
-				Cardinality: protoreflect.Required,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "reqNested",
-				IsPacked:    prototype.False,
-			},
-		},
-	},
-	{
-		Name: "PartialRequired",
-		Fields: []prototype.Field{
-			{
-				Name:        "req_string",
-				Number:      1,
-				Cardinality: protoreflect.Required,
-				Kind:        protoreflect.StringKind,
-				JSONName:    "reqString",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_string",
-				Number:      2,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.StringKind,
-				JSONName:    "optString",
-				IsPacked:    prototype.False,
-			},
-		},
-	},
-	{
-		Name: "Oneofs",
-		Fields: []prototype.Field{
-			{
-				Name:        "str",
-				Number:      1,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.StringKind,
-				JSONName:    "str",
-				OneofName:   "union",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "msg",
-				Number:      2,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "msg",
-				OneofName:   "union",
-				IsPacked:    prototype.False,
-			},
-		},
-		Oneofs: []prototype.Oneof{
-			{Name: "union"},
-		},
-	},
-	{
-		Name: "Maps",
-		Fields: []prototype.Field{
-			{
-				Name:        "int32_to_str",
-				Number:      1,
-				Cardinality: protoreflect.Repeated,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "int32ToStr",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "sfixed64_to_bool",
-				Number:      2,
-				Cardinality: protoreflect.Repeated,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "sfixed64ToBool",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "bool_to_uint32",
-				Number:      3,
-				Cardinality: protoreflect.Repeated,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "boolToUint32",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "uint64_to_enum",
-				Number:      4,
-				Cardinality: protoreflect.Repeated,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "uint64ToEnum",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "str_to_nested",
-				Number:      5,
-				Cardinality: protoreflect.Repeated,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "strToNested",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "str_to_oneofs",
-				Number:      6,
-				Cardinality: protoreflect.Repeated,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "strToOneofs",
-				IsPacked:    prototype.False,
-			},
-		},
-	},
-	{
-		Name: "NestedWithRequired",
-		Fields: []prototype.Field{
-			{
-				Name:        "req_string",
-				Number:      1,
-				Cardinality: protoreflect.Required,
-				Kind:        protoreflect.StringKind,
-				JSONName:    "reqString",
-				IsPacked:    prototype.False,
-			},
-		},
-	},
-	{
-		Name: "IndirectRequired",
-		Fields: []prototype.Field{
-			{
-				Name:        "opt_nested",
-				Number:      1,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "optNested",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "rpt_nested",
-				Number:      2,
-				Cardinality: protoreflect.Repeated,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "rptNested",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "str_to_nested",
-				Number:      3,
-				Cardinality: protoreflect.Repeated,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "strToNested",
-				IsPacked:    prototype.False,
-			},
-		},
-	},
-	{
-		Name: "Extensions",
-		Fields: []prototype.Field{
-			{
-				Name:        "opt_string",
-				Number:      1,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.StringKind,
-				JSONName:    "optString",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_bool",
-				Number:      101,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.BoolKind,
-				JSONName:    "optBool",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_int32",
-				Number:      2,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.Int32Kind,
-				JSONName:    "optInt32",
-				IsPacked:    prototype.False,
-			},
-		},
-		ExtensionRanges: [][2]protoreflect.FieldNumber{{20, 101}},
-	},
-	{
-		Name: "ExtensionsContainer",
-	},
-	{
-		Name:            "MessageSet",
-		ExtensionRanges: [][2]protoreflect.FieldNumber{{4, 2147483647}},
-	},
-	{
-		Name: "MessageSetExtension",
-		Fields: []prototype.Field{
-			{
-				Name:        "opt_string",
-				Number:      1,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.StringKind,
-				JSONName:    "optString",
-				IsPacked:    prototype.False,
-			},
-		},
-	},
-	{
-		Name: "KnownTypes",
-		Fields: []prototype.Field{
-			{
-				Name:        "opt_bool",
-				Number:      1,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "optBool",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_int32",
-				Number:      2,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "optInt32",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_int64",
-				Number:      3,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "optInt64",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_uint32",
-				Number:      4,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "optUint32",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_uint64",
-				Number:      5,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "optUint64",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_float",
-				Number:      6,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "optFloat",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_double",
-				Number:      7,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "optDouble",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_string",
-				Number:      8,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "optString",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_bytes",
-				Number:      9,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "optBytes",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_duration",
-				Number:      20,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "optDuration",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_timestamp",
-				Number:      21,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "optTimestamp",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_struct",
-				Number:      25,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "optStruct",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_list",
-				Number:      26,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "optList",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_value",
-				Number:      27,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "optValue",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_empty",
-				Number:      30,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "optEmpty",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_any",
-				Number:      32,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "optAny",
-				IsPacked:    prototype.False,
-			},
-		},
-	},
-	{
-		Name: "OptGroup",
-		Fields: []prototype.Field{
-			{
-				Name:        "opt_bool",
-				Number:      1,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.BoolKind,
-				JSONName:    "optBool",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_string",
-				Number:      2,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.StringKind,
-				JSONName:    "optString",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "opt_nested",
-				Number:      3,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "optNested",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "optnestedgroup",
-				Number:      4,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.GroupKind,
-				JSONName:    "optnestedgroup",
-				IsPacked:    prototype.False,
-			},
-		},
-	},
-	{
-		Name: "RptGroup",
-		Fields: []prototype.Field{
-			{
-				Name:        "rpt_bool",
-				Number:      1,
-				Cardinality: protoreflect.Repeated,
-				Kind:        protoreflect.BoolKind,
-				JSONName:    "rptBool",
-				IsPacked:    prototype.False,
-			},
-		},
-	},
-	{
-		Name: "OptNestedGroup",
-		Fields: []prototype.Field{
-			{
-				Name:        "opt_enum",
-				Number:      1,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.EnumKind,
-				JSONName:    "optEnum",
-				IsPacked:    prototype.False,
-			},
-		},
-	},
-	{
-		Name: "Int32ToStrEntry",
-		Fields: []prototype.Field{
-			{
-				Name:        "key",
-				Number:      1,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.Int32Kind,
-				JSONName:    "key",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "value",
-				Number:      2,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.StringKind,
-				JSONName:    "value",
-				IsPacked:    prototype.False,
-			},
-		},
-		IsMapEntry: true,
-	},
-	{
-		Name: "Sfixed64ToBoolEntry",
-		Fields: []prototype.Field{
-			{
-				Name:        "key",
-				Number:      1,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.Sfixed64Kind,
-				JSONName:    "key",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "value",
-				Number:      2,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.BoolKind,
-				JSONName:    "value",
-				IsPacked:    prototype.False,
-			},
-		},
-		IsMapEntry: true,
-	},
-	{
-		Name: "BoolToUint32Entry",
-		Fields: []prototype.Field{
-			{
-				Name:        "key",
-				Number:      1,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.BoolKind,
-				JSONName:    "key",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "value",
-				Number:      2,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.Uint32Kind,
-				JSONName:    "value",
-				IsPacked:    prototype.False,
-			},
-		},
-		IsMapEntry: true,
-	},
-	{
-		Name: "Uint64ToEnumEntry",
-		Fields: []prototype.Field{
-			{
-				Name:        "key",
-				Number:      1,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.Uint64Kind,
-				JSONName:    "key",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "value",
-				Number:      2,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.EnumKind,
-				JSONName:    "value",
-				IsPacked:    prototype.False,
-			},
-		},
-		IsMapEntry: true,
-	},
-	{
-		Name: "StrToNestedEntry",
-		Fields: []prototype.Field{
-			{
-				Name:        "key",
-				Number:      1,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.StringKind,
-				JSONName:    "key",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "value",
-				Number:      2,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "value",
-				IsPacked:    prototype.False,
-			},
-		},
-		IsMapEntry: true,
-	},
-	{
-		Name: "StrToOneofsEntry",
-		Fields: []prototype.Field{
-			{
-				Name:        "key",
-				Number:      1,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.StringKind,
-				JSONName:    "key",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "value",
-				Number:      2,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "value",
-				IsPacked:    prototype.False,
-			},
-		},
-		IsMapEntry: true,
-	},
-	{
-		Name: "StrToNestedEntry",
-		Fields: []prototype.Field{
-			{
-				Name:        "key",
-				Number:      1,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.StringKind,
-				JSONName:    "key",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "value",
-				Number:      2,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "value",
-				IsPacked:    prototype.False,
-			},
-		},
-		IsMapEntry: true,
-	},
+
+func init() {
+	var messageTypes [26]protoreflect.MessageType
+	var extensionTypes [17]protoreflect.ExtensionType
+	Test_protoFile = protoimpl.FileBuilder{
+		RawDescriptor:        fileDescriptor_c8d7acc1bcec9a72,
+		GoTypes:              xxx_Test_protoFile_goTypes,
+		DependencyIndexes:    xxx_Test_protoFile_depIdxs,
+		EnumOutputTypes:      xxx_Test_protoFile_enumTypes[:],
+		MessageOutputTypes:   messageTypes[:],
+		ExtensionOutputTypes: extensionTypes[:],
+	}.Init()
+	messageGoTypes := xxx_Test_protoFile_goTypes[2:][:26]
+	for i, mt := range messageTypes[:] {
+		xxx_Test_protoFile_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
+		xxx_Test_protoFile_messageTypes[i].PBType = mt
+	}
+	E_OptExtBool.Type = extensionTypes[0]
+	E_OptExtString.Type = extensionTypes[1]
+	E_OptExtEnum.Type = extensionTypes[2]
+	E_OptExtNested.Type = extensionTypes[3]
+	E_RptExtFixed32.Type = extensionTypes[4]
+	E_RptExtEnum.Type = extensionTypes[5]
+	E_RptExtNested.Type = extensionTypes[6]
+	E_ExtensionsContainer_OptExtBool.Type = extensionTypes[7]
+	E_ExtensionsContainer_OptExtString.Type = extensionTypes[8]
+	E_ExtensionsContainer_OptExtEnum.Type = extensionTypes[9]
+	E_ExtensionsContainer_OptExtNested.Type = extensionTypes[10]
+	E_ExtensionsContainer_RptExtString.Type = extensionTypes[11]
+	E_ExtensionsContainer_RptExtEnum.Type = extensionTypes[12]
+	E_ExtensionsContainer_RptExtNested.Type = extensionTypes[13]
+	E_MessageSetExtension_MessageSetExtension.Type = extensionTypes[14]
+	E_MessageSetExtension_NotMessageSetExtension.Type = extensionTypes[15]
+	E_MessageSetExtension_ExtNested.Type = extensionTypes[16]
+	xxx_Test_protoFile_goTypes = nil
+	xxx_Test_protoFile_depIdxs = nil
 }
diff --git a/encoding/textpb/testprotos/pb3/test.pb.go b/encoding/textpb/testprotos/pb3/test.pb.go
index 414b9b1..a0c3e18 100644
--- a/encoding/textpb/testprotos/pb3/test.pb.go
+++ b/encoding/textpb/testprotos/pb3/test.pb.go
@@ -4,10 +4,12 @@
 package pb3
 
 import (
+	bytes "bytes"
+	gzip "compress/gzip"
 	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
-	prototype "github.com/golang/protobuf/v2/reflect/prototype"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	reflect "reflect"
 )
 
 // This is a compile-time assertion to ensure that this generated file
@@ -26,7 +28,7 @@
 )
 
 func (e Enum) Type() protoreflect.EnumType {
-	return xxx_Test_protoFile_EnumTypes[0]
+	return xxx_Test_protoFile_enumTypes[0]
 }
 func (e Enum) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(e)
@@ -51,7 +53,7 @@
 }
 
 func (Enum) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_0854715c5b41c422, []int{0}
+	return fileDescriptor_0854715c5b41c422_gzipped, []int{0}
 }
 
 type Enums_NestedEnum int32
@@ -64,7 +66,7 @@
 )
 
 func (e Enums_NestedEnum) Type() protoreflect.EnumType {
-	return xxx_Test_protoFile_EnumTypes[1]
+	return xxx_Test_protoFile_enumTypes[1]
 }
 func (e Enums_NestedEnum) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(e)
@@ -89,7 +91,7 @@
 }
 
 func (Enums_NestedEnum) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_0854715c5b41c422, []int{1, 0}
+	return fileDescriptor_0854715c5b41c422_gzipped, []int{1, 0}
 }
 
 // Scalars contains scalar field types.
@@ -114,29 +116,14 @@
 	XXX_sizecache        int32    `json:"-"`
 }
 
-type xxx_Scalars struct{ m *Scalars }
-
 func (m *Scalars) ProtoReflect() protoreflect.Message {
-	return xxx_Scalars{m}
+	return xxx_Test_protoFile_messageTypes[0].MessageOf(m)
 }
-func (m xxx_Scalars) Type() protoreflect.MessageType {
-	return xxx_Test_protoFile_MessageTypes[0].Type
-}
-func (m xxx_Scalars) KnownFields() protoreflect.KnownFields {
-	return xxx_Test_protoFile_MessageTypes[0].KnownFieldsOf(m.m)
-}
-func (m xxx_Scalars) UnknownFields() protoreflect.UnknownFields {
-	return xxx_Test_protoFile_MessageTypes[0].UnknownFieldsOf(m.m)
-}
-func (m xxx_Scalars) Interface() protoreflect.ProtoMessage {
-	return m.m
-}
-
 func (m *Scalars) Reset()         { *m = Scalars{} }
 func (m *Scalars) String() string { return proto.CompactTextString(m) }
 func (*Scalars) ProtoMessage()    {}
 func (*Scalars) Descriptor() ([]byte, []int) {
-	return fileDescriptor_0854715c5b41c422, []int{0}
+	return fileDescriptor_0854715c5b41c422_gzipped, []int{0}
 }
 
 func (m *Scalars) XXX_Unmarshal(b []byte) error {
@@ -271,29 +258,14 @@
 	XXX_sizecache        int32            `json:"-"`
 }
 
-type xxx_Enums struct{ m *Enums }
-
 func (m *Enums) ProtoReflect() protoreflect.Message {
-	return xxx_Enums{m}
+	return xxx_Test_protoFile_messageTypes[1].MessageOf(m)
 }
-func (m xxx_Enums) Type() protoreflect.MessageType {
-	return xxx_Test_protoFile_MessageTypes[1].Type
-}
-func (m xxx_Enums) KnownFields() protoreflect.KnownFields {
-	return xxx_Test_protoFile_MessageTypes[1].KnownFieldsOf(m.m)
-}
-func (m xxx_Enums) UnknownFields() protoreflect.UnknownFields {
-	return xxx_Test_protoFile_MessageTypes[1].UnknownFieldsOf(m.m)
-}
-func (m xxx_Enums) Interface() protoreflect.ProtoMessage {
-	return m.m
-}
-
 func (m *Enums) Reset()         { *m = Enums{} }
 func (m *Enums) String() string { return proto.CompactTextString(m) }
 func (*Enums) ProtoMessage()    {}
 func (*Enums) Descriptor() ([]byte, []int) {
-	return fileDescriptor_0854715c5b41c422, []int{1}
+	return fileDescriptor_0854715c5b41c422_gzipped, []int{1}
 }
 
 func (m *Enums) XXX_Unmarshal(b []byte) error {
@@ -336,29 +308,14 @@
 	XXX_sizecache        int32    `json:"-"`
 }
 
-type xxx_Nests struct{ m *Nests }
-
 func (m *Nests) ProtoReflect() protoreflect.Message {
-	return xxx_Nests{m}
+	return xxx_Test_protoFile_messageTypes[2].MessageOf(m)
 }
-func (m xxx_Nests) Type() protoreflect.MessageType {
-	return xxx_Test_protoFile_MessageTypes[2].Type
-}
-func (m xxx_Nests) KnownFields() protoreflect.KnownFields {
-	return xxx_Test_protoFile_MessageTypes[2].KnownFieldsOf(m.m)
-}
-func (m xxx_Nests) UnknownFields() protoreflect.UnknownFields {
-	return xxx_Test_protoFile_MessageTypes[2].UnknownFieldsOf(m.m)
-}
-func (m xxx_Nests) Interface() protoreflect.ProtoMessage {
-	return m.m
-}
-
 func (m *Nests) Reset()         { *m = Nests{} }
 func (m *Nests) String() string { return proto.CompactTextString(m) }
 func (*Nests) ProtoMessage()    {}
 func (*Nests) Descriptor() ([]byte, []int) {
-	return fileDescriptor_0854715c5b41c422, []int{2}
+	return fileDescriptor_0854715c5b41c422_gzipped, []int{2}
 }
 
 func (m *Nests) XXX_Unmarshal(b []byte) error {
@@ -395,29 +352,14 @@
 	XXX_sizecache        int32    `json:"-"`
 }
 
-type xxx_Nested struct{ m *Nested }
-
 func (m *Nested) ProtoReflect() protoreflect.Message {
-	return xxx_Nested{m}
+	return xxx_Test_protoFile_messageTypes[3].MessageOf(m)
 }
-func (m xxx_Nested) Type() protoreflect.MessageType {
-	return xxx_Test_protoFile_MessageTypes[3].Type
-}
-func (m xxx_Nested) KnownFields() protoreflect.KnownFields {
-	return xxx_Test_protoFile_MessageTypes[3].KnownFieldsOf(m.m)
-}
-func (m xxx_Nested) UnknownFields() protoreflect.UnknownFields {
-	return xxx_Test_protoFile_MessageTypes[3].UnknownFieldsOf(m.m)
-}
-func (m xxx_Nested) Interface() protoreflect.ProtoMessage {
-	return m.m
-}
-
 func (m *Nested) Reset()         { *m = Nested{} }
 func (m *Nested) String() string { return proto.CompactTextString(m) }
 func (*Nested) ProtoMessage()    {}
 func (*Nested) Descriptor() ([]byte, []int) {
-	return fileDescriptor_0854715c5b41c422, []int{3}
+	return fileDescriptor_0854715c5b41c422_gzipped, []int{3}
 }
 
 func (m *Nested) XXX_Unmarshal(b []byte) error {
@@ -453,7 +395,7 @@
 }
 
 func init() {
-	proto.RegisterFile("encoding/textpb/testprotos/pb3/test.proto", fileDescriptor_0854715c5b41c422)
+	proto.RegisterFile("encoding/textpb/testprotos/pb3/test.proto", fileDescriptor_0854715c5b41c422_gzipped)
 	proto.RegisterEnum("pb3.Enum", Enum_name, Enum_value)
 	proto.RegisterEnum("pb3.Enums_NestedEnum", Enums_NestedEnum_name, Enums_NestedEnum_value)
 	proto.RegisterType((*Scalars)(nil), "pb3.Scalars")
@@ -463,304 +405,106 @@
 }
 
 var fileDescriptor_0854715c5b41c422 = []byte{
-	// 503 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x93, 0xdf, 0xab, 0xd3, 0x30,
-	0x14, 0xc7, 0xcd, 0xba, 0xb6, 0x5b, 0xe6, 0xbd, 0xd6, 0xe0, 0x30, 0x22, 0x42, 0xd8, 0x83, 0x44,
-	0x85, 0x15, 0xda, 0x52, 0x10, 0xc4, 0x87, 0xb9, 0x5d, 0xb8, 0x08, 0x1b, 0x64, 0x5e, 0x84, 0xbd,
-	0x94, 0x75, 0xeb, 0xe6, 0xa0, 0x6b, 0xc6, 0x4e, 0x2a, 0xd7, 0xff, 0xc4, 0x27, 0xff, 0x56, 0x49,
-	0xb2, 0x9f, 0x0f, 0xfa, 0xd4, 0xf3, 0xed, 0x27, 0xdf, 0x73, 0xbe, 0x87, 0x10, 0xfc, 0xae, 0xa8,
-	0x16, 0x72, 0xb9, 0xa9, 0xd6, 0xa1, 0x2a, 0x1e, 0xd5, 0x2e, 0x0f, 0x55, 0x01, 0x6a, 0xb7, 0x97,
-	0x4a, 0x42, 0xb8, 0xcb, 0x63, 0x23, 0xfb, 0x46, 0x13, 0x67, 0x97, 0xc7, 0xbd, 0x3f, 0x0e, 0xf6,
-	0xa7, 0x8b, 0x79, 0x39, 0xdf, 0x03, 0xe9, 0x62, 0x0f, 0xb2, 0x5c, 0xca, 0x92, 0x22, 0x86, 0x78,
-	0x4b, 0xb8, 0x30, 0x90, 0xb2, 0x24, 0x2f, 0xb1, 0x0f, 0xd9, 0xa6, 0x52, 0x71, 0x44, 0x1b, 0x0c,
-	0x71, 0x57, 0x78, 0x70, 0xaf, 0xd5, 0x09, 0xa4, 0x09, 0x75, 0x18, 0xe2, 0x8e, 0x05, 0x69, 0x42,
-	0x5e, 0xe1, 0x16, 0x64, 0xb5, 0xb5, 0x34, 0x19, 0xe2, 0x37, 0xc2, 0x87, 0x07, 0x23, 0xcf, 0x28,
-	0x4d, 0xa8, 0xcb, 0x10, 0x6f, 0x1e, 0xd0, 0xd1, 0x05, 0xd6, 0xe5, 0x31, 0xc4, 0x9f, 0x0b, 0x1f,
-	0xa6, 0x17, 0x2e, 0xb0, 0x2e, 0x9f, 0x21, 0x4e, 0x0e, 0x28, 0x4d, 0xc8, 0x6b, 0xdc, 0x86, 0x6c,
-	0xb5, 0x79, 0x2c, 0x96, 0x71, 0x44, 0x5b, 0x0c, 0x71, 0x5f, 0xb4, 0xe0, 0xce, 0xea, 0x0b, 0x98,
-	0x26, 0xb4, 0xcd, 0x10, 0xf7, 0x8e, 0x30, 0x4d, 0xc8, 0x1b, 0x8c, 0x21, 0x83, 0xa3, 0x15, 0x33,
-	0xc4, 0x9f, 0x89, 0x36, 0x4c, 0x0f, 0x3f, 0x2e, 0x71, 0x9a, 0xd0, 0x0e, 0x43, 0x3c, 0x38, 0xe1,
-	0x34, 0xb1, 0xcb, 0xaf, 0x4a, 0x39, 0x57, 0xf4, 0x05, 0x43, 0xbc, 0x21, 0x3c, 0xb8, 0xd3, 0xca,
-	0x66, 0x5d, 0xca, 0x3a, 0x2f, 0x0b, 0xda, 0x65, 0x88, 0x23, 0xe1, 0xc3, 0xd0, 0x48, 0xeb, 0xc9,
-	0x7f, 0xa9, 0x02, 0xe8, 0x2d, 0x43, 0xfc, 0xa9, 0xf0, 0x60, 0xa0, 0xd5, 0x61, 0x3f, 0xb5, 0xdf,
-	0x54, 0x6b, 0x7a, 0xc3, 0x10, 0x6f, 0xeb, 0xfd, 0x8c, 0xec, 0xfd, 0x46, 0xd8, 0x1d, 0x55, 0xf5,
-	0x16, 0x08, 0xd3, 0xd7, 0x53, 0x54, 0xf5, 0xd6, 0x5c, 0xcf, 0x6d, 0xd4, 0xee, 0xef, 0xf2, 0xb8,
-	0xaf, 0x99, 0x70, 0x41, 0x7f, 0xc8, 0x47, 0x7c, 0x03, 0x59, 0x55, 0x80, 0x2a, 0x96, 0xf6, 0xa0,
-	0x63, 0x0e, 0x76, 0x4f, 0x07, 0xa1, 0x3f, 0x36, 0xd4, 0x98, 0x3a, 0x70, 0x16, 0xbd, 0x08, 0xe3,
-	0xb3, 0x22, 0x2d, 0xdc, 0xfc, 0x32, 0x12, 0x93, 0xe0, 0x09, 0xf1, 0xb1, 0xf3, 0x30, 0x9e, 0x04,
-	0x48, 0x17, 0xc3, 0xc9, 0x34, 0x68, 0x68, 0x36, 0xbc, 0x1f, 0xcd, 0x02, 0xdc, 0x0b, 0xb1, 0xab,
-	0x3d, 0x40, 0xde, 0xea, 0xf8, 0x76, 0xae, 0xc9, 0xd6, 0x89, 0x3a, 0x66, 0xa4, 0xed, 0x28, 0xfc,
-	0xc3, 0xa0, 0xde, 0x57, 0xec, 0xd9, 0xea, 0x6a, 0x61, 0x74, 0xb5, 0xf0, 0x55, 0xb3, 0xc6, 0xbf,
-	0x9b, 0xbd, 0xff, 0x80, 0x9b, 0xc7, 0xac, 0xb3, 0x53, 0xd6, 0xc9, 0x78, 0x64, 0xb3, 0x7e, 0xfb,
-	0x3e, 0x09, 0x1a, 0xa6, 0x18, 0x8d, 0x03, 0x3c, 0xf8, 0x3c, 0xfb, 0xb4, 0xde, 0xa8, 0x1f, 0x75,
-	0xde, 0x5f, 0xc8, 0x6d, 0xb8, 0x96, 0xe5, 0xbc, 0x5a, 0x87, 0xe6, 0x19, 0xe4, 0xf5, 0x2a, 0xfc,
-	0x19, 0x85, 0xff, 0x7f, 0x36, 0xb9, 0x67, 0xea, 0xf8, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd9,
-	0x7d, 0x94, 0x3a, 0x5f, 0x03, 0x00, 0x00,
+	// 863 bytes of the wire-encoded FileDescriptorProto
+	0x0a, 0x29, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x70,
+	0x62, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x70, 0x62, 0x33,
+	0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x70, 0x62, 0x33,
+	0x22, 0x9e, 0x03, 0x0a, 0x07, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x73, 0x12, 0x15, 0x0a, 0x06,
+	0x73, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x73, 0x42,
+	0x6f, 0x6f, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x17, 0x0a, 0x07,
+	0x73, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73,
+	0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33,
+	0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x12, 0x19, 0x0a, 0x08, 0x73, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x05, 0x20, 0x01,
+	0x28, 0x04, 0x52, 0x07, 0x73, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x19, 0x0a, 0x08, 0x73,
+	0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x07, 0x73,
+	0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x5f, 0x73, 0x69, 0x6e, 0x74,
+	0x36, 0x34, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, 0x73, 0x53, 0x69, 0x6e, 0x74, 0x36,
+	0x34, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x08,
+	0x20, 0x01, 0x28, 0x07, 0x52, 0x08, 0x73, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x1b,
+	0x0a, 0x09, 0x73, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x09, 0x20, 0x01, 0x28,
+	0x06, 0x52, 0x08, 0x73, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x1d, 0x0a, 0x0a, 0x73,
+	0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0f, 0x52,
+	0x09, 0x73, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x5f,
+	0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x10, 0x52, 0x09,
+	0x73, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x5f, 0x66,
+	0x6c, 0x6f, 0x61, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x73, 0x46, 0x6c, 0x6f,
+	0x61, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x15,
+	0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x73, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x17, 0x0a,
+	0x07, 0x73, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06,
+	0x73, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x5f, 0x73, 0x74, 0x72, 0x69,
+	0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e,
+	0x67, 0x22, 0x98, 0x01, 0x0a, 0x05, 0x45, 0x6e, 0x75, 0x6d, 0x73, 0x12, 0x20, 0x0a, 0x06, 0x73,
+	0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62,
+	0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x39, 0x0a,
+	0x0d, 0x73, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x73,
+	0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0b, 0x73, 0x4e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x22, 0x32, 0x0a, 0x0a, 0x4e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x45, 0x52, 0x4f, 0x10, 0x00,
+	0x12, 0x07, 0x0a, 0x03, 0x55, 0x4e, 0x4f, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x44, 0x4f, 0x53,
+	0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x49, 0x45, 0x5a, 0x10, 0x0a, 0x22, 0x2f, 0x0a, 0x05,
+	0x4e, 0x65, 0x73, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x08, 0x73, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x4e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x52, 0x07, 0x73, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22, 0x4b, 0x0a,
+	0x06, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x5f, 0x73, 0x74, 0x72,
+	0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x53, 0x74, 0x72, 0x69,
+	0x6e, 0x67, 0x12, 0x26, 0x0a, 0x08, 0x73, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x52, 0x07, 0x73, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x2a, 0x2b, 0x0a, 0x04, 0x45, 0x6e,
+	0x75, 0x6d, 0x12, 0x08, 0x0a, 0x04, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03,
+	0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x57, 0x4f, 0x10, 0x02, 0x12, 0x07,
+	0x0a, 0x03, 0x54, 0x45, 0x4e, 0x10, 0x0a, 0x42, 0x3e, 0x5a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75,
+	0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x76, 0x32, 0x2f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e,
+	0x67, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x70, 0x62, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x73, 0x2f, 0x70, 0x62, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-func init() {
-	xxx_Test_protoFile_FileDesc.Enums = xxx_Test_protoFile_EnumDescs[0:1]
-	xxx_Test_protoFile_FileDesc.Messages = xxx_Test_protoFile_MessageDescs[0:4]
-	xxx_Test_protoFile_MessageDescs[1].Enums = xxx_Test_protoFile_EnumDescs[1:2]
-	xxx_Test_protoFile_MessageDescs[1].Fields[0].EnumType = xxx_Test_protoFile_EnumTypes[0]
-	xxx_Test_protoFile_MessageDescs[1].Fields[1].EnumType = xxx_Test_protoFile_EnumTypes[1]
-	xxx_Test_protoFile_MessageDescs[2].Fields[0].MessageType = xxx_Test_protoFile_MessageTypes[3].Type
-	xxx_Test_protoFile_MessageDescs[3].Fields[1].MessageType = xxx_Test_protoFile_MessageTypes[3].Type
-	var err error
-	Test_protoFile, err = prototype.NewFile(&xxx_Test_protoFile_FileDesc)
-	if err != nil {
-		panic(err)
-	}
-}
+var fileDescriptor_0854715c5b41c422_gzipped = func() []byte {
+	bb := new(bytes.Buffer)
+	zw, _ := gzip.NewWriterLevel(bb, gzip.NoCompression)
+	zw.Write(fileDescriptor_0854715c5b41c422)
+	zw.Close()
+	return bb.Bytes()
+}()
 
 const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
 
 var Test_protoFile protoreflect.FileDescriptor
 
-var xxx_Test_protoFile_FileDesc = prototype.File{
-	Syntax:  protoreflect.Proto3,
-	Path:    "encoding/textpb/testprotos/pb3/test.proto",
-	Package: "pb3",
+var xxx_Test_protoFile_enumTypes [2]protoreflect.EnumType
+var xxx_Test_protoFile_messageTypes [4]protoimpl.MessageType
+var xxx_Test_protoFile_goTypes = []interface{}{
+	(Enum)(0),             // 0: pb3.Enum
+	(Enums_NestedEnum)(0), // 1: pb3.Enums.NestedEnum
+	(*Scalars)(nil),       // 2: pb3.Scalars
+	(*Enums)(nil),         // 3: pb3.Enums
+	(*Nests)(nil),         // 4: pb3.Nests
+	(*Nested)(nil),        // 5: pb3.Nested
 }
-var xxx_Test_protoFile_EnumTypes = [2]protoreflect.EnumType{
-	prototype.GoEnum(
-		xxx_Test_protoFile_EnumDescs[0].Reference(),
-		func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
-			return Enum(n)
-		},
-	),
-	prototype.GoEnum(
-		xxx_Test_protoFile_EnumDescs[1].Reference(),
-		func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.Enum {
-			return Enums_NestedEnum(n)
-		},
-	),
+var xxx_Test_protoFile_depIdxs = []int32{
+	0, // pb3.Enums.s_enum:type_name -> pb3.Enum
+	1, // pb3.Enums.s_nested_enum:type_name -> pb3.Enums.NestedEnum
+	5, // pb3.Nests.s_nested:type_name -> pb3.Nested
+	5, // pb3.Nested.s_nested:type_name -> pb3.Nested
 }
-var xxx_Test_protoFile_EnumDescs = [2]prototype.Enum{
-	{
-		Name: "Enum",
-		Values: []prototype.EnumValue{
-			{Name: "ZERO", Number: 0},
-			{Name: "ONE", Number: 1},
-			{Name: "TWO", Number: 2},
-			{Name: "TEN", Number: 10},
-		},
-	},
-	{
-		Name: "NestedEnum",
-		Values: []prototype.EnumValue{
-			{Name: "CERO", Number: 0},
-			{Name: "UNO", Number: 1},
-			{Name: "DOS", Number: 2},
-			{Name: "DIEZ", Number: 10},
-		},
-	},
-}
-var xxx_Test_protoFile_MessageTypes = [4]protoimpl.MessageType{
-	{Type: prototype.GoMessage(
-		xxx_Test_protoFile_MessageDescs[0].Reference(),
-		func(protoreflect.MessageType) protoreflect.Message {
-			return xxx_Scalars{new(Scalars)}
-		},
-	)},
-	{Type: prototype.GoMessage(
-		xxx_Test_protoFile_MessageDescs[1].Reference(),
-		func(protoreflect.MessageType) protoreflect.Message {
-			return xxx_Enums{new(Enums)}
-		},
-	)},
-	{Type: prototype.GoMessage(
-		xxx_Test_protoFile_MessageDescs[2].Reference(),
-		func(protoreflect.MessageType) protoreflect.Message {
-			return xxx_Nests{new(Nests)}
-		},
-	)},
-	{Type: prototype.GoMessage(
-		xxx_Test_protoFile_MessageDescs[3].Reference(),
-		func(protoreflect.MessageType) protoreflect.Message {
-			return xxx_Nested{new(Nested)}
-		},
-	)},
-}
-var xxx_Test_protoFile_MessageDescs = [4]prototype.Message{
-	{
-		Name: "Scalars",
-		Fields: []prototype.Field{
-			{
-				Name:        "s_bool",
-				Number:      1,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.BoolKind,
-				JSONName:    "sBool",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "s_int32",
-				Number:      2,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.Int32Kind,
-				JSONName:    "sInt32",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "s_int64",
-				Number:      3,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.Int64Kind,
-				JSONName:    "sInt64",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "s_uint32",
-				Number:      4,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.Uint32Kind,
-				JSONName:    "sUint32",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "s_uint64",
-				Number:      5,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.Uint64Kind,
-				JSONName:    "sUint64",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "s_sint32",
-				Number:      6,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.Sint32Kind,
-				JSONName:    "sSint32",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "s_sint64",
-				Number:      7,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.Sint64Kind,
-				JSONName:    "sSint64",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "s_fixed32",
-				Number:      8,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.Fixed32Kind,
-				JSONName:    "sFixed32",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "s_fixed64",
-				Number:      9,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.Fixed64Kind,
-				JSONName:    "sFixed64",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "s_sfixed32",
-				Number:      10,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.Sfixed32Kind,
-				JSONName:    "sSfixed32",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "s_sfixed64",
-				Number:      11,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.Sfixed64Kind,
-				JSONName:    "sSfixed64",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "s_float",
-				Number:      20,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.FloatKind,
-				JSONName:    "sFloat",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "s_double",
-				Number:      21,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.DoubleKind,
-				JSONName:    "sDouble",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "s_bytes",
-				Number:      14,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.BytesKind,
-				JSONName:    "sBytes",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "s_string",
-				Number:      13,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.StringKind,
-				JSONName:    "sString",
-				IsPacked:    prototype.False,
-			},
-		},
-	},
-	{
-		Name: "Enums",
-		Fields: []prototype.Field{
-			{
-				Name:        "s_enum",
-				Number:      1,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.EnumKind,
-				JSONName:    "sEnum",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "s_nested_enum",
-				Number:      3,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.EnumKind,
-				JSONName:    "sNestedEnum",
-				IsPacked:    prototype.False,
-			},
-		},
-	},
-	{
-		Name: "Nests",
-		Fields: []prototype.Field{
-			{
-				Name:        "s_nested",
-				Number:      1,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "sNested",
-				IsPacked:    prototype.False,
-			},
-		},
-	},
-	{
-		Name: "Nested",
-		Fields: []prototype.Field{
-			{
-				Name:        "s_string",
-				Number:      1,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.StringKind,
-				JSONName:    "sString",
-				IsPacked:    prototype.False,
-			},
-			{
-				Name:        "s_nested",
-				Number:      2,
-				Cardinality: protoreflect.Optional,
-				Kind:        protoreflect.MessageKind,
-				JSONName:    "sNested",
-				IsPacked:    prototype.False,
-			},
-		},
-	},
+
+func init() {
+	var messageTypes [4]protoreflect.MessageType
+	Test_protoFile = protoimpl.FileBuilder{
+		RawDescriptor:      fileDescriptor_0854715c5b41c422,
+		GoTypes:            xxx_Test_protoFile_goTypes,
+		DependencyIndexes:  xxx_Test_protoFile_depIdxs,
+		EnumOutputTypes:    xxx_Test_protoFile_enumTypes[:],
+		MessageOutputTypes: messageTypes[:],
+	}.Init()
+	messageGoTypes := xxx_Test_protoFile_goTypes[2:][:4]
+	for i, mt := range messageTypes[:] {
+		xxx_Test_protoFile_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
+		xxx_Test_protoFile_messageTypes[i].PBType = mt
+	}
+	xxx_Test_protoFile_goTypes = nil
+	xxx_Test_protoFile_depIdxs = nil
 }