diff --git a/cmd/protoc-gen-go/internal_gengo/main.go b/cmd/protoc-gen-go/internal_gengo/main.go
index 435eb5b..d64b2da 100644
--- a/cmd/protoc-gen-go/internal_gengo/main.go
+++ b/cmd/protoc-gen-go/internal_gengo/main.go
@@ -31,9 +31,10 @@
 const generatedCodeVersion = 3
 
 const (
-	fmtPackage   = protogen.GoImportPath("fmt")
-	mathPackage  = protogen.GoImportPath("math")
-	protoPackage = protogen.GoImportPath("github.com/golang/protobuf/proto")
+	fmtPackage      = protogen.GoImportPath("fmt")
+	mathPackage     = protogen.GoImportPath("math")
+	protoPackage    = protogen.GoImportPath("github.com/golang/protobuf/proto")
+	protoapiPackage = protogen.GoImportPath("github.com/golang/protobuf/protoapi")
 )
 
 type fileInfo struct {
@@ -46,6 +47,28 @@
 	fileReflect fileReflect
 }
 
+// protoPackage returns the package to import, which is either the protoPackage
+// or the protoapiPackage constant.
+//
+// This special casing exists because we are unable to move InternalMessageInfo
+// to protoapi since the implementation behind that logic is heavy and
+// too intricately connected to other parts of the proto package.
+// The descriptor proto is special in that it avoids using InternalMessageInfo
+// so that it is able to depend solely on protoapi and break its dependency
+// on the proto package. It is still semantically correct for descriptor to
+// avoid using InternalMessageInfo, but it does incur some performance penalty.
+// This is acceptable for descriptor, which is a single proto file and is not
+// known to be in the hot path for any code.
+//
+// TODO: Remove this special-casing when the table-driven implementation has
+// been ported over to v2.
+func (f *fileInfo) protoPackage() protogen.GoImportPath {
+	if isDescriptor(f.File) {
+		return protoapiPackage
+	}
+	return protoPackage
+}
+
 // GenerateFile generates the contents of a .pb.go file.
 func GenerateFile(gen *protogen.Plugin, file *protogen.File, g *protogen.GeneratedFile) {
 	f := &fileInfo{
@@ -97,19 +120,21 @@
 	// detect unintended variations.
 	//
 	// TODO: Eventually remove this.
-	g.P("// Reference imports to suppress errors if they are not otherwise used.")
-	g.P("var _ = ", protoPackage.Ident("Marshal"))
-	g.P("var _ = ", fmtPackage.Ident("Errorf"))
-	g.P("var _ = ", mathPackage.Ident("Inf"))
-	g.P()
+	if !isDescriptor(file) {
+		g.P("// Reference imports to suppress errors if they are not otherwise used.")
+		g.P("var _ = ", protoPackage.Ident("Marshal"))
+		g.P("var _ = ", fmtPackage.Ident("Errorf"))
+		g.P("var _ = ", mathPackage.Ident("Inf"))
+		g.P()
 
-	g.P("// This is a compile-time assertion to ensure that this generated file")
-	g.P("// is compatible with the proto package it is being compiled against.")
-	g.P("// A compilation error at this line likely means your copy of the")
-	g.P("// proto package needs to be updated.")
-	g.P("const _ = ", protoPackage.Ident(fmt.Sprintf("ProtoPackageIsVersion%d", generatedCodeVersion)),
-		"// please upgrade the proto package")
-	g.P()
+		g.P("// This is a compile-time assertion to ensure that this generated file")
+		g.P("// is compatible with the proto package it is being compiled against.")
+		g.P("// A compilation error at this line likely means your copy of the")
+		g.P("// proto package needs to be updated.")
+		g.P("const _ = ", protoPackage.Ident(fmt.Sprintf("ProtoPackageIsVersion%d", generatedCodeVersion)),
+			"// please upgrade the proto package")
+		g.P()
+	}
 
 	for i, imps := 0, f.Desc.Imports(); i < imps.Len(); i++ {
 		genImport(gen, g, f, imps.Get(i))
@@ -235,7 +260,7 @@
 	w.Close()
 	b = buf.Bytes()
 
-	g.P("func init() { proto.RegisterFile(", strconv.Quote(f.Desc.Path()), ", ", f.descriptorVar, ") }")
+	g.P("func init() {", f.protoPackage().Ident("RegisterFile"), "(", strconv.Quote(f.Desc.Path()), ", ", f.descriptorVar, ") }")
 	g.P()
 	g.P("var ", f.descriptorVar, " = []byte{")
 	g.P("// ", len(b), " bytes of a gzipped FileDescriptorProto")
@@ -304,13 +329,13 @@
 		g.P()
 	}
 	g.P("func (x ", enum.GoIdent, ") String() string {")
-	g.P("return ", protoPackage.Ident("EnumName"), "(", enum.GoIdent, "_name, int32(x))")
+	g.P("return ", f.protoPackage().Ident("EnumName"), "(", enum.GoIdent, "_name, int32(x))")
 	g.P("}")
 	g.P()
 
 	if enum.Desc.Syntax() != protoreflect.Proto3 {
 		g.P("func (x *", enum.GoIdent, ") UnmarshalJSON(data []byte) error {")
-		g.P("value, err := ", protoPackage.Ident("UnmarshalJSONEnum"), "(", enum.GoIdent, `_value, data, "`, enum.GoIdent, `")`)
+		g.P("value, err := ", f.protoPackage().Ident("UnmarshalJSONEnum"), "(", enum.GoIdent, `_value, data, "`, enum.GoIdent, `")`)
 		g.P("if err != nil {")
 		g.P("return err")
 		g.P("}")
@@ -409,7 +434,7 @@
 			tags = append(tags, `protobuf_messageset:"1"`)
 		}
 		tags = append(tags, `json:"-"`)
-		g.P(protoPackage.Ident("XXX_InternalExtensions"), " `", strings.Join(tags, " "), "`")
+		g.P(f.protoPackage().Ident("XXX_InternalExtensions"), " `", strings.Join(tags, " "), "`")
 	}
 	// TODO XXX_InternalExtensions
 	g.P("XXX_unrecognized []byte `json:\"-\"`")
@@ -423,7 +448,7 @@
 	// Reset
 	g.P("func (m *", message.GoIdent, ") Reset() { *m = ", message.GoIdent, "{} }")
 	// String
-	g.P("func (m *", message.GoIdent, ") String() string { return ", protoPackage.Ident("CompactTextString"), "(m) }")
+	g.P("func (m *", message.GoIdent, ") String() string { return ", f.protoPackage().Ident("CompactTextString"), "(m) }")
 	// ProtoMessage
 	g.P("func (*", message.GoIdent, ") ProtoMessage() {}")
 	// Descriptor
@@ -438,7 +463,7 @@
 
 	// ExtensionRangeArray
 	if extranges := message.Desc.ExtensionRanges(); extranges.Len() > 0 {
-		protoExtRange := protoPackage.Ident("ExtensionRange")
+		protoExtRange := f.protoPackage().Ident("ExtensionRange")
 		extRangeVar := "extRange_" + message.GoIdent.GoName
 		g.P("var ", extRangeVar, " = []", protoExtRange, " {")
 		for i := 0; i < extranges.Len(); i++ {
@@ -462,30 +487,35 @@
 	// table-driven approach. Instead, we should only add a single method
 	// that allows getting access to the *InternalMessageInfo struct and then
 	// calling Unmarshal, Marshal, Merge, Size, and Discard directly on that.
-	messageInfoVar := "xxx_messageInfo_" + message.GoIdent.GoName
-	// XXX_Unmarshal
-	g.P("func (m *", message.GoIdent, ") XXX_Unmarshal(b []byte) error {")
-	g.P("return ", messageInfoVar, ".Unmarshal(m, b)")
-	g.P("}")
-	// XXX_Marshal
-	g.P("func (m *", message.GoIdent, ") XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {")
-	g.P("return ", messageInfoVar, ".Marshal(b, m, deterministic)")
-	g.P("}")
-	// XXX_Merge
-	g.P("func (m *", message.GoIdent, ") XXX_Merge(src proto.Message) {")
-	g.P(messageInfoVar, ".Merge(m, src)")
-	g.P("}")
-	// XXX_Size
-	g.P("func (m *", message.GoIdent, ") XXX_Size() int {")
-	g.P("return ", messageInfoVar, ".Size(m)")
-	g.P("}")
-	// XXX_DiscardUnknown
-	g.P("func (m *", message.GoIdent, ") XXX_DiscardUnknown() {")
-	g.P(messageInfoVar, ".DiscardUnknown(m)")
-	g.P("}")
-	g.P()
-	g.P("var ", messageInfoVar, " ", protoPackage.Ident("InternalMessageInfo"))
-	g.P()
+	if !isDescriptor(f.File) {
+		// NOTE: We avoid adding table-driven support for descriptor proto
+		// since this depends on the v1 proto package, which would eventually
+		// need to depend on the descriptor itself.
+		messageInfoVar := "xxx_messageInfo_" + message.GoIdent.GoName
+		// XXX_Unmarshal
+		g.P("func (m *", message.GoIdent, ") XXX_Unmarshal(b []byte) error {")
+		g.P("return ", messageInfoVar, ".Unmarshal(m, b)")
+		g.P("}")
+		// XXX_Marshal
+		g.P("func (m *", message.GoIdent, ") XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {")
+		g.P("return ", messageInfoVar, ".Marshal(b, m, deterministic)")
+		g.P("}")
+		// XXX_Merge
+		g.P("func (m *", message.GoIdent, ") XXX_Merge(src proto.Message) {")
+		g.P(messageInfoVar, ".Merge(m, src)")
+		g.P("}")
+		// XXX_Size
+		g.P("func (m *", message.GoIdent, ") XXX_Size() int {")
+		g.P("return ", messageInfoVar, ".Size(m)")
+		g.P("}")
+		// XXX_DiscardUnknown
+		g.P("func (m *", message.GoIdent, ") XXX_DiscardUnknown() {")
+		g.P(messageInfoVar, ".DiscardUnknown(m)")
+		g.P("}")
+		g.P()
+		g.P("var ", messageInfoVar, " ", protoPackage.Ident("InternalMessageInfo"))
+		g.P()
+	}
 
 	// Constants and vars holding the default values of fields.
 	for _, field := range message.Fields {
@@ -699,7 +729,7 @@
 		name = n
 	}
 
-	g.P("var ", extensionVar(f.File, extension), " = &", protoPackage.Ident("ExtensionDesc"), "{")
+	g.P("var ", extensionVar(f.File, extension), " = &", f.protoPackage().Ident("ExtensionDesc"), "{")
 	g.P("ExtendedType: (*", extension.ExtendedType.GoIdent, ")(nil),")
 	goType, pointer := fieldGoType(g, extension)
 	if pointer {
@@ -757,7 +787,7 @@
 	g.P("func init() {")
 	for _, enum := range f.allEnums {
 		name := enum.GoIdent.GoName
-		g.P(protoPackage.Ident("RegisterEnum"), fmt.Sprintf("(%q, %s_name, %s_value)", enumRegistryName(enum), name, name))
+		g.P(f.protoPackage().Ident("RegisterEnum"), fmt.Sprintf("(%q, %s_name, %s_value)", enumRegistryName(enum), name, name))
 	}
 	for _, message := range f.allMessages {
 		if message.Desc.IsMapEntry() {
@@ -769,7 +799,7 @@
 		}
 
 		name := message.GoIdent.GoName
-		g.P(protoPackage.Ident("RegisterType"), fmt.Sprintf("((*%s)(nil), %q)", name, message.Desc.FullName()))
+		g.P(f.protoPackage().Ident("RegisterType"), fmt.Sprintf("((*%s)(nil), %q)", name, message.Desc.FullName()))
 
 		// Types of map fields, sorted by the name of the field message type.
 		var mapFields []*protogen.Field
@@ -786,7 +816,7 @@
 		for _, field := range mapFields {
 			typeName := string(field.MessageType.Desc.FullName())
 			goType, _ := fieldGoType(g, field)
-			g.P(protoPackage.Ident("RegisterMapType"), fmt.Sprintf("((%v)(nil), %q)", goType, typeName))
+			g.P(f.protoPackage().Ident("RegisterMapType"), fmt.Sprintf("((%v)(nil), %q)", goType, typeName))
 		}
 	}
 	for _, extension := range f.Extensions {
@@ -797,7 +827,7 @@
 }
 
 func genRegisterExtension(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo, extension *protogen.Extension) {
-	g.P(protoPackage.Ident("RegisterExtension"), "(", extensionVar(f.File, extension), ")")
+	g.P(f.protoPackage().Ident("RegisterExtension"), "(", extensionVar(f.File, extension), ")")
 }
 
 // deprecationComment returns a standard deprecation comment if deprecated is true.
diff --git a/cmd/protoc-gen-go/internal_gengo/reflect.go b/cmd/protoc-gen-go/internal_gengo/reflect.go
index a03373f..9200910 100644
--- a/cmd/protoc-gen-go/internal_gengo/reflect.go
+++ b/cmd/protoc-gen-go/internal_gengo/reflect.go
@@ -7,6 +7,7 @@
 import (
 	"fmt"
 	"math"
+	"os"
 	"reflect"
 	"strconv"
 	"strings"
@@ -16,7 +17,17 @@
 )
 
 // TODO: Remove this flag.
-const enableReflect = true
+// Remember to remove the copy in internal/protogen/goldentest.
+var enableReflectFlag = os.Getenv("PROTOC_GEN_GO_ENABLE_REFLECT") != ""
+
+func enableReflection(f *protogen.File) bool {
+	return enableReflectFlag || isDescriptor(f)
+}
+
+// TODO: Remove special-casing for descriptor proto.
+func isDescriptor(f *protogen.File) bool {
+	return f.Desc.Path() == "google/protobuf/descriptor.proto" && f.Desc.Package() == "google.protobuf"
+}
 
 // minimumVersion is minimum version of the v2 proto package that is required.
 // This is incremented every time the generated code relies on some property
@@ -68,7 +79,7 @@
 }
 
 func genReflectInitFunction(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo) {
-	if !enableReflect {
+	if !enableReflection(f.File) {
 		return
 	}
 
@@ -160,7 +171,7 @@
 }
 
 func genReflectFileDescriptor(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo) {
-	if !enableReflect {
+	if !enableReflection(f.File) {
 		return
 	}
 
@@ -318,7 +329,7 @@
 }
 
 func genReflectEnum(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo, enum *protogen.Enum) {
-	if !enableReflect {
+	if !enableReflection(f.File) {
 		return
 	}
 
@@ -340,7 +351,7 @@
 }
 
 func genReflectMessage(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo, message *protogen.Message) {
-	if !enableReflect {
+	if !enableReflection(f.File) {
 		return
 	}
 
diff --git a/go.mod b/go.mod
index b899c6f..d43698f 100644
--- a/go.mod
+++ b/go.mod
@@ -1,7 +1,7 @@
 module github.com/golang/protobuf/v2
 
 require (
-	github.com/golang/protobuf v1.2.1-0.20181130223505-8f3966804431
+	github.com/golang/protobuf v1.2.1-0.20181205191652-7e65e513332f
 	github.com/google/go-cmp v0.2.1-0.20181101181452-745b8ec83783
 	golang.org/x/tools v0.0.0-20180928181343-b3c0be4c978b
 )
diff --git a/go.sum b/go.sum
index dfd9fba..0cf2a8d 100644
--- a/go.sum
+++ b/go.sum
@@ -1,6 +1,6 @@
 github.com/golang/protobuf v1.2.1-0.20181127190454-8d0c54c12466/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0=
-github.com/golang/protobuf v1.2.1-0.20181130223505-8f3966804431 h1:OtJApg8lwJ831/LP3MINk4iuG5OrqxeBJUx3IMCKWY8=
-github.com/golang/protobuf v1.2.1-0.20181130223505-8f3966804431/go.mod h1:asK8yRb/+zxJTE0SbTESCku/4OjiDfbPwk4rEyIatUA=
+github.com/golang/protobuf v1.2.1-0.20181205191652-7e65e513332f h1:jEoef3K+ZQwZ7UB1iGu6KhX8hS9cYw1aXR7djS3Vn10=
+github.com/golang/protobuf v1.2.1-0.20181205191652-7e65e513332f/go.mod h1:asK8yRb/+zxJTE0SbTESCku/4OjiDfbPwk4rEyIatUA=
 github.com/golang/protobuf/v2 v2.0.0-20181127193627-d7e97bc71bcb/go.mod h1:MgUD+N3FwzDmj2CdMsT5ap7K7jx+c9cQDQ7fVhmH+Xw=
 github.com/google/go-cmp v0.2.1-0.20181101181452-745b8ec83783 h1:wVZ6laEGf86tNDTpR5mxFyFIclJJiXCxuJhcQKnsOHk=
 github.com/google/go-cmp v0.2.1-0.20181101181452-745b8ec83783/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
diff --git a/internal/protogen/goldentest/goldentest.go b/internal/protogen/goldentest/goldentest.go
index fc0dc57..0902ad7 100644
--- a/internal/protogen/goldentest/goldentest.go
+++ b/internal/protogen/goldentest/goldentest.go
@@ -119,6 +119,8 @@
 	// We set the RUN_AS_PROTOC_PLUGIN environment variable to indicate that
 	// the subprocess should act as a proto compiler rather than a test.
 	cmd.Env = append(os.Environ(), "RUN_AS_PROTOC_PLUGIN=1")
+	// TODO: Remove this when protoc-gen-go always generates reflection.
+	cmd.Env = append(cmd.Env, "PROTOC_GEN_GO_ENABLE_REFLECT=1")
 	out, err := cmd.CombinedOutput()
 	if len(out) > 0 || err != nil {
 		t.Log("RUNNING: ", strings.Join(cmd.Args, " "))
diff --git a/protogen/protogen_test.go b/protogen/protogen_test.go
index 4750e23..7882605 100644
--- a/protogen/protogen_test.go
+++ b/protogen/protogen_test.go
@@ -383,16 +383,6 @@
 		t.Fatal(err)
 	}
 	req := &pluginpb.CodeGeneratorRequest{}
-
-	// TODO: This is a hack, but the proto v1 UnmarshalText relies on global
-	// enum registration to work. The v2 textpb will not have this issue.
-	proto.RegisterEnum("google.protobuf.FieldDescriptorProto_Type", descriptorpb.FieldDescriptorProto_Type_name, descriptorpb.FieldDescriptorProto_Type_value)
-	proto.RegisterEnum("google.protobuf.FieldDescriptorProto_Label", descriptorpb.FieldDescriptorProto_Label_name, descriptorpb.FieldDescriptorProto_Label_value)
-	proto.RegisterEnum("google.protobuf.FileOptions_OptimizeMode", descriptorpb.FileOptions_OptimizeMode_name, descriptorpb.FileOptions_OptimizeMode_value)
-	proto.RegisterEnum("google.protobuf.FieldOptions_CType", descriptorpb.FieldOptions_CType_name, descriptorpb.FieldOptions_CType_value)
-	proto.RegisterEnum("google.protobuf.FieldOptions_JSType", descriptorpb.FieldOptions_JSType_name, descriptorpb.FieldOptions_JSType_value)
-	proto.RegisterEnum("google.protobuf.MethodOptions_IdempotencyLevel", descriptorpb.MethodOptions_IdempotencyLevel_name, descriptorpb.MethodOptions_IdempotencyLevel_value)
-
 	if err := proto.UnmarshalText(string(b), req); err != nil {
 		t.Fatal(err)
 	}
diff --git a/regenerate.bash b/regenerate.bash
index af3e487..acccb2b 100755
--- a/regenerate.bash
+++ b/regenerate.bash
@@ -21,9 +21,28 @@
 for dir in ${PROTO_DIRS[@]}; do
   for p in `find $dir -name "*.proto"`; do
     echo "# $p"
-    protoc -I$dir \
+    PROTOC_GEN_GO_ENABLE_REFLECT=1 protoc -I$dir \
       --go_out=paths=source_relative:$dir \
       --go-grpc_out=paths=source_relative:$dir \
       $p
   done
 done
+
+# Generate descriptor and plugin.
+# TODO: Make this more automated.
+
+echo "# types/descriptor/descriptor.proto"
+mkdir -p $tmpdir/src/google/protobuf
+cp ./types/descriptor/descriptor.proto $tmpdir/src/google/protobuf/descriptor.proto
+PROTOC_GEN_GO_ENABLE_REFLECT=1 protoc -I$tmpdir/src \
+  --go_out=paths=source_relative:$tmpdir/src \
+  $tmpdir/src/google/protobuf/descriptor.proto
+cp $tmpdir/src/google/protobuf/descriptor.pb.go ./types/descriptor/descriptor.pb.go
+
+echo "# types/plugin/plugin.proto"
+mkdir -p $tmpdir/src/google/protobuf/compiler
+cp ./types/plugin/plugin.proto $tmpdir/src/google/protobuf/compiler/plugin.proto
+PROTOC_GEN_GO_ENABLE_REFLECT=1 protoc -I$tmpdir/src \
+  --go_out=paths=source_relative:$tmpdir/src \
+  $tmpdir/src/google/protobuf/compiler/plugin.proto
+cp $tmpdir/src/google/protobuf/compiler/plugin.pb.go ./types/plugin/plugin.pb.go
diff --git a/types/descriptor/descriptor.pb.go b/types/descriptor/descriptor.pb.go
index 529c9e6..7fdc6d3 100644
--- a/types/descriptor/descriptor.pb.go
+++ b/types/descriptor/descriptor.pb.go
@@ -1,12 +1,10 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // source: google/protobuf/descriptor.proto
 
-package descriptor
+package descriptor_proto
 
 import (
-	"errors"
-
-	proto "github.com/golang/protobuf/protoapi"
+	protoapi "github.com/golang/protobuf/protoapi"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	prototype "github.com/golang/protobuf/v2/reflect/prototype"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
@@ -107,11 +105,16 @@
 }
 
 func (x FieldDescriptorProto_Type) String() string {
-	return FieldDescriptorProto_Type_name[int32(x)]
+	return protoapi.EnumName(FieldDescriptorProto_Type_name, int32(x))
 }
 
 func (x *FieldDescriptorProto_Type) UnmarshalJSON(data []byte) error {
-	return errors.New("not implemented")
+	value, err := protoapi.UnmarshalJSONEnum(FieldDescriptorProto_Type_value, data, "FieldDescriptorProto_Type")
+	if err != nil {
+		return err
+	}
+	*x = FieldDescriptorProto_Type(value)
+	return nil
 }
 
 func (FieldDescriptorProto_Type) EnumDescriptor() ([]byte, []int) {
@@ -158,11 +161,16 @@
 }
 
 func (x FieldDescriptorProto_Label) String() string {
-	return FieldDescriptorProto_Label_name[int32(x)]
+	return protoapi.EnumName(FieldDescriptorProto_Label_name, int32(x))
 }
 
 func (x *FieldDescriptorProto_Label) UnmarshalJSON(data []byte) error {
-	return errors.New("not implemented")
+	value, err := protoapi.UnmarshalJSONEnum(FieldDescriptorProto_Label_value, data, "FieldDescriptorProto_Label")
+	if err != nil {
+		return err
+	}
+	*x = FieldDescriptorProto_Label(value)
+	return nil
 }
 
 func (FieldDescriptorProto_Label) EnumDescriptor() ([]byte, []int) {
@@ -210,11 +218,16 @@
 }
 
 func (x FileOptions_OptimizeMode) String() string {
-	return FileOptions_OptimizeMode_name[int32(x)]
+	return protoapi.EnumName(FileOptions_OptimizeMode_name, int32(x))
 }
 
 func (x *FileOptions_OptimizeMode) UnmarshalJSON(data []byte) error {
-	return errors.New("not implemented")
+	value, err := protoapi.UnmarshalJSONEnum(FileOptions_OptimizeMode_value, data, "FileOptions_OptimizeMode")
+	if err != nil {
+		return err
+	}
+	*x = FileOptions_OptimizeMode(value)
+	return nil
 }
 
 func (FileOptions_OptimizeMode) EnumDescriptor() ([]byte, []int) {
@@ -261,11 +274,16 @@
 }
 
 func (x FieldOptions_CType) String() string {
-	return FieldOptions_CType_name[int32(x)]
+	return protoapi.EnumName(FieldOptions_CType_name, int32(x))
 }
 
 func (x *FieldOptions_CType) UnmarshalJSON(data []byte) error {
-	return errors.New("not implemented")
+	value, err := protoapi.UnmarshalJSONEnum(FieldOptions_CType_value, data, "FieldOptions_CType")
+	if err != nil {
+		return err
+	}
+	*x = FieldOptions_CType(value)
+	return nil
 }
 
 func (FieldOptions_CType) EnumDescriptor() ([]byte, []int) {
@@ -314,11 +332,16 @@
 }
 
 func (x FieldOptions_JSType) String() string {
-	return FieldOptions_JSType_name[int32(x)]
+	return protoapi.EnumName(FieldOptions_JSType_name, int32(x))
 }
 
 func (x *FieldOptions_JSType) UnmarshalJSON(data []byte) error {
-	return errors.New("not implemented")
+	value, err := protoapi.UnmarshalJSONEnum(FieldOptions_JSType_value, data, "FieldOptions_JSType")
+	if err != nil {
+		return err
+	}
+	*x = FieldOptions_JSType(value)
+	return nil
 }
 
 func (FieldOptions_JSType) EnumDescriptor() ([]byte, []int) {
@@ -367,11 +390,16 @@
 }
 
 func (x MethodOptions_IdempotencyLevel) String() string {
-	return MethodOptions_IdempotencyLevel_name[int32(x)]
+	return protoapi.EnumName(MethodOptions_IdempotencyLevel_name, int32(x))
 }
 
 func (x *MethodOptions_IdempotencyLevel) UnmarshalJSON(data []byte) error {
-	return errors.New("not implemented")
+	value, err := protoapi.UnmarshalJSONEnum(MethodOptions_IdempotencyLevel_value, data, "MethodOptions_IdempotencyLevel")
+	if err != nil {
+		return err
+	}
+	*x = MethodOptions_IdempotencyLevel(value)
+	return nil
 }
 
 func (MethodOptions_IdempotencyLevel) EnumDescriptor() ([]byte, []int) {
@@ -407,7 +435,7 @@
 func (m xxx_FileDescriptorSet) ProtoMutable() {}
 
 func (m *FileDescriptorSet) Reset()         { *m = FileDescriptorSet{} }
-func (m *FileDescriptorSet) String() string { return "not implemented" }
+func (m *FileDescriptorSet) String() string { return protoapi.CompactTextString(m) }
 func (*FileDescriptorSet) ProtoMessage()    {}
 func (*FileDescriptorSet) Descriptor() ([]byte, []int) {
 	return fileDescriptor_e5baabe45344a177, []int{0}
@@ -470,7 +498,7 @@
 func (m xxx_FileDescriptorProto) ProtoMutable() {}
 
 func (m *FileDescriptorProto) Reset()         { *m = FileDescriptorProto{} }
-func (m *FileDescriptorProto) String() string { return "not implemented" }
+func (m *FileDescriptorProto) String() string { return protoapi.CompactTextString(m) }
 func (*FileDescriptorProto) ProtoMessage()    {}
 func (*FileDescriptorProto) Descriptor() ([]byte, []int) {
 	return fileDescriptor_e5baabe45344a177, []int{1}
@@ -599,7 +627,7 @@
 func (m xxx_DescriptorProto) ProtoMutable() {}
 
 func (m *DescriptorProto) Reset()         { *m = DescriptorProto{} }
-func (m *DescriptorProto) String() string { return "not implemented" }
+func (m *DescriptorProto) String() string { return protoapi.CompactTextString(m) }
 func (*DescriptorProto) ProtoMessage()    {}
 func (*DescriptorProto) Descriptor() ([]byte, []int) {
 	return fileDescriptor_e5baabe45344a177, []int{2}
@@ -706,7 +734,7 @@
 func (m xxx_DescriptorProto_ExtensionRange) ProtoMutable() {}
 
 func (m *DescriptorProto_ExtensionRange) Reset()         { *m = DescriptorProto_ExtensionRange{} }
-func (m *DescriptorProto_ExtensionRange) String() string { return "not implemented" }
+func (m *DescriptorProto_ExtensionRange) String() string { return protoapi.CompactTextString(m) }
 func (*DescriptorProto_ExtensionRange) ProtoMessage()    {}
 func (*DescriptorProto_ExtensionRange) Descriptor() ([]byte, []int) {
 	return fileDescriptor_e5baabe45344a177, []int{2, 0}
@@ -766,7 +794,7 @@
 func (m xxx_DescriptorProto_ReservedRange) ProtoMutable() {}
 
 func (m *DescriptorProto_ReservedRange) Reset()         { *m = DescriptorProto_ReservedRange{} }
-func (m *DescriptorProto_ReservedRange) String() string { return "not implemented" }
+func (m *DescriptorProto_ReservedRange) String() string { return protoapi.CompactTextString(m) }
 func (*DescriptorProto_ReservedRange) ProtoMessage()    {}
 func (*DescriptorProto_ReservedRange) Descriptor() ([]byte, []int) {
 	return fileDescriptor_e5baabe45344a177, []int{2, 1}
@@ -788,11 +816,11 @@
 
 type ExtensionRangeOptions struct {
 	// The parser stores options it doesn't recognize here. See above.
-	UninterpretedOption          []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
-	XXX_NoUnkeyedLiteral         struct{}               `json:"-"`
-	proto.XXX_InternalExtensions `json:"-"`
-	XXX_unrecognized             []byte `json:"-"`
-	XXX_sizecache                int32  `json:"-"`
+	UninterpretedOption             []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
+	XXX_NoUnkeyedLiteral            struct{}               `json:"-"`
+	protoapi.XXX_InternalExtensions `json:"-"`
+	XXX_unrecognized                []byte `json:"-"`
+	XXX_sizecache                   int32  `json:"-"`
 }
 
 type xxx_ExtensionRangeOptions struct{ m *ExtensionRangeOptions }
@@ -815,17 +843,17 @@
 func (m xxx_ExtensionRangeOptions) ProtoMutable() {}
 
 func (m *ExtensionRangeOptions) Reset()         { *m = ExtensionRangeOptions{} }
-func (m *ExtensionRangeOptions) String() string { return "not implemented" }
+func (m *ExtensionRangeOptions) String() string { return protoapi.CompactTextString(m) }
 func (*ExtensionRangeOptions) ProtoMessage()    {}
 func (*ExtensionRangeOptions) Descriptor() ([]byte, []int) {
 	return fileDescriptor_e5baabe45344a177, []int{3}
 }
 
-var extRange_ExtensionRangeOptions = []proto.ExtensionRange{
+var extRange_ExtensionRangeOptions = []protoapi.ExtensionRange{
 	{Start: 1000, End: 536870911},
 }
 
-func (*ExtensionRangeOptions) ExtensionRangeArray() []proto.ExtensionRange {
+func (*ExtensionRangeOptions) ExtensionRangeArray() []protoapi.ExtensionRange {
 	return extRange_ExtensionRangeOptions
 }
 
@@ -893,7 +921,7 @@
 func (m xxx_FieldDescriptorProto) ProtoMutable() {}
 
 func (m *FieldDescriptorProto) Reset()         { *m = FieldDescriptorProto{} }
-func (m *FieldDescriptorProto) String() string { return "not implemented" }
+func (m *FieldDescriptorProto) String() string { return protoapi.CompactTextString(m) }
 func (*FieldDescriptorProto) ProtoMessage()    {}
 func (*FieldDescriptorProto) Descriptor() ([]byte, []int) {
 	return fileDescriptor_e5baabe45344a177, []int{4}
@@ -998,7 +1026,7 @@
 func (m xxx_OneofDescriptorProto) ProtoMutable() {}
 
 func (m *OneofDescriptorProto) Reset()         { *m = OneofDescriptorProto{} }
-func (m *OneofDescriptorProto) String() string { return "not implemented" }
+func (m *OneofDescriptorProto) String() string { return protoapi.CompactTextString(m) }
 func (*OneofDescriptorProto) ProtoMessage()    {}
 func (*OneofDescriptorProto) Descriptor() ([]byte, []int) {
 	return fileDescriptor_e5baabe45344a177, []int{5}
@@ -1055,7 +1083,7 @@
 func (m xxx_EnumDescriptorProto) ProtoMutable() {}
 
 func (m *EnumDescriptorProto) Reset()         { *m = EnumDescriptorProto{} }
-func (m *EnumDescriptorProto) String() string { return "not implemented" }
+func (m *EnumDescriptorProto) String() string { return protoapi.CompactTextString(m) }
 func (*EnumDescriptorProto) ProtoMessage()    {}
 func (*EnumDescriptorProto) Descriptor() ([]byte, []int) {
 	return fileDescriptor_e5baabe45344a177, []int{6}
@@ -1132,7 +1160,7 @@
 func (m xxx_EnumDescriptorProto_EnumReservedRange) ProtoMutable() {}
 
 func (m *EnumDescriptorProto_EnumReservedRange) Reset()         { *m = EnumDescriptorProto_EnumReservedRange{} }
-func (m *EnumDescriptorProto_EnumReservedRange) String() string { return "not implemented" }
+func (m *EnumDescriptorProto_EnumReservedRange) String() string { return protoapi.CompactTextString(m) }
 func (*EnumDescriptorProto_EnumReservedRange) ProtoMessage()    {}
 func (*EnumDescriptorProto_EnumReservedRange) Descriptor() ([]byte, []int) {
 	return fileDescriptor_e5baabe45344a177, []int{6, 0}
@@ -1182,7 +1210,7 @@
 func (m xxx_EnumValueDescriptorProto) ProtoMutable() {}
 
 func (m *EnumValueDescriptorProto) Reset()         { *m = EnumValueDescriptorProto{} }
-func (m *EnumValueDescriptorProto) String() string { return "not implemented" }
+func (m *EnumValueDescriptorProto) String() string { return protoapi.CompactTextString(m) }
 func (*EnumValueDescriptorProto) ProtoMessage()    {}
 func (*EnumValueDescriptorProto) Descriptor() ([]byte, []int) {
 	return fileDescriptor_e5baabe45344a177, []int{7}
@@ -1239,7 +1267,7 @@
 func (m xxx_ServiceDescriptorProto) ProtoMutable() {}
 
 func (m *ServiceDescriptorProto) Reset()         { *m = ServiceDescriptorProto{} }
-func (m *ServiceDescriptorProto) String() string { return "not implemented" }
+func (m *ServiceDescriptorProto) String() string { return protoapi.CompactTextString(m) }
 func (*ServiceDescriptorProto) ProtoMessage()    {}
 func (*ServiceDescriptorProto) Descriptor() ([]byte, []int) {
 	return fileDescriptor_e5baabe45344a177, []int{8}
@@ -1303,7 +1331,7 @@
 func (m xxx_MethodDescriptorProto) ProtoMutable() {}
 
 func (m *MethodDescriptorProto) Reset()         { *m = MethodDescriptorProto{} }
-func (m *MethodDescriptorProto) String() string { return "not implemented" }
+func (m *MethodDescriptorProto) String() string { return protoapi.CompactTextString(m) }
 func (*MethodDescriptorProto) ProtoMessage()    {}
 func (*MethodDescriptorProto) Descriptor() ([]byte, []int) {
 	return fileDescriptor_e5baabe45344a177, []int{9}
@@ -1438,11 +1466,11 @@
 	RubyPackage *string `protobuf:"bytes,45,opt,name=ruby_package,json=rubyPackage" json:"ruby_package,omitempty"`
 	// The parser stores options it doesn't recognize here.
 	// See the documentation for the "Options" section above.
-	UninterpretedOption          []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
-	XXX_NoUnkeyedLiteral         struct{}               `json:"-"`
-	proto.XXX_InternalExtensions `json:"-"`
-	XXX_unrecognized             []byte `json:"-"`
-	XXX_sizecache                int32  `json:"-"`
+	UninterpretedOption             []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
+	XXX_NoUnkeyedLiteral            struct{}               `json:"-"`
+	protoapi.XXX_InternalExtensions `json:"-"`
+	XXX_unrecognized                []byte `json:"-"`
+	XXX_sizecache                   int32  `json:"-"`
 }
 
 type xxx_FileOptions struct{ m *FileOptions }
@@ -1465,17 +1493,17 @@
 func (m xxx_FileOptions) ProtoMutable() {}
 
 func (m *FileOptions) Reset()         { *m = FileOptions{} }
-func (m *FileOptions) String() string { return "not implemented" }
+func (m *FileOptions) String() string { return protoapi.CompactTextString(m) }
 func (*FileOptions) ProtoMessage()    {}
 func (*FileOptions) Descriptor() ([]byte, []int) {
 	return fileDescriptor_e5baabe45344a177, []int{10}
 }
 
-var extRange_FileOptions = []proto.ExtensionRange{
+var extRange_FileOptions = []protoapi.ExtensionRange{
 	{Start: 1000, End: 536870911},
 }
 
-func (*FileOptions) ExtensionRangeArray() []proto.ExtensionRange {
+func (*FileOptions) ExtensionRangeArray() []protoapi.ExtensionRange {
 	return extRange_FileOptions
 }
 
@@ -1689,11 +1717,11 @@
 	// parser.
 	MapEntry *bool `protobuf:"varint,7,opt,name=map_entry,json=mapEntry" json:"map_entry,omitempty"`
 	// The parser stores options it doesn't recognize here. See above.
-	UninterpretedOption          []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
-	XXX_NoUnkeyedLiteral         struct{}               `json:"-"`
-	proto.XXX_InternalExtensions `json:"-"`
-	XXX_unrecognized             []byte `json:"-"`
-	XXX_sizecache                int32  `json:"-"`
+	UninterpretedOption             []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
+	XXX_NoUnkeyedLiteral            struct{}               `json:"-"`
+	protoapi.XXX_InternalExtensions `json:"-"`
+	XXX_unrecognized                []byte `json:"-"`
+	XXX_sizecache                   int32  `json:"-"`
 }
 
 type xxx_MessageOptions struct{ m *MessageOptions }
@@ -1716,17 +1744,17 @@
 func (m xxx_MessageOptions) ProtoMutable() {}
 
 func (m *MessageOptions) Reset()         { *m = MessageOptions{} }
-func (m *MessageOptions) String() string { return "not implemented" }
+func (m *MessageOptions) String() string { return protoapi.CompactTextString(m) }
 func (*MessageOptions) ProtoMessage()    {}
 func (*MessageOptions) Descriptor() ([]byte, []int) {
 	return fileDescriptor_e5baabe45344a177, []int{11}
 }
 
-var extRange_MessageOptions = []proto.ExtensionRange{
+var extRange_MessageOptions = []protoapi.ExtensionRange{
 	{Start: 1000, End: 536870911},
 }
 
-func (*MessageOptions) ExtensionRangeArray() []proto.ExtensionRange {
+func (*MessageOptions) ExtensionRangeArray() []protoapi.ExtensionRange {
 	return extRange_MessageOptions
 }
 
@@ -1830,11 +1858,11 @@
 	// For Google-internal migration only. Do not use.
 	Weak *bool `protobuf:"varint,10,opt,name=weak,def=0" json:"weak,omitempty"`
 	// The parser stores options it doesn't recognize here. See above.
-	UninterpretedOption          []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
-	XXX_NoUnkeyedLiteral         struct{}               `json:"-"`
-	proto.XXX_InternalExtensions `json:"-"`
-	XXX_unrecognized             []byte `json:"-"`
-	XXX_sizecache                int32  `json:"-"`
+	UninterpretedOption             []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
+	XXX_NoUnkeyedLiteral            struct{}               `json:"-"`
+	protoapi.XXX_InternalExtensions `json:"-"`
+	XXX_unrecognized                []byte `json:"-"`
+	XXX_sizecache                   int32  `json:"-"`
 }
 
 type xxx_FieldOptions struct{ m *FieldOptions }
@@ -1857,17 +1885,17 @@
 func (m xxx_FieldOptions) ProtoMutable() {}
 
 func (m *FieldOptions) Reset()         { *m = FieldOptions{} }
-func (m *FieldOptions) String() string { return "not implemented" }
+func (m *FieldOptions) String() string { return protoapi.CompactTextString(m) }
 func (*FieldOptions) ProtoMessage()    {}
 func (*FieldOptions) Descriptor() ([]byte, []int) {
 	return fileDescriptor_e5baabe45344a177, []int{12}
 }
 
-var extRange_FieldOptions = []proto.ExtensionRange{
+var extRange_FieldOptions = []protoapi.ExtensionRange{
 	{Start: 1000, End: 536870911},
 }
 
-func (*FieldOptions) ExtensionRangeArray() []proto.ExtensionRange {
+func (*FieldOptions) ExtensionRangeArray() []protoapi.ExtensionRange {
 	return extRange_FieldOptions
 }
 
@@ -1928,11 +1956,11 @@
 
 type OneofOptions struct {
 	// The parser stores options it doesn't recognize here. See above.
-	UninterpretedOption          []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
-	XXX_NoUnkeyedLiteral         struct{}               `json:"-"`
-	proto.XXX_InternalExtensions `json:"-"`
-	XXX_unrecognized             []byte `json:"-"`
-	XXX_sizecache                int32  `json:"-"`
+	UninterpretedOption             []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
+	XXX_NoUnkeyedLiteral            struct{}               `json:"-"`
+	protoapi.XXX_InternalExtensions `json:"-"`
+	XXX_unrecognized                []byte `json:"-"`
+	XXX_sizecache                   int32  `json:"-"`
 }
 
 type xxx_OneofOptions struct{ m *OneofOptions }
@@ -1955,17 +1983,17 @@
 func (m xxx_OneofOptions) ProtoMutable() {}
 
 func (m *OneofOptions) Reset()         { *m = OneofOptions{} }
-func (m *OneofOptions) String() string { return "not implemented" }
+func (m *OneofOptions) String() string { return protoapi.CompactTextString(m) }
 func (*OneofOptions) ProtoMessage()    {}
 func (*OneofOptions) Descriptor() ([]byte, []int) {
 	return fileDescriptor_e5baabe45344a177, []int{13}
 }
 
-var extRange_OneofOptions = []proto.ExtensionRange{
+var extRange_OneofOptions = []protoapi.ExtensionRange{
 	{Start: 1000, End: 536870911},
 }
 
-func (*OneofOptions) ExtensionRangeArray() []proto.ExtensionRange {
+func (*OneofOptions) ExtensionRangeArray() []protoapi.ExtensionRange {
 	return extRange_OneofOptions
 }
 
@@ -1986,11 +2014,11 @@
 	// is a formalization for deprecating enums.
 	Deprecated *bool `protobuf:"varint,3,opt,name=deprecated,def=0" json:"deprecated,omitempty"`
 	// The parser stores options it doesn't recognize here. See above.
-	UninterpretedOption          []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
-	XXX_NoUnkeyedLiteral         struct{}               `json:"-"`
-	proto.XXX_InternalExtensions `json:"-"`
-	XXX_unrecognized             []byte `json:"-"`
-	XXX_sizecache                int32  `json:"-"`
+	UninterpretedOption             []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
+	XXX_NoUnkeyedLiteral            struct{}               `json:"-"`
+	protoapi.XXX_InternalExtensions `json:"-"`
+	XXX_unrecognized                []byte `json:"-"`
+	XXX_sizecache                   int32  `json:"-"`
 }
 
 type xxx_EnumOptions struct{ m *EnumOptions }
@@ -2013,17 +2041,17 @@
 func (m xxx_EnumOptions) ProtoMutable() {}
 
 func (m *EnumOptions) Reset()         { *m = EnumOptions{} }
-func (m *EnumOptions) String() string { return "not implemented" }
+func (m *EnumOptions) String() string { return protoapi.CompactTextString(m) }
 func (*EnumOptions) ProtoMessage()    {}
 func (*EnumOptions) Descriptor() ([]byte, []int) {
 	return fileDescriptor_e5baabe45344a177, []int{14}
 }
 
-var extRange_EnumOptions = []proto.ExtensionRange{
+var extRange_EnumOptions = []protoapi.ExtensionRange{
 	{Start: 1000, End: 536870911},
 }
 
-func (*EnumOptions) ExtensionRangeArray() []proto.ExtensionRange {
+func (*EnumOptions) ExtensionRangeArray() []protoapi.ExtensionRange {
 	return extRange_EnumOptions
 }
 
@@ -2057,11 +2085,11 @@
 	// this is a formalization for deprecating enum values.
 	Deprecated *bool `protobuf:"varint,1,opt,name=deprecated,def=0" json:"deprecated,omitempty"`
 	// The parser stores options it doesn't recognize here. See above.
-	UninterpretedOption          []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
-	XXX_NoUnkeyedLiteral         struct{}               `json:"-"`
-	proto.XXX_InternalExtensions `json:"-"`
-	XXX_unrecognized             []byte `json:"-"`
-	XXX_sizecache                int32  `json:"-"`
+	UninterpretedOption             []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
+	XXX_NoUnkeyedLiteral            struct{}               `json:"-"`
+	protoapi.XXX_InternalExtensions `json:"-"`
+	XXX_unrecognized                []byte `json:"-"`
+	XXX_sizecache                   int32  `json:"-"`
 }
 
 type xxx_EnumValueOptions struct{ m *EnumValueOptions }
@@ -2084,17 +2112,17 @@
 func (m xxx_EnumValueOptions) ProtoMutable() {}
 
 func (m *EnumValueOptions) Reset()         { *m = EnumValueOptions{} }
-func (m *EnumValueOptions) String() string { return "not implemented" }
+func (m *EnumValueOptions) String() string { return protoapi.CompactTextString(m) }
 func (*EnumValueOptions) ProtoMessage()    {}
 func (*EnumValueOptions) Descriptor() ([]byte, []int) {
 	return fileDescriptor_e5baabe45344a177, []int{15}
 }
 
-var extRange_EnumValueOptions = []proto.ExtensionRange{
+var extRange_EnumValueOptions = []protoapi.ExtensionRange{
 	{Start: 1000, End: 536870911},
 }
 
-func (*EnumValueOptions) ExtensionRangeArray() []proto.ExtensionRange {
+func (*EnumValueOptions) ExtensionRangeArray() []protoapi.ExtensionRange {
 	return extRange_EnumValueOptions
 }
 
@@ -2121,11 +2149,11 @@
 	// this is a formalization for deprecating services.
 	Deprecated *bool `protobuf:"varint,33,opt,name=deprecated,def=0" json:"deprecated,omitempty"`
 	// The parser stores options it doesn't recognize here. See above.
-	UninterpretedOption          []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
-	XXX_NoUnkeyedLiteral         struct{}               `json:"-"`
-	proto.XXX_InternalExtensions `json:"-"`
-	XXX_unrecognized             []byte `json:"-"`
-	XXX_sizecache                int32  `json:"-"`
+	UninterpretedOption             []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
+	XXX_NoUnkeyedLiteral            struct{}               `json:"-"`
+	protoapi.XXX_InternalExtensions `json:"-"`
+	XXX_unrecognized                []byte `json:"-"`
+	XXX_sizecache                   int32  `json:"-"`
 }
 
 type xxx_ServiceOptions struct{ m *ServiceOptions }
@@ -2148,17 +2176,17 @@
 func (m xxx_ServiceOptions) ProtoMutable() {}
 
 func (m *ServiceOptions) Reset()         { *m = ServiceOptions{} }
-func (m *ServiceOptions) String() string { return "not implemented" }
+func (m *ServiceOptions) String() string { return protoapi.CompactTextString(m) }
 func (*ServiceOptions) ProtoMessage()    {}
 func (*ServiceOptions) Descriptor() ([]byte, []int) {
 	return fileDescriptor_e5baabe45344a177, []int{16}
 }
 
-var extRange_ServiceOptions = []proto.ExtensionRange{
+var extRange_ServiceOptions = []protoapi.ExtensionRange{
 	{Start: 1000, End: 536870911},
 }
 
-func (*ServiceOptions) ExtensionRangeArray() []proto.ExtensionRange {
+func (*ServiceOptions) ExtensionRangeArray() []protoapi.ExtensionRange {
 	return extRange_ServiceOptions
 }
 
@@ -2186,11 +2214,11 @@
 	Deprecated       *bool                           `protobuf:"varint,33,opt,name=deprecated,def=0" json:"deprecated,omitempty"`
 	IdempotencyLevel *MethodOptions_IdempotencyLevel `protobuf:"varint,34,opt,name=idempotency_level,json=idempotencyLevel,enum=google.protobuf.MethodOptions_IdempotencyLevel,def=0" json:"idempotency_level,omitempty"`
 	// The parser stores options it doesn't recognize here. See above.
-	UninterpretedOption          []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
-	XXX_NoUnkeyedLiteral         struct{}               `json:"-"`
-	proto.XXX_InternalExtensions `json:"-"`
-	XXX_unrecognized             []byte `json:"-"`
-	XXX_sizecache                int32  `json:"-"`
+	UninterpretedOption             []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
+	XXX_NoUnkeyedLiteral            struct{}               `json:"-"`
+	protoapi.XXX_InternalExtensions `json:"-"`
+	XXX_unrecognized                []byte `json:"-"`
+	XXX_sizecache                   int32  `json:"-"`
 }
 
 type xxx_MethodOptions struct{ m *MethodOptions }
@@ -2213,17 +2241,17 @@
 func (m xxx_MethodOptions) ProtoMutable() {}
 
 func (m *MethodOptions) Reset()         { *m = MethodOptions{} }
-func (m *MethodOptions) String() string { return "not implemented" }
+func (m *MethodOptions) String() string { return protoapi.CompactTextString(m) }
 func (*MethodOptions) ProtoMessage()    {}
 func (*MethodOptions) Descriptor() ([]byte, []int) {
 	return fileDescriptor_e5baabe45344a177, []int{17}
 }
 
-var extRange_MethodOptions = []proto.ExtensionRange{
+var extRange_MethodOptions = []protoapi.ExtensionRange{
 	{Start: 1000, End: 536870911},
 }
 
-func (*MethodOptions) ExtensionRangeArray() []proto.ExtensionRange {
+func (*MethodOptions) ExtensionRangeArray() []protoapi.ExtensionRange {
 	return extRange_MethodOptions
 }
 
@@ -2292,7 +2320,7 @@
 func (m xxx_UninterpretedOption) ProtoMutable() {}
 
 func (m *UninterpretedOption) Reset()         { *m = UninterpretedOption{} }
-func (m *UninterpretedOption) String() string { return "not implemented" }
+func (m *UninterpretedOption) String() string { return protoapi.CompactTextString(m) }
 func (*UninterpretedOption) ProtoMessage()    {}
 func (*UninterpretedOption) Descriptor() ([]byte, []int) {
 	return fileDescriptor_e5baabe45344a177, []int{18}
@@ -2380,7 +2408,7 @@
 func (m xxx_UninterpretedOption_NamePart) ProtoMutable() {}
 
 func (m *UninterpretedOption_NamePart) Reset()         { *m = UninterpretedOption_NamePart{} }
-func (m *UninterpretedOption_NamePart) String() string { return "not implemented" }
+func (m *UninterpretedOption_NamePart) String() string { return protoapi.CompactTextString(m) }
 func (*UninterpretedOption_NamePart) ProtoMessage()    {}
 func (*UninterpretedOption_NamePart) Descriptor() ([]byte, []int) {
 	return fileDescriptor_e5baabe45344a177, []int{18, 0}
@@ -2472,7 +2500,7 @@
 func (m xxx_SourceCodeInfo) ProtoMutable() {}
 
 func (m *SourceCodeInfo) Reset()         { *m = SourceCodeInfo{} }
-func (m *SourceCodeInfo) String() string { return "not implemented" }
+func (m *SourceCodeInfo) String() string { return protoapi.CompactTextString(m) }
 func (*SourceCodeInfo) ProtoMessage()    {}
 func (*SourceCodeInfo) Descriptor() ([]byte, []int) {
 	return fileDescriptor_e5baabe45344a177, []int{19}
@@ -2591,7 +2619,7 @@
 func (m xxx_SourceCodeInfo_Location) ProtoMutable() {}
 
 func (m *SourceCodeInfo_Location) Reset()         { *m = SourceCodeInfo_Location{} }
-func (m *SourceCodeInfo_Location) String() string { return "not implemented" }
+func (m *SourceCodeInfo_Location) String() string { return protoapi.CompactTextString(m) }
 func (*SourceCodeInfo_Location) ProtoMessage()    {}
 func (*SourceCodeInfo_Location) Descriptor() ([]byte, []int) {
 	return fileDescriptor_e5baabe45344a177, []int{19, 0}
@@ -2664,7 +2692,7 @@
 func (m xxx_GeneratedCodeInfo) ProtoMutable() {}
 
 func (m *GeneratedCodeInfo) Reset()         { *m = GeneratedCodeInfo{} }
-func (m *GeneratedCodeInfo) String() string { return "not implemented" }
+func (m *GeneratedCodeInfo) String() string { return protoapi.CompactTextString(m) }
 func (*GeneratedCodeInfo) ProtoMessage()    {}
 func (*GeneratedCodeInfo) Descriptor() ([]byte, []int) {
 	return fileDescriptor_e5baabe45344a177, []int{20}
@@ -2715,7 +2743,7 @@
 func (m xxx_GeneratedCodeInfo_Annotation) ProtoMutable() {}
 
 func (m *GeneratedCodeInfo_Annotation) Reset()         { *m = GeneratedCodeInfo_Annotation{} }
-func (m *GeneratedCodeInfo_Annotation) String() string { return "not implemented" }
+func (m *GeneratedCodeInfo_Annotation) String() string { return protoapi.CompactTextString(m) }
 func (*GeneratedCodeInfo_Annotation) ProtoMessage()    {}
 func (*GeneratedCodeInfo_Annotation) Descriptor() ([]byte, []int) {
 	return fileDescriptor_e5baabe45344a177, []int{20, 0}
@@ -2749,170 +2777,210 @@
 	return 0
 }
 
+func init() {
+	protoapi.RegisterEnum("google.protobuf.FieldDescriptorProto_Type", FieldDescriptorProto_Type_name, FieldDescriptorProto_Type_value)
+	protoapi.RegisterEnum("google.protobuf.FieldDescriptorProto_Label", FieldDescriptorProto_Label_name, FieldDescriptorProto_Label_value)
+	protoapi.RegisterEnum("google.protobuf.FileOptions_OptimizeMode", FileOptions_OptimizeMode_name, FileOptions_OptimizeMode_value)
+	protoapi.RegisterEnum("google.protobuf.FieldOptions_CType", FieldOptions_CType_name, FieldOptions_CType_value)
+	protoapi.RegisterEnum("google.protobuf.FieldOptions_JSType", FieldOptions_JSType_name, FieldOptions_JSType_value)
+	protoapi.RegisterEnum("google.protobuf.MethodOptions_IdempotencyLevel", MethodOptions_IdempotencyLevel_name, MethodOptions_IdempotencyLevel_value)
+	protoapi.RegisterType((*FileDescriptorSet)(nil), "google.protobuf.FileDescriptorSet")
+	protoapi.RegisterType((*FileDescriptorProto)(nil), "google.protobuf.FileDescriptorProto")
+	protoapi.RegisterType((*DescriptorProto)(nil), "google.protobuf.DescriptorProto")
+	protoapi.RegisterType((*DescriptorProto_ExtensionRange)(nil), "google.protobuf.DescriptorProto.ExtensionRange")
+	protoapi.RegisterType((*DescriptorProto_ReservedRange)(nil), "google.protobuf.DescriptorProto.ReservedRange")
+	protoapi.RegisterType((*ExtensionRangeOptions)(nil), "google.protobuf.ExtensionRangeOptions")
+	protoapi.RegisterType((*FieldDescriptorProto)(nil), "google.protobuf.FieldDescriptorProto")
+	protoapi.RegisterType((*OneofDescriptorProto)(nil), "google.protobuf.OneofDescriptorProto")
+	protoapi.RegisterType((*EnumDescriptorProto)(nil), "google.protobuf.EnumDescriptorProto")
+	protoapi.RegisterType((*EnumDescriptorProto_EnumReservedRange)(nil), "google.protobuf.EnumDescriptorProto.EnumReservedRange")
+	protoapi.RegisterType((*EnumValueDescriptorProto)(nil), "google.protobuf.EnumValueDescriptorProto")
+	protoapi.RegisterType((*ServiceDescriptorProto)(nil), "google.protobuf.ServiceDescriptorProto")
+	protoapi.RegisterType((*MethodDescriptorProto)(nil), "google.protobuf.MethodDescriptorProto")
+	protoapi.RegisterType((*FileOptions)(nil), "google.protobuf.FileOptions")
+	protoapi.RegisterType((*MessageOptions)(nil), "google.protobuf.MessageOptions")
+	protoapi.RegisterType((*FieldOptions)(nil), "google.protobuf.FieldOptions")
+	protoapi.RegisterType((*OneofOptions)(nil), "google.protobuf.OneofOptions")
+	protoapi.RegisterType((*EnumOptions)(nil), "google.protobuf.EnumOptions")
+	protoapi.RegisterType((*EnumValueOptions)(nil), "google.protobuf.EnumValueOptions")
+	protoapi.RegisterType((*ServiceOptions)(nil), "google.protobuf.ServiceOptions")
+	protoapi.RegisterType((*MethodOptions)(nil), "google.protobuf.MethodOptions")
+	protoapi.RegisterType((*UninterpretedOption)(nil), "google.protobuf.UninterpretedOption")
+	protoapi.RegisterType((*UninterpretedOption_NamePart)(nil), "google.protobuf.UninterpretedOption.NamePart")
+	protoapi.RegisterType((*SourceCodeInfo)(nil), "google.protobuf.SourceCodeInfo")
+	protoapi.RegisterType((*SourceCodeInfo_Location)(nil), "google.protobuf.SourceCodeInfo.Location")
+	protoapi.RegisterType((*GeneratedCodeInfo)(nil), "google.protobuf.GeneratedCodeInfo")
+	protoapi.RegisterType((*GeneratedCodeInfo_Annotation)(nil), "google.protobuf.GeneratedCodeInfo.Annotation")
+}
+
+func init() {
+	protoapi.RegisterFile("google/protobuf/descriptor.proto", fileDescriptor_e5baabe45344a177)
+}
+
 var fileDescriptor_e5baabe45344a177 = []byte{
 	// 2589 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x59, 0xdd, 0x8e, 0xdb, 0xc6,
-	0x15, 0x0e, 0xf5, 0xb7, 0xd2, 0x91, 0x56, 0x3b, 0x3b, 0xbb, 0xb1, 0xe9, 0xcd, 0x8f, 0xd7, 0xca,
-	0x8f, 0xd7, 0x4e, 0xac, 0x0d, 0x1c, 0xdb, 0x71, 0xd6, 0x45, 0x5a, 0xad, 0x44, 0x6f, 0xe4, 0xee,
-	0x4a, 0x2a, 0xa5, 0x6d, 0x7e, 0x80, 0x82, 0x98, 0x25, 0x47, 0x12, 0x6d, 0x8a, 0x64, 0x48, 0xca,
-	0xf6, 0x06, 0xbd, 0x30, 0xd0, 0xab, 0x5e, 0x15, 0xe8, 0x55, 0x51, 0x14, 0xbd, 0xe8, 0x4d, 0x80,
-	0x3e, 0x40, 0x81, 0xde, 0xf5, 0x09, 0x0a, 0xe4, 0x0d, 0x8a, 0xb6, 0x40, 0xfb, 0x08, 0xbd, 0x2c,
-	0x66, 0x86, 0xa4, 0x48, 0x49, 0x1b, 0x6f, 0x02, 0xc4, 0xb9, 0x92, 0xe6, 0x3b, 0xdf, 0x39, 0x73,
-	0xe6, 0xcc, 0x99, 0x99, 0x33, 0x43, 0xd8, 0x1e, 0x39, 0xce, 0xc8, 0xa2, 0xbb, 0xae, 0xe7, 0x04,
-	0xce, 0xc9, 0x74, 0xb8, 0x6b, 0x50, 0x5f, 0xf7, 0x4c, 0x37, 0x70, 0xbc, 0x3a, 0xc7, 0xf0, 0x9a,
-	0x60, 0xd4, 0x23, 0x46, 0xed, 0x08, 0xd6, 0xef, 0x9b, 0x16, 0x6d, 0xc5, 0xc4, 0x3e, 0x0d, 0xf0,
-	0x5d, 0xc8, 0x0d, 0x4d, 0x8b, 0xca, 0xd2, 0x76, 0x76, 0xa7, 0x7c, 0xf3, 0xcd, 0xfa, 0x9c, 0x52,
-	0x3d, 0xad, 0xd1, 0x63, 0xb0, 0xca, 0x35, 0x6a, 0xff, 0xce, 0xc1, 0xc6, 0x12, 0x29, 0xc6, 0x90,
-	0xb3, 0xc9, 0x84, 0x59, 0x94, 0x76, 0x4a, 0x2a, 0xff, 0x8f, 0x65, 0x58, 0x71, 0x89, 0xfe, 0x88,
-	0x8c, 0xa8, 0x9c, 0xe1, 0x70, 0xd4, 0xc4, 0xaf, 0x03, 0x18, 0xd4, 0xa5, 0xb6, 0x41, 0x6d, 0xfd,
-	0x54, 0xce, 0x6e, 0x67, 0x77, 0x4a, 0x6a, 0x02, 0xc1, 0xef, 0xc0, 0xba, 0x3b, 0x3d, 0xb1, 0x4c,
-	0x5d, 0x4b, 0xd0, 0x60, 0x3b, 0xbb, 0x93, 0x57, 0x91, 0x10, 0xb4, 0x66, 0xe4, 0xab, 0xb0, 0xf6,
-	0x84, 0x92, 0x47, 0x49, 0x6a, 0x99, 0x53, 0xab, 0x0c, 0x4e, 0x10, 0x9b, 0x50, 0x99, 0x50, 0xdf,
-	0x27, 0x23, 0xaa, 0x05, 0xa7, 0x2e, 0x95, 0x73, 0x7c, 0xf4, 0xdb, 0x0b, 0xa3, 0x9f, 0x1f, 0x79,
-	0x39, 0xd4, 0x1a, 0x9c, 0xba, 0x14, 0x37, 0xa0, 0x44, 0xed, 0xe9, 0x44, 0x58, 0xc8, 0x9f, 0x11,
-	0x3f, 0xc5, 0x9e, 0x4e, 0xe6, 0xad, 0x14, 0x99, 0x5a, 0x68, 0x62, 0xc5, 0xa7, 0xde, 0x63, 0x53,
-	0xa7, 0x72, 0x81, 0x1b, 0xb8, 0xba, 0x60, 0xa0, 0x2f, 0xe4, 0xf3, 0x36, 0x22, 0x3d, 0xdc, 0x84,
-	0x12, 0x7d, 0x1a, 0x50, 0xdb, 0x37, 0x1d, 0x5b, 0x5e, 0xe1, 0x46, 0xde, 0x5a, 0x32, 0x8b, 0xd4,
-	0x32, 0xe6, 0x4d, 0xcc, 0xf4, 0xf0, 0x1d, 0x58, 0x71, 0xdc, 0xc0, 0x74, 0x6c, 0x5f, 0x2e, 0x6e,
-	0x4b, 0x3b, 0xe5, 0x9b, 0xaf, 0x2e, 0x4d, 0x84, 0xae, 0xe0, 0xa8, 0x11, 0x19, 0xb7, 0x01, 0xf9,
-	0xce, 0xd4, 0xd3, 0xa9, 0xa6, 0x3b, 0x06, 0xd5, 0x4c, 0x7b, 0xe8, 0xc8, 0x25, 0x6e, 0xe0, 0xf2,
-	0xe2, 0x40, 0x38, 0xb1, 0xe9, 0x18, 0xb4, 0x6d, 0x0f, 0x1d, 0xb5, 0xea, 0xa7, 0xda, 0xf8, 0x02,
-	0x14, 0xfc, 0x53, 0x3b, 0x20, 0x4f, 0xe5, 0x0a, 0xcf, 0x90, 0xb0, 0x55, 0xfb, 0x6b, 0x01, 0xd6,
-	0xce, 0x93, 0x62, 0xf7, 0x20, 0x3f, 0x64, 0xa3, 0x94, 0x33, 0xdf, 0x26, 0x06, 0x42, 0x27, 0x1d,
-	0xc4, 0xc2, 0x77, 0x0c, 0x62, 0x03, 0xca, 0x36, 0xf5, 0x03, 0x6a, 0x88, 0x8c, 0xc8, 0x9e, 0x33,
-	0xa7, 0x40, 0x28, 0x2d, 0xa6, 0x54, 0xee, 0x3b, 0xa5, 0xd4, 0xa7, 0xb0, 0x16, 0xbb, 0xa4, 0x79,
-	0xc4, 0x1e, 0x45, 0xb9, 0xb9, 0xfb, 0x3c, 0x4f, 0xea, 0x4a, 0xa4, 0xa7, 0x32, 0x35, 0xb5, 0x4a,
-	0x53, 0x6d, 0xdc, 0x02, 0x70, 0x6c, 0xea, 0x0c, 0x35, 0x83, 0xea, 0x96, 0x5c, 0x3c, 0x23, 0x4a,
-	0x5d, 0x46, 0x59, 0x88, 0x92, 0x23, 0x50, 0xdd, 0xc2, 0x1f, 0xce, 0x52, 0x6d, 0xe5, 0x8c, 0x4c,
-	0x39, 0x12, 0x8b, 0x6c, 0x21, 0xdb, 0x8e, 0xa1, 0xea, 0x51, 0x96, 0xf7, 0xd4, 0x08, 0x47, 0x56,
-	0xe2, 0x4e, 0xd4, 0x9f, 0x3b, 0x32, 0x35, 0x54, 0x13, 0x03, 0x5b, 0xf5, 0x92, 0x4d, 0xfc, 0x06,
-	0xc4, 0x80, 0xc6, 0xd3, 0x0a, 0xf8, 0x2e, 0x54, 0x89, 0xc0, 0x0e, 0x99, 0xd0, 0xad, 0x2f, 0xa1,
-	0x9a, 0x0e, 0x0f, 0xde, 0x84, 0xbc, 0x1f, 0x10, 0x2f, 0xe0, 0x59, 0x98, 0x57, 0x45, 0x03, 0x23,
-	0xc8, 0x52, 0xdb, 0xe0, 0xbb, 0x5c, 0x5e, 0x65, 0x7f, 0xf1, 0x4f, 0x66, 0x03, 0xce, 0xf2, 0x01,
-	0xbf, 0xbd, 0x38, 0xa3, 0x29, 0xcb, 0xf3, 0xe3, 0xde, 0xfa, 0x00, 0x56, 0x53, 0x03, 0x38, 0x6f,
-	0xd7, 0xb5, 0x5f, 0xc2, 0xcb, 0x4b, 0x4d, 0xe3, 0x4f, 0x61, 0x73, 0x6a, 0x9b, 0x76, 0x40, 0x3d,
-	0xd7, 0xa3, 0x2c, 0x63, 0x45, 0x57, 0xf2, 0x7f, 0x56, 0xce, 0xc8, 0xb9, 0xe3, 0x24, 0x5b, 0x58,
-	0x51, 0x37, 0xa6, 0x8b, 0xe0, 0xf5, 0x52, 0xf1, 0xbf, 0x2b, 0xe8, 0xd9, 0xb3, 0x67, 0xcf, 0x32,
-	0xb5, 0xdf, 0x15, 0x60, 0x73, 0xd9, 0x9a, 0x59, 0xba, 0x7c, 0x2f, 0x40, 0xc1, 0x9e, 0x4e, 0x4e,
-	0xa8, 0xc7, 0x83, 0x94, 0x57, 0xc3, 0x16, 0x6e, 0x40, 0xde, 0x22, 0x27, 0xd4, 0x92, 0x73, 0xdb,
-	0xd2, 0x4e, 0xf5, 0xe6, 0x3b, 0xe7, 0x5a, 0x95, 0xf5, 0x43, 0xa6, 0xa2, 0x0a, 0x4d, 0xfc, 0x11,
-	0xe4, 0xc2, 0x2d, 0x9a, 0x59, 0xb8, 0x7e, 0x3e, 0x0b, 0x6c, 0x2d, 0xa9, 0x5c, 0x0f, 0xbf, 0x02,
-	0x25, 0xf6, 0x2b, 0x72, 0xa3, 0xc0, 0x7d, 0x2e, 0x32, 0x80, 0xe5, 0x05, 0xde, 0x82, 0x22, 0x5f,
-	0x26, 0x06, 0x8d, 0x8e, 0xb6, 0xb8, 0xcd, 0x12, 0xcb, 0xa0, 0x43, 0x32, 0xb5, 0x02, 0xed, 0x31,
-	0xb1, 0xa6, 0x94, 0x27, 0x7c, 0x49, 0xad, 0x84, 0xe0, 0xcf, 0x19, 0x86, 0x2f, 0x43, 0x59, 0xac,
-	0x2a, 0xd3, 0x36, 0xe8, 0x53, 0xbe, 0x7b, 0xe6, 0x55, 0xb1, 0xd0, 0xda, 0x0c, 0x61, 0xdd, 0x3f,
-	0xf4, 0x1d, 0x3b, 0x4a, 0x4d, 0xde, 0x05, 0x03, 0x78, 0xf7, 0x1f, 0xcc, 0x6f, 0xdc, 0xaf, 0x2d,
-	0x1f, 0xde, 0x7c, 0x4e, 0xd5, 0xfe, 0x92, 0x81, 0x1c, 0xdf, 0x2f, 0xd6, 0xa0, 0x3c, 0xf8, 0xac,
-	0xa7, 0x68, 0xad, 0xee, 0xf1, 0xfe, 0xa1, 0x82, 0x24, 0x5c, 0x05, 0xe0, 0xc0, 0xfd, 0xc3, 0x6e,
-	0x63, 0x80, 0x32, 0x71, 0xbb, 0xdd, 0x19, 0xdc, 0xb9, 0x85, 0xb2, 0xb1, 0xc2, 0xb1, 0x00, 0x72,
-	0x49, 0xc2, 0xfb, 0x37, 0x51, 0x1e, 0x23, 0xa8, 0x08, 0x03, 0xed, 0x4f, 0x95, 0xd6, 0x9d, 0x5b,
-	0xa8, 0x90, 0x46, 0xde, 0xbf, 0x89, 0x56, 0xf0, 0x2a, 0x94, 0x38, 0xb2, 0xdf, 0xed, 0x1e, 0xa2,
-	0x62, 0x6c, 0xb3, 0x3f, 0x50, 0xdb, 0x9d, 0x03, 0x54, 0x8a, 0x6d, 0x1e, 0xa8, 0xdd, 0xe3, 0x1e,
-	0x82, 0xd8, 0xc2, 0x91, 0xd2, 0xef, 0x37, 0x0e, 0x14, 0x54, 0x8e, 0x19, 0xfb, 0x9f, 0x0d, 0x94,
-	0x3e, 0xaa, 0xa4, 0xdc, 0x7a, 0xff, 0x26, 0x5a, 0x8d, 0xbb, 0x50, 0x3a, 0xc7, 0x47, 0xa8, 0x8a,
-	0xd7, 0x61, 0x55, 0x74, 0x11, 0x39, 0xb1, 0x36, 0x07, 0xdd, 0xb9, 0x85, 0xd0, 0xcc, 0x11, 0x61,
-	0x65, 0x3d, 0x05, 0xdc, 0xb9, 0x85, 0x70, 0xad, 0x09, 0x79, 0x9e, 0x5d, 0x18, 0x43, 0xf5, 0xb0,
-	0xb1, 0xaf, 0x1c, 0x6a, 0xdd, 0xde, 0xa0, 0xdd, 0xed, 0x34, 0x0e, 0x91, 0x34, 0xc3, 0x54, 0xe5,
-	0x67, 0xc7, 0x6d, 0x55, 0x69, 0xa1, 0x4c, 0x12, 0xeb, 0x29, 0x8d, 0x81, 0xd2, 0x42, 0xd9, 0x9a,
-	0x0e, 0x9b, 0xcb, 0xf6, 0xc9, 0xa5, 0x2b, 0x23, 0x31, 0xc5, 0x99, 0x33, 0xa6, 0x98, 0xdb, 0x5a,
-	0x98, 0xe2, 0x7f, 0x65, 0x60, 0x63, 0xc9, 0x59, 0xb1, 0xb4, 0x93, 0x1f, 0x43, 0x5e, 0xa4, 0xa8,
-	0x38, 0x3d, 0xaf, 0x2d, 0x3d, 0x74, 0x78, 0xc2, 0x2e, 0x9c, 0xa0, 0x5c, 0x2f, 0x59, 0x41, 0x64,
-	0xcf, 0xa8, 0x20, 0x98, 0x89, 0x85, 0x3d, 0xfd, 0x17, 0x0b, 0x7b, 0xba, 0x38, 0xf6, 0xee, 0x9c,
-	0xe7, 0xd8, 0xe3, 0xd8, 0xb7, 0xdb, 0xdb, 0xf3, 0x4b, 0xf6, 0xf6, 0x7b, 0xb0, 0xbe, 0x60, 0xe8,
-	0xdc, 0x7b, 0xec, 0xaf, 0x24, 0x90, 0xcf, 0x0a, 0xce, 0x73, 0x76, 0xba, 0x4c, 0x6a, 0xa7, 0xbb,
-	0x37, 0x1f, 0xc1, 0x2b, 0x67, 0x4f, 0xc2, 0xc2, 0x5c, 0x7f, 0x25, 0xc1, 0x85, 0xe5, 0x95, 0xe2,
-	0x52, 0x1f, 0x3e, 0x82, 0xc2, 0x84, 0x06, 0x63, 0x27, 0xaa, 0x96, 0xde, 0x5e, 0x72, 0x06, 0x33,
-	0xf1, 0xfc, 0x64, 0x87, 0x5a, 0xc9, 0x43, 0x3c, 0x7b, 0x56, 0xb9, 0x27, 0xbc, 0x59, 0xf0, 0xf4,
-	0xd7, 0x19, 0x78, 0x79, 0xa9, 0xf1, 0xa5, 0x8e, 0xbe, 0x06, 0x60, 0xda, 0xee, 0x34, 0x10, 0x15,
-	0x91, 0xd8, 0x60, 0x4b, 0x1c, 0xe1, 0x9b, 0x17, 0xdb, 0x3c, 0xa7, 0x41, 0x2c, 0xcf, 0x72, 0x39,
-	0x08, 0x88, 0x13, 0xee, 0xce, 0x1c, 0xcd, 0x71, 0x47, 0x5f, 0x3f, 0x63, 0xa4, 0x0b, 0x89, 0xf9,
-	0x1e, 0x20, 0xdd, 0x32, 0xa9, 0x1d, 0x68, 0x7e, 0xe0, 0x51, 0x32, 0x31, 0xed, 0x11, 0x3f, 0x41,
-	0x8a, 0x7b, 0xf9, 0x21, 0xb1, 0x7c, 0xaa, 0xae, 0x09, 0x71, 0x3f, 0x92, 0x32, 0x0d, 0x9e, 0x40,
-	0x5e, 0x42, 0xa3, 0x90, 0xd2, 0x10, 0xe2, 0x58, 0xa3, 0xf6, 0xdb, 0x12, 0x94, 0x13, 0x75, 0x35,
-	0xbe, 0x02, 0x95, 0x87, 0xe4, 0x31, 0xd1, 0xa2, 0xbb, 0x92, 0x88, 0x44, 0x99, 0x61, 0xbd, 0xf0,
-	0xbe, 0xf4, 0x1e, 0x6c, 0x72, 0x8a, 0x33, 0x0d, 0xa8, 0xa7, 0xe9, 0x16, 0xf1, 0x7d, 0x1e, 0xb4,
-	0x22, 0xa7, 0x62, 0x26, 0xeb, 0x32, 0x51, 0x33, 0x92, 0xe0, 0xdb, 0xb0, 0xc1, 0x35, 0x26, 0x53,
-	0x2b, 0x30, 0x5d, 0x8b, 0x6a, 0xec, 0xf6, 0xe6, 0xf3, 0x93, 0x24, 0xf6, 0x6c, 0x9d, 0x31, 0x8e,
-	0x42, 0x02, 0xf3, 0xc8, 0xc7, 0x2d, 0x78, 0x8d, 0xab, 0x8d, 0xa8, 0x4d, 0x3d, 0x12, 0x50, 0x8d,
-	0x7e, 0x31, 0x25, 0x96, 0xaf, 0x11, 0xdb, 0xd0, 0xc6, 0xc4, 0x1f, 0xcb, 0x9b, 0xcc, 0xc0, 0x7e,
-	0x46, 0x96, 0xd4, 0x4b, 0x8c, 0x78, 0x10, 0xf2, 0x14, 0x4e, 0x6b, 0xd8, 0xc6, 0xc7, 0xc4, 0x1f,
-	0xe3, 0x3d, 0xb8, 0xc0, 0xad, 0xf8, 0x81, 0x67, 0xda, 0x23, 0x4d, 0x1f, 0x53, 0xfd, 0x91, 0x36,
-	0x0d, 0x86, 0x77, 0xe5, 0x57, 0x92, 0xfd, 0x73, 0x0f, 0xfb, 0x9c, 0xd3, 0x64, 0x94, 0xe3, 0x60,
-	0x78, 0x17, 0xf7, 0xa1, 0xc2, 0x26, 0x63, 0x62, 0x7e, 0x49, 0xb5, 0xa1, 0xe3, 0xf1, 0xa3, 0xb1,
-	0xba, 0x64, 0x6b, 0x4a, 0x44, 0xb0, 0xde, 0x0d, 0x15, 0x8e, 0x1c, 0x83, 0xee, 0xe5, 0xfb, 0x3d,
-	0x45, 0x69, 0xa9, 0xe5, 0xc8, 0xca, 0x7d, 0xc7, 0x63, 0x09, 0x35, 0x72, 0xe2, 0x00, 0x97, 0x45,
-	0x42, 0x8d, 0x9c, 0x28, 0xbc, 0xb7, 0x61, 0x43, 0xd7, 0xc5, 0x98, 0x4d, 0x5d, 0x0b, 0xef, 0x58,
-	0xbe, 0x8c, 0x52, 0xc1, 0xd2, 0xf5, 0x03, 0x41, 0x08, 0x73, 0xdc, 0xc7, 0x1f, 0xc2, 0xcb, 0xb3,
-	0x60, 0x25, 0x15, 0xd7, 0x17, 0x46, 0x39, 0xaf, 0x7a, 0x1b, 0x36, 0xdc, 0xd3, 0x45, 0x45, 0x9c,
-	0xea, 0xd1, 0x3d, 0x9d, 0x57, 0xfb, 0x00, 0x36, 0xdd, 0xb1, 0xbb, 0xa8, 0x77, 0x3d, 0xa9, 0x87,
-	0xdd, 0xb1, 0x3b, 0xaf, 0xf8, 0x16, 0xbf, 0x70, 0x7b, 0x54, 0x27, 0x01, 0x35, 0xe4, 0x8b, 0x49,
-	0x7a, 0x42, 0x80, 0x77, 0x01, 0xe9, 0xba, 0x46, 0x6d, 0x72, 0x62, 0x51, 0x8d, 0x78, 0xd4, 0x26,
-	0xbe, 0x7c, 0x39, 0x49, 0xae, 0xea, 0xba, 0xc2, 0xa5, 0x0d, 0x2e, 0xc4, 0xd7, 0x61, 0xdd, 0x39,
-	0x79, 0xa8, 0x8b, 0x94, 0xd4, 0x5c, 0x8f, 0x0e, 0xcd, 0xa7, 0xf2, 0x9b, 0x3c, 0xbe, 0x6b, 0x4c,
-	0xc0, 0x13, 0xb2, 0xc7, 0x61, 0x7c, 0x0d, 0x90, 0xee, 0x8f, 0x89, 0xe7, 0xf2, 0x3d, 0xd9, 0x77,
-	0x89, 0x4e, 0xe5, 0xb7, 0x04, 0x55, 0xe0, 0x9d, 0x08, 0x66, 0x4b, 0xc2, 0x7f, 0x62, 0x0e, 0x83,
-	0xc8, 0xe2, 0x55, 0xb1, 0x24, 0x38, 0x16, 0x5a, 0xdb, 0x01, 0xc4, 0x42, 0x91, 0xea, 0x78, 0x87,
-	0xd3, 0xaa, 0xee, 0xd8, 0x4d, 0xf6, 0xfb, 0x06, 0xac, 0x32, 0xe6, 0xac, 0xd3, 0x6b, 0xa2, 0x20,
-	0x73, 0xc7, 0x89, 0x1e, 0x6f, 0xc1, 0x05, 0x46, 0x9a, 0xd0, 0x80, 0x18, 0x24, 0x20, 0x09, 0xf6,
-	0xbb, 0x9c, 0xcd, 0xe2, 0x7e, 0x14, 0x0a, 0x53, 0x7e, 0x7a, 0xd3, 0x93, 0xd3, 0x38, 0xb3, 0x6e,
-	0x08, 0x3f, 0x19, 0x16, 0xe5, 0xd6, 0xf7, 0x56, 0x74, 0xd7, 0xf6, 0xa0, 0x92, 0x4c, 0x7c, 0x5c,
-	0x02, 0x91, 0xfa, 0x48, 0x62, 0x55, 0x50, 0xb3, 0xdb, 0x62, 0xf5, 0xcb, 0xe7, 0x0a, 0xca, 0xb0,
-	0x3a, 0xea, 0xb0, 0x3d, 0x50, 0x34, 0xf5, 0xb8, 0x33, 0x68, 0x1f, 0x29, 0x28, 0x9b, 0x28, 0xd8,
-	0x1f, 0xe4, 0x8a, 0x6f, 0xa3, 0xab, 0xb5, 0xaf, 0x33, 0x50, 0x4d, 0xdf, 0xc0, 0xf0, 0x8f, 0xe0,
-	0x62, 0xf4, 0x5c, 0xe2, 0xd3, 0x40, 0x7b, 0x62, 0x7a, 0x7c, 0x45, 0x4e, 0x88, 0x38, 0x1d, 0xe3,
-	0x9c, 0xd8, 0x0c, 0x59, 0x7d, 0x1a, 0x7c, 0x62, 0x7a, 0x6c, 0xbd, 0x4d, 0x48, 0x80, 0x0f, 0xe1,
-	0xb2, 0xed, 0x68, 0x7e, 0x40, 0x6c, 0x83, 0x78, 0x86, 0x36, 0x7b, 0xa8, 0xd2, 0x88, 0xae, 0x53,
-	0xdf, 0x77, 0xc4, 0x49, 0x18, 0x5b, 0x79, 0xd5, 0x76, 0xfa, 0x21, 0x79, 0x76, 0x44, 0x34, 0x42,
-	0xea, 0x5c, 0xfe, 0x66, 0xcf, 0xca, 0xdf, 0x57, 0xa0, 0x34, 0x21, 0xae, 0x46, 0xed, 0xc0, 0x3b,
-	0xe5, 0x75, 0x77, 0x51, 0x2d, 0x4e, 0x88, 0xab, 0xb0, 0xf6, 0x0b, 0xb9, 0xfe, 0x3c, 0xc8, 0x15,
-	0x8b, 0xa8, 0xf4, 0x20, 0x57, 0x2c, 0x21, 0xa8, 0xfd, 0x33, 0x0b, 0x95, 0x64, 0x1d, 0xce, 0xae,
-	0x35, 0x3a, 0x3f, 0xb2, 0x24, 0xbe, 0xa9, 0xbd, 0xf1, 0x8d, 0x55, 0x7b, 0xbd, 0xc9, 0xce, 0xb2,
-	0xbd, 0x82, 0xa8, 0x8e, 0x55, 0xa1, 0xc9, 0xea, 0x08, 0x96, 0x6c, 0x54, 0x54, 0x23, 0x45, 0x35,
-	0x6c, 0xe1, 0x03, 0x28, 0x3c, 0xf4, 0xb9, 0xed, 0x02, 0xb7, 0xfd, 0xe6, 0x37, 0xdb, 0x7e, 0xd0,
-	0xe7, 0xc6, 0x4b, 0x0f, 0xfa, 0x5a, 0xa7, 0xab, 0x1e, 0x35, 0x0e, 0xd5, 0x50, 0x1d, 0x5f, 0x82,
-	0x9c, 0x45, 0xbe, 0x3c, 0x4d, 0x9f, 0x7a, 0x1c, 0x3a, 0xef, 0x24, 0x5c, 0x82, 0xdc, 0x13, 0x4a,
-	0x1e, 0xa5, 0xcf, 0x1a, 0x0e, 0x7d, 0x8f, 0x8b, 0x61, 0x17, 0xf2, 0x3c, 0x5e, 0x18, 0x20, 0x8c,
-	0x18, 0x7a, 0x09, 0x17, 0x21, 0xd7, 0xec, 0xaa, 0x6c, 0x41, 0x20, 0xa8, 0x08, 0x54, 0xeb, 0xb5,
-	0x95, 0xa6, 0x82, 0x32, 0xb5, 0xdb, 0x50, 0x10, 0x41, 0x60, 0x8b, 0x25, 0x0e, 0x03, 0x7a, 0x29,
-	0x6c, 0x86, 0x36, 0xa4, 0x48, 0x7a, 0x7c, 0xb4, 0xaf, 0xa8, 0x28, 0x93, 0x9e, 0xea, 0x1c, 0xca,
-	0xd7, 0x7c, 0xa8, 0x24, 0x0b, 0xf1, 0x17, 0x73, 0xc9, 0xfe, 0x9b, 0x04, 0xe5, 0x44, 0x61, 0xcd,
-	0x2a, 0x22, 0x62, 0x59, 0xce, 0x13, 0x8d, 0x58, 0x26, 0xf1, 0xc3, 0xd4, 0x00, 0x0e, 0x35, 0x18,
-	0x72, 0xde, 0xa9, 0x7b, 0x41, 0x4b, 0x24, 0x8f, 0x0a, 0xb5, 0x3f, 0x4a, 0x80, 0xe6, 0x2b, 0xdb,
-	0x39, 0x37, 0xa5, 0x1f, 0xd2, 0xcd, 0xda, 0x1f, 0x24, 0xa8, 0xa6, 0xcb, 0xd9, 0x39, 0xf7, 0xae,
-	0xfc, 0xa0, 0xee, 0xfd, 0x23, 0x03, 0xab, 0xa9, 0x22, 0xf6, 0xbc, 0xde, 0x7d, 0x01, 0xeb, 0xa6,
-	0x41, 0x27, 0xae, 0x13, 0x50, 0x5b, 0x3f, 0xd5, 0x2c, 0xfa, 0x98, 0x5a, 0x72, 0x8d, 0x6f, 0x1a,
-	0xbb, 0xdf, 0x5c, 0x26, 0xd7, 0xdb, 0x33, 0xbd, 0x43, 0xa6, 0xb6, 0xb7, 0xd1, 0x6e, 0x29, 0x47,
-	0xbd, 0xee, 0x40, 0xe9, 0x34, 0x3f, 0xd3, 0x8e, 0x3b, 0x3f, 0xed, 0x74, 0x3f, 0xe9, 0xa8, 0xc8,
-	0x9c, 0xa3, 0x7d, 0x8f, 0xcb, 0xbe, 0x07, 0x68, 0xde, 0x29, 0x7c, 0x11, 0x96, 0xb9, 0x85, 0x5e,
-	0xc2, 0x1b, 0xb0, 0xd6, 0xe9, 0x6a, 0xfd, 0x76, 0x4b, 0xd1, 0x94, 0xfb, 0xf7, 0x95, 0xe6, 0xa0,
-	0x2f, 0x1e, 0x3e, 0x62, 0xf6, 0x20, 0xb5, 0xc0, 0x6b, 0xbf, 0xcf, 0xc2, 0xc6, 0x12, 0x4f, 0x70,
-	0x23, 0xbc, 0xb2, 0x88, 0x5b, 0xd4, 0x8d, 0xf3, 0x78, 0x5f, 0x67, 0x35, 0x43, 0x8f, 0x78, 0x41,
-	0x78, 0xc3, 0xb9, 0x06, 0x2c, 0x4a, 0x76, 0x60, 0x0e, 0x4d, 0xea, 0x85, 0xef, 0x44, 0xe2, 0x1e,
-	0xb3, 0x36, 0xc3, 0xc5, 0x53, 0xd1, 0xbb, 0x80, 0x5d, 0xc7, 0x37, 0x03, 0xf3, 0x31, 0xd5, 0x4c,
-	0x3b, 0x7a, 0x54, 0x62, 0xf7, 0x9a, 0x9c, 0x8a, 0x22, 0x49, 0xdb, 0x0e, 0x62, 0xb6, 0x4d, 0x47,
-	0x64, 0x8e, 0xcd, 0x36, 0xf3, 0xac, 0x8a, 0x22, 0x49, 0xcc, 0xbe, 0x02, 0x15, 0xc3, 0x99, 0xb2,
-	0x62, 0x4f, 0xf0, 0xd8, 0xd9, 0x21, 0xa9, 0x65, 0x81, 0xc5, 0x94, 0xb0, 0x8c, 0x9f, 0xbd, 0x66,
-	0x55, 0xd4, 0xb2, 0xc0, 0x04, 0xe5, 0x2a, 0xac, 0x91, 0xd1, 0xc8, 0x63, 0xc6, 0x23, 0x43, 0xe2,
-	0x62, 0x52, 0x8d, 0x61, 0x4e, 0xdc, 0x7a, 0x00, 0xc5, 0x28, 0x0e, 0xec, 0xa8, 0x66, 0x91, 0xd0,
-	0x5c, 0x71, 0xdb, 0xce, 0xec, 0x94, 0xd4, 0xa2, 0x1d, 0x09, 0xaf, 0x40, 0xc5, 0xf4, 0xb5, 0xd9,
-	0xe3, 0x7c, 0x66, 0x3b, 0xb3, 0x53, 0x54, 0xcb, 0xa6, 0x1f, 0x3f, 0x6c, 0xd6, 0xbe, 0xca, 0x40,
-	0x35, 0xfd, 0x71, 0x01, 0xb7, 0xa0, 0x68, 0x39, 0x3a, 0xe1, 0xa9, 0x25, 0xbe, 0x6c, 0xed, 0x3c,
-	0xe7, 0x7b, 0x44, 0xfd, 0x30, 0xe4, 0xab, 0xb1, 0xe6, 0xd6, 0xdf, 0x25, 0x28, 0x46, 0x30, 0xbe,
-	0x00, 0x39, 0x97, 0x04, 0x63, 0x6e, 0x2e, 0xbf, 0x9f, 0x41, 0x92, 0xca, 0xdb, 0x0c, 0xf7, 0x5d,
-	0x62, 0xf3, 0x14, 0x08, 0x71, 0xd6, 0x66, 0xf3, 0x6a, 0x51, 0x62, 0xf0, 0x5b, 0x8f, 0x33, 0x99,
-	0x50, 0x3b, 0xf0, 0xa3, 0x79, 0x0d, 0xf1, 0x66, 0x08, 0xe3, 0x77, 0x60, 0x3d, 0xf0, 0x88, 0x69,
-	0xa5, 0xb8, 0x39, 0xce, 0x45, 0x91, 0x20, 0x26, 0xef, 0xc1, 0xa5, 0xc8, 0xae, 0x41, 0x03, 0xa2,
-	0x8f, 0xa9, 0x31, 0x53, 0x2a, 0xf0, 0xd7, 0x8d, 0x8b, 0x21, 0xa1, 0x15, 0xca, 0x23, 0xdd, 0xda,
-	0xd7, 0x12, 0xac, 0x47, 0xf7, 0x34, 0x23, 0x0e, 0xd6, 0x11, 0x00, 0xb1, 0x6d, 0x27, 0x48, 0x86,
-	0x6b, 0x31, 0x95, 0x17, 0xf4, 0xea, 0x8d, 0x58, 0x49, 0x4d, 0x18, 0xd8, 0x9a, 0x00, 0xcc, 0x24,
-	0x67, 0x86, 0xed, 0x32, 0x94, 0xc3, 0x2f, 0x47, 0xfc, 0xf3, 0xa3, 0xb8, 0xd9, 0x83, 0x80, 0xd8,
-	0x85, 0x0e, 0x6f, 0x42, 0xfe, 0x84, 0x8e, 0x4c, 0x3b, 0x7c, 0x0f, 0x16, 0x8d, 0xe8, 0xfd, 0x25,
-	0x17, 0xbf, 0xbf, 0xec, 0xff, 0x46, 0x82, 0x0d, 0xdd, 0x99, 0xcc, 0xfb, 0xbb, 0x8f, 0xe6, 0x9e,
-	0x17, 0xfc, 0x8f, 0xa5, 0xcf, 0x3f, 0x1a, 0x99, 0xc1, 0x78, 0x7a, 0x52, 0xd7, 0x9d, 0xc9, 0xee,
-	0xc8, 0xb1, 0x88, 0x3d, 0x9a, 0x7d, 0x3f, 0xe5, 0x7f, 0xf4, 0x1b, 0x23, 0x6a, 0xdf, 0x18, 0x39,
-	0x89, 0xaf, 0xa9, 0xf7, 0x66, 0x7f, 0xff, 0x27, 0x49, 0x7f, 0xca, 0x64, 0x0f, 0x7a, 0xfb, 0x7f,
-	0xce, 0x6c, 0x1d, 0x88, 0xee, 0x7a, 0x51, 0x78, 0x54, 0x3a, 0xb4, 0xa8, 0xce, 0x86, 0xfc, 0xff,
-	0x00, 0x00, 0x00, 0xff, 0xff, 0x3e, 0xe8, 0xef, 0xc4, 0x9b, 0x1d, 0x00, 0x00,
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x59, 0xdd, 0x6e, 0x1b, 0xc7,
+	0xf5, 0xcf, 0xf2, 0x4b, 0xe4, 0x21, 0x45, 0x8d, 0x46, 0x8a, 0xbd, 0x56, 0x3e, 0x2c, 0x33, 0x1f,
+	0x96, 0x9d, 0x84, 0x0a, 0x14, 0xdb, 0x71, 0xe4, 0x3f, 0x92, 0x3f, 0x45, 0xae, 0x15, 0xba, 0x12,
+	0xc9, 0x2e, 0xa9, 0xe6, 0x03, 0x28, 0x16, 0xa3, 0xdd, 0x21, 0xb9, 0xf6, 0x72, 0x77, 0xb3, 0xbb,
+	0xb4, 0xad, 0xa0, 0x17, 0x06, 0x7a, 0xd5, 0xbb, 0xa2, 0x57, 0x45, 0x51, 0xf4, 0xa2, 0x37, 0x01,
+	0xfa, 0x00, 0x05, 0x7a, 0xd7, 0x27, 0x28, 0x90, 0x37, 0x28, 0xda, 0x02, 0xed, 0x23, 0xf4, 0xb2,
+	0x98, 0x99, 0xdd, 0xe5, 0x2e, 0x49, 0xc5, 0x4a, 0x80, 0x24, 0x57, 0xe4, 0xfc, 0xce, 0xef, 0x9c,
+	0x39, 0x73, 0xe6, 0xcc, 0xcc, 0x99, 0x59, 0xd8, 0x1e, 0x39, 0xce, 0xc8, 0xa2, 0xbb, 0xae, 0xe7,
+	0x04, 0xce, 0xe9, 0x74, 0xb8, 0x6b, 0x50, 0x5f, 0xf7, 0x4c, 0x37, 0x70, 0xbc, 0x3a, 0xc7, 0xf0,
+	0x9a, 0x60, 0xd4, 0x23, 0x46, 0xed, 0x18, 0xd6, 0xef, 0x9b, 0x16, 0x6d, 0xc5, 0xc4, 0x3e, 0x0d,
+	0xf0, 0x5d, 0xc8, 0x0d, 0x4d, 0x8b, 0xca, 0xd2, 0x76, 0x76, 0xa7, 0xbc, 0xf7, 0x7a, 0x7d, 0x4e,
+	0xa9, 0x9e, 0xd6, 0xe8, 0x31, 0x58, 0xe5, 0x1a, 0xb5, 0x7f, 0xe5, 0x60, 0x63, 0x89, 0x14, 0x63,
+	0xc8, 0xd9, 0x64, 0xc2, 0x2c, 0x4a, 0x3b, 0x25, 0x95, 0xff, 0xc7, 0x32, 0xac, 0xb8, 0x44, 0x7f,
+	0x44, 0x46, 0x54, 0xce, 0x70, 0x38, 0x6a, 0xe2, 0x57, 0x01, 0x0c, 0xea, 0x52, 0xdb, 0xa0, 0xb6,
+	0x7e, 0x26, 0x67, 0xb7, 0xb3, 0x3b, 0x25, 0x35, 0x81, 0xe0, 0xb7, 0x60, 0xdd, 0x9d, 0x9e, 0x5a,
+	0xa6, 0xae, 0x25, 0x68, 0xb0, 0x9d, 0xdd, 0xc9, 0xab, 0x48, 0x08, 0x5a, 0x33, 0xf2, 0x75, 0x58,
+	0x7b, 0x42, 0xc9, 0xa3, 0x24, 0xb5, 0xcc, 0xa9, 0x55, 0x06, 0x27, 0x88, 0x4d, 0xa8, 0x4c, 0xa8,
+	0xef, 0x93, 0x11, 0xd5, 0x82, 0x33, 0x97, 0xca, 0x39, 0x3e, 0xfa, 0xed, 0x85, 0xd1, 0xcf, 0x8f,
+	0xbc, 0x1c, 0x6a, 0x0d, 0xce, 0x5c, 0x8a, 0x1b, 0x50, 0xa2, 0xf6, 0x74, 0x22, 0x2c, 0xe4, 0xcf,
+	0x89, 0x9f, 0x62, 0x4f, 0x27, 0xf3, 0x56, 0x8a, 0x4c, 0x2d, 0x34, 0xb1, 0xe2, 0x53, 0xef, 0xb1,
+	0xa9, 0x53, 0xb9, 0xc0, 0x0d, 0x5c, 0x5f, 0x30, 0xd0, 0x17, 0xf2, 0x79, 0x1b, 0x91, 0x1e, 0x6e,
+	0x42, 0x89, 0x3e, 0x0d, 0xa8, 0xed, 0x9b, 0x8e, 0x2d, 0xaf, 0x70, 0x23, 0x6f, 0x2c, 0x99, 0x45,
+	0x6a, 0x19, 0xf3, 0x26, 0x66, 0x7a, 0xf8, 0x0e, 0xac, 0x38, 0x6e, 0x60, 0x3a, 0xb6, 0x2f, 0x17,
+	0xb7, 0xa5, 0x9d, 0xf2, 0xde, 0xcb, 0x4b, 0x13, 0xa1, 0x2b, 0x38, 0x6a, 0x44, 0xc6, 0x6d, 0x40,
+	0xbe, 0x33, 0xf5, 0x74, 0xaa, 0xe9, 0x8e, 0x41, 0x35, 0xd3, 0x1e, 0x3a, 0x72, 0x89, 0x1b, 0xb8,
+	0xba, 0x38, 0x10, 0x4e, 0x6c, 0x3a, 0x06, 0x6d, 0xdb, 0x43, 0x47, 0xad, 0xfa, 0xa9, 0x36, 0xbe,
+	0x04, 0x05, 0xff, 0xcc, 0x0e, 0xc8, 0x53, 0xb9, 0xc2, 0x33, 0x24, 0x6c, 0xd5, 0xfe, 0x52, 0x80,
+	0xb5, 0x8b, 0xa4, 0xd8, 0x3d, 0xc8, 0x0f, 0xd9, 0x28, 0xe5, 0xcc, 0xb7, 0x89, 0x81, 0xd0, 0x49,
+	0x07, 0xb1, 0xf0, 0x1d, 0x83, 0xd8, 0x80, 0xb2, 0x4d, 0xfd, 0x80, 0x1a, 0x22, 0x23, 0xb2, 0x17,
+	0xcc, 0x29, 0x10, 0x4a, 0x8b, 0x29, 0x95, 0xfb, 0x4e, 0x29, 0xf5, 0x29, 0xac, 0xc5, 0x2e, 0x69,
+	0x1e, 0xb1, 0x47, 0x51, 0x6e, 0xee, 0x3e, 0xcf, 0x93, 0xba, 0x12, 0xe9, 0xa9, 0x4c, 0x4d, 0xad,
+	0xd2, 0x54, 0x1b, 0xb7, 0x00, 0x1c, 0x9b, 0x3a, 0x43, 0xcd, 0xa0, 0xba, 0x25, 0x17, 0xcf, 0x89,
+	0x52, 0x97, 0x51, 0x16, 0xa2, 0xe4, 0x08, 0x54, 0xb7, 0xf0, 0x07, 0xb3, 0x54, 0x5b, 0x39, 0x27,
+	0x53, 0x8e, 0xc5, 0x22, 0x5b, 0xc8, 0xb6, 0x13, 0xa8, 0x7a, 0x94, 0xe5, 0x3d, 0x35, 0xc2, 0x91,
+	0x95, 0xb8, 0x13, 0xf5, 0xe7, 0x8e, 0x4c, 0x0d, 0xd5, 0xc4, 0xc0, 0x56, 0xbd, 0x64, 0x13, 0xbf,
+	0x06, 0x31, 0xa0, 0xf1, 0xb4, 0x02, 0xbe, 0x0b, 0x55, 0x22, 0xb0, 0x43, 0x26, 0x74, 0xeb, 0x4b,
+	0xa8, 0xa6, 0xc3, 0x83, 0x37, 0x21, 0xef, 0x07, 0xc4, 0x0b, 0x78, 0x16, 0xe6, 0x55, 0xd1, 0xc0,
+	0x08, 0xb2, 0xd4, 0x36, 0xf8, 0x2e, 0x97, 0x57, 0xd9, 0x5f, 0xfc, 0xff, 0xb3, 0x01, 0x67, 0xf9,
+	0x80, 0xdf, 0x5c, 0x9c, 0xd1, 0x94, 0xe5, 0xf9, 0x71, 0x6f, 0xbd, 0x0f, 0xab, 0xa9, 0x01, 0x5c,
+	0xb4, 0xeb, 0xda, 0x2f, 0xe0, 0xc5, 0xa5, 0xa6, 0xf1, 0xa7, 0xb0, 0x39, 0xb5, 0x4d, 0x3b, 0xa0,
+	0x9e, 0xeb, 0x51, 0x96, 0xb1, 0xa2, 0x2b, 0xf9, 0xdf, 0x2b, 0xe7, 0xe4, 0xdc, 0x49, 0x92, 0x2d,
+	0xac, 0xa8, 0x1b, 0xd3, 0x45, 0xf0, 0x66, 0xa9, 0xf8, 0x9f, 0x15, 0xf4, 0xec, 0xd9, 0xb3, 0x67,
+	0x99, 0xda, 0x6f, 0x0b, 0xb0, 0xb9, 0x6c, 0xcd, 0x2c, 0x5d, 0xbe, 0x97, 0xa0, 0x60, 0x4f, 0x27,
+	0xa7, 0xd4, 0xe3, 0x41, 0xca, 0xab, 0x61, 0x0b, 0x37, 0x20, 0x6f, 0x91, 0x53, 0x6a, 0xc9, 0xb9,
+	0x6d, 0x69, 0xa7, 0xba, 0xf7, 0xd6, 0x85, 0x56, 0x65, 0xfd, 0x88, 0xa9, 0xa8, 0x42, 0x13, 0x7f,
+	0x08, 0xb9, 0x70, 0x8b, 0x66, 0x16, 0x6e, 0x5e, 0xcc, 0x02, 0x5b, 0x4b, 0x2a, 0xd7, 0xc3, 0x2f,
+	0x41, 0x89, 0xfd, 0x8a, 0xdc, 0x28, 0x70, 0x9f, 0x8b, 0x0c, 0x60, 0x79, 0x81, 0xb7, 0xa0, 0xc8,
+	0x97, 0x89, 0x41, 0xa3, 0xa3, 0x2d, 0x6e, 0xb3, 0xc4, 0x32, 0xe8, 0x90, 0x4c, 0xad, 0x40, 0x7b,
+	0x4c, 0xac, 0x29, 0xe5, 0x09, 0x5f, 0x52, 0x2b, 0x21, 0xf8, 0x33, 0x86, 0xe1, 0xab, 0x50, 0x16,
+	0xab, 0xca, 0xb4, 0x0d, 0xfa, 0x94, 0xef, 0x9e, 0x79, 0x55, 0x2c, 0xb4, 0x36, 0x43, 0x58, 0xf7,
+	0x0f, 0x7d, 0xc7, 0x8e, 0x52, 0x93, 0x77, 0xc1, 0x00, 0xde, 0xfd, 0xfb, 0xf3, 0x1b, 0xf7, 0x2b,
+	0xcb, 0x87, 0x37, 0x9f, 0x53, 0xb5, 0x3f, 0x67, 0x20, 0xc7, 0xf7, 0x8b, 0x35, 0x28, 0x0f, 0x3e,
+	0xeb, 0x29, 0x5a, 0xab, 0x7b, 0x72, 0x70, 0xa4, 0x20, 0x09, 0x57, 0x01, 0x38, 0x70, 0xff, 0xa8,
+	0xdb, 0x18, 0xa0, 0x4c, 0xdc, 0x6e, 0x77, 0x06, 0x77, 0x6e, 0xa1, 0x6c, 0xac, 0x70, 0x22, 0x80,
+	0x5c, 0x92, 0xf0, 0xde, 0x1e, 0xca, 0x63, 0x04, 0x15, 0x61, 0xa0, 0xfd, 0xa9, 0xd2, 0xba, 0x73,
+	0x0b, 0x15, 0xd2, 0xc8, 0x7b, 0x7b, 0x68, 0x05, 0xaf, 0x42, 0x89, 0x23, 0x07, 0xdd, 0xee, 0x11,
+	0x2a, 0xc6, 0x36, 0xfb, 0x03, 0xb5, 0xdd, 0x39, 0x44, 0xa5, 0xd8, 0xe6, 0xa1, 0xda, 0x3d, 0xe9,
+	0x21, 0x88, 0x2d, 0x1c, 0x2b, 0xfd, 0x7e, 0xe3, 0x50, 0x41, 0xe5, 0x98, 0x71, 0xf0, 0xd9, 0x40,
+	0xe9, 0xa3, 0x4a, 0xca, 0xad, 0xf7, 0xf6, 0xd0, 0x6a, 0xdc, 0x85, 0xd2, 0x39, 0x39, 0x46, 0x55,
+	0xbc, 0x0e, 0xab, 0xa2, 0x8b, 0xc8, 0x89, 0xb5, 0x39, 0xe8, 0xce, 0x2d, 0x84, 0x66, 0x8e, 0x08,
+	0x2b, 0xeb, 0x29, 0xe0, 0xce, 0x2d, 0x84, 0x6b, 0x4d, 0xc8, 0xf3, 0xec, 0xc2, 0x18, 0xaa, 0x47,
+	0x8d, 0x03, 0xe5, 0x48, 0xeb, 0xf6, 0x06, 0xed, 0x6e, 0xa7, 0x71, 0x84, 0xa4, 0x19, 0xa6, 0x2a,
+	0x3f, 0x3d, 0x69, 0xab, 0x4a, 0x0b, 0x65, 0x92, 0x58, 0x4f, 0x69, 0x0c, 0x94, 0x16, 0xca, 0xd6,
+	0x74, 0xd8, 0x5c, 0xb6, 0x4f, 0x2e, 0x5d, 0x19, 0x89, 0x29, 0xce, 0x9c, 0x33, 0xc5, 0xdc, 0xd6,
+	0xc2, 0x14, 0xff, 0x33, 0x03, 0x1b, 0x4b, 0xce, 0x8a, 0xa5, 0x9d, 0x7c, 0x04, 0x79, 0x91, 0xa2,
+	0xe2, 0xf4, 0xbc, 0xb1, 0xf4, 0xd0, 0xe1, 0x09, 0xbb, 0x70, 0x82, 0x72, 0xbd, 0x64, 0x05, 0x91,
+	0x3d, 0xa7, 0x82, 0x60, 0x26, 0x16, 0xf6, 0xf4, 0x9f, 0x2f, 0xec, 0xe9, 0xe2, 0xd8, 0xbb, 0x73,
+	0x91, 0x63, 0x8f, 0x63, 0xdf, 0x6e, 0x6f, 0xcf, 0x2f, 0xd9, 0xdb, 0xef, 0xc1, 0xfa, 0x82, 0xa1,
+	0x0b, 0xef, 0xb1, 0xbf, 0x94, 0x40, 0x3e, 0x2f, 0x38, 0xcf, 0xd9, 0xe9, 0x32, 0xa9, 0x9d, 0xee,
+	0xde, 0x7c, 0x04, 0xaf, 0x9d, 0x3f, 0x09, 0x0b, 0x73, 0xfd, 0x95, 0x04, 0x97, 0x96, 0x57, 0x8a,
+	0x4b, 0x7d, 0xf8, 0x10, 0x0a, 0x13, 0x1a, 0x8c, 0x9d, 0xa8, 0x5a, 0x7a, 0x73, 0xc9, 0x19, 0xcc,
+	0xc4, 0xf3, 0x93, 0x1d, 0x6a, 0x25, 0x0f, 0xf1, 0xec, 0x79, 0xe5, 0x9e, 0xf0, 0x66, 0xc1, 0xd3,
+	0x5f, 0x65, 0xe0, 0xc5, 0xa5, 0xc6, 0x97, 0x3a, 0xfa, 0x0a, 0x80, 0x69, 0xbb, 0xd3, 0x40, 0x54,
+	0x44, 0x62, 0x83, 0x2d, 0x71, 0x84, 0x6f, 0x5e, 0x6c, 0xf3, 0x9c, 0x06, 0xb1, 0x3c, 0xcb, 0xe5,
+	0x20, 0x20, 0x4e, 0xb8, 0x3b, 0x73, 0x34, 0xc7, 0x1d, 0x7d, 0xf5, 0x9c, 0x91, 0x2e, 0x24, 0xe6,
+	0xbb, 0x80, 0x74, 0xcb, 0xa4, 0x76, 0xa0, 0xf9, 0x81, 0x47, 0xc9, 0xc4, 0xb4, 0x47, 0xfc, 0x04,
+	0x29, 0xee, 0xe7, 0x87, 0xc4, 0xf2, 0xa9, 0xba, 0x26, 0xc4, 0xfd, 0x48, 0xca, 0x34, 0x78, 0x02,
+	0x79, 0x09, 0x8d, 0x42, 0x4a, 0x43, 0x88, 0x63, 0x8d, 0xda, 0x6f, 0x4a, 0x50, 0x4e, 0xd4, 0xd5,
+	0xf8, 0x1a, 0x54, 0x1e, 0x92, 0xc7, 0x44, 0x8b, 0xee, 0x4a, 0x22, 0x12, 0x65, 0x86, 0xf5, 0xc2,
+	0xfb, 0xd2, 0xbb, 0xb0, 0xc9, 0x29, 0xce, 0x34, 0xa0, 0x9e, 0xa6, 0x5b, 0xc4, 0xf7, 0x79, 0xd0,
+	0x8a, 0x9c, 0x8a, 0x99, 0xac, 0xcb, 0x44, 0xcd, 0x48, 0x82, 0x6f, 0xc3, 0x06, 0xd7, 0x98, 0x4c,
+	0xad, 0xc0, 0x74, 0x2d, 0xaa, 0xb1, 0xdb, 0x9b, 0xcf, 0x4f, 0x92, 0xd8, 0xb3, 0x75, 0xc6, 0x38,
+	0x0e, 0x09, 0xcc, 0x23, 0x1f, 0xb7, 0xe0, 0x15, 0xae, 0x36, 0xa2, 0x36, 0xf5, 0x48, 0x40, 0x35,
+	0xfa, 0xc5, 0x94, 0x58, 0xbe, 0x46, 0x6c, 0x43, 0x1b, 0x13, 0x7f, 0x2c, 0x6f, 0x32, 0x03, 0x07,
+	0x19, 0x59, 0x52, 0xaf, 0x30, 0xe2, 0x61, 0xc8, 0x53, 0x38, 0xad, 0x61, 0x1b, 0x1f, 0x13, 0x7f,
+	0x8c, 0xf7, 0xe1, 0x12, 0xb7, 0xe2, 0x07, 0x9e, 0x69, 0x8f, 0x34, 0x7d, 0x4c, 0xf5, 0x47, 0xda,
+	0x34, 0x18, 0xde, 0x95, 0x5f, 0x4a, 0xf6, 0xcf, 0x3d, 0xec, 0x73, 0x4e, 0x93, 0x51, 0x4e, 0x82,
+	0xe1, 0x5d, 0xdc, 0x87, 0x0a, 0x9b, 0x8c, 0x89, 0xf9, 0x25, 0xd5, 0x86, 0x8e, 0xc7, 0x8f, 0xc6,
+	0xea, 0x92, 0xad, 0x29, 0x11, 0xc1, 0x7a, 0x37, 0x54, 0x38, 0x76, 0x0c, 0xba, 0x9f, 0xef, 0xf7,
+	0x14, 0xa5, 0xa5, 0x96, 0x23, 0x2b, 0xf7, 0x1d, 0x8f, 0x25, 0xd4, 0xc8, 0x89, 0x03, 0x5c, 0x16,
+	0x09, 0x35, 0x72, 0xa2, 0xf0, 0xde, 0x86, 0x0d, 0x5d, 0x17, 0x63, 0x36, 0x75, 0x2d, 0xbc, 0x63,
+	0xf9, 0x32, 0x4a, 0x05, 0x4b, 0xd7, 0x0f, 0x05, 0x21, 0xcc, 0x71, 0x1f, 0x7f, 0x00, 0x2f, 0xce,
+	0x82, 0x95, 0x54, 0x5c, 0x5f, 0x18, 0xe5, 0xbc, 0xea, 0x6d, 0xd8, 0x70, 0xcf, 0x16, 0x15, 0x71,
+	0xaa, 0x47, 0xf7, 0x6c, 0x5e, 0xed, 0x7d, 0xd8, 0x74, 0xc7, 0xee, 0xa2, 0xde, 0xcd, 0xa4, 0x1e,
+	0x76, 0xc7, 0xee, 0xbc, 0xe2, 0x1b, 0xfc, 0xc2, 0xed, 0x51, 0x9d, 0x04, 0xd4, 0x90, 0x2f, 0x27,
+	0xe9, 0x09, 0x01, 0xde, 0x05, 0xa4, 0xeb, 0x1a, 0xb5, 0xc9, 0xa9, 0x45, 0x35, 0xe2, 0x51, 0x9b,
+	0xf8, 0xf2, 0xd5, 0x24, 0xb9, 0xaa, 0xeb, 0x0a, 0x97, 0x36, 0xb8, 0x10, 0xdf, 0x84, 0x75, 0xe7,
+	0xf4, 0xa1, 0x2e, 0x52, 0x52, 0x73, 0x3d, 0x3a, 0x34, 0x9f, 0xca, 0xaf, 0xf3, 0xf8, 0xae, 0x31,
+	0x01, 0x4f, 0xc8, 0x1e, 0x87, 0xf1, 0x0d, 0x40, 0xba, 0x3f, 0x26, 0x9e, 0xcb, 0xf7, 0x64, 0xdf,
+	0x25, 0x3a, 0x95, 0xdf, 0x10, 0x54, 0x81, 0x77, 0x22, 0x98, 0x2d, 0x09, 0xff, 0x89, 0x39, 0x0c,
+	0x22, 0x8b, 0xd7, 0xc5, 0x92, 0xe0, 0x58, 0x68, 0x6d, 0x07, 0x10, 0x0b, 0x45, 0xaa, 0xe3, 0x1d,
+	0x4e, 0xab, 0xba, 0x63, 0x37, 0xd9, 0xef, 0x6b, 0xb0, 0xca, 0x98, 0xb3, 0x4e, 0x6f, 0x88, 0x82,
+	0xcc, 0x1d, 0x27, 0x7a, 0xbc, 0x05, 0x97, 0x18, 0x69, 0x42, 0x03, 0x62, 0x90, 0x80, 0x24, 0xd8,
+	0x6f, 0x73, 0x36, 0x8b, 0xfb, 0x71, 0x28, 0x4c, 0xf9, 0xe9, 0x4d, 0x4f, 0xcf, 0xe2, 0xcc, 0x7a,
+	0x47, 0xf8, 0xc9, 0xb0, 0x28, 0xb7, 0xbe, 0xb7, 0xa2, 0xbb, 0xb6, 0x0f, 0x95, 0x64, 0xe2, 0xe3,
+	0x12, 0x88, 0xd4, 0x47, 0x12, 0xab, 0x82, 0x9a, 0xdd, 0x16, 0xab, 0x5f, 0x3e, 0x57, 0x50, 0x86,
+	0xd5, 0x51, 0x47, 0xed, 0x81, 0xa2, 0xa9, 0x27, 0x9d, 0x41, 0xfb, 0x58, 0x41, 0xd9, 0x44, 0xc1,
+	0xfe, 0x20, 0x57, 0x7c, 0x13, 0x5d, 0xaf, 0x7d, 0x9d, 0x81, 0x6a, 0xfa, 0x06, 0x86, 0xff, 0x0f,
+	0x2e, 0x47, 0xcf, 0x25, 0x3e, 0x0d, 0xb4, 0x27, 0xa6, 0xc7, 0x57, 0xe4, 0x84, 0x88, 0xd3, 0x31,
+	0xce, 0x89, 0xcd, 0x90, 0xd5, 0xa7, 0xc1, 0x27, 0xa6, 0xc7, 0xd6, 0xdb, 0x84, 0x04, 0xf8, 0x08,
+	0xae, 0xda, 0x8e, 0xe6, 0x07, 0xc4, 0x36, 0x88, 0x67, 0x68, 0xb3, 0x87, 0x2a, 0x8d, 0xe8, 0x3a,
+	0xf5, 0x7d, 0x47, 0x9c, 0x84, 0xb1, 0x95, 0x97, 0x6d, 0xa7, 0x1f, 0x92, 0x67, 0x47, 0x44, 0x23,
+	0xa4, 0xce, 0xe5, 0x6f, 0xf6, 0xbc, 0xfc, 0x7d, 0x09, 0x4a, 0x13, 0xe2, 0x6a, 0xd4, 0x0e, 0xbc,
+	0x33, 0x5e, 0x77, 0x17, 0xd5, 0xe2, 0x84, 0xb8, 0x0a, 0x6b, 0xff, 0x20, 0xd7, 0x9f, 0x07, 0xb9,
+	0x62, 0x11, 0x95, 0x1e, 0xe4, 0x8a, 0x25, 0x04, 0xb5, 0x7f, 0x64, 0xa1, 0x92, 0xac, 0xc3, 0xd9,
+	0xb5, 0x46, 0xe7, 0x47, 0x96, 0xc4, 0x37, 0xb5, 0xd7, 0xbe, 0xb1, 0x6a, 0xaf, 0x37, 0xd9, 0x59,
+	0xb6, 0x5f, 0x10, 0xd5, 0xb1, 0x2a, 0x34, 0x59, 0x1d, 0xc1, 0x92, 0x8d, 0x8a, 0x6a, 0xa4, 0xa8,
+	0x86, 0x2d, 0x7c, 0x08, 0x85, 0x87, 0x3e, 0xb7, 0x5d, 0xe0, 0xb6, 0x5f, 0xff, 0x66, 0xdb, 0x0f,
+	0xfa, 0xdc, 0x78, 0xe9, 0x41, 0x5f, 0xeb, 0x74, 0xd5, 0xe3, 0xc6, 0x91, 0x1a, 0xaa, 0xe3, 0x2b,
+	0x90, 0xb3, 0xc8, 0x97, 0x67, 0xe9, 0x53, 0x8f, 0x43, 0x17, 0x9d, 0x84, 0x2b, 0x90, 0x7b, 0x42,
+	0xc9, 0xa3, 0xf4, 0x59, 0xc3, 0xa1, 0xef, 0x71, 0x31, 0xec, 0x42, 0x9e, 0xc7, 0x0b, 0x03, 0x84,
+	0x11, 0x43, 0x2f, 0xe0, 0x22, 0xe4, 0x9a, 0x5d, 0x95, 0x2d, 0x08, 0x04, 0x15, 0x81, 0x6a, 0xbd,
+	0xb6, 0xd2, 0x54, 0x50, 0xa6, 0x76, 0x1b, 0x0a, 0x22, 0x08, 0x6c, 0xb1, 0xc4, 0x61, 0x40, 0x2f,
+	0x84, 0xcd, 0xd0, 0x86, 0x14, 0x49, 0x4f, 0x8e, 0x0f, 0x14, 0x15, 0x65, 0xd2, 0x53, 0x9d, 0x43,
+	0xf9, 0x9a, 0x0f, 0x95, 0x64, 0x21, 0xfe, 0xc3, 0x5c, 0xb2, 0xff, 0x2a, 0x41, 0x39, 0x51, 0x58,
+	0xb3, 0x8a, 0x88, 0x58, 0x96, 0xf3, 0x44, 0x23, 0x96, 0x49, 0xfc, 0x30, 0x35, 0x80, 0x43, 0x0d,
+	0x86, 0x5c, 0x74, 0xea, 0x7e, 0xa0, 0x25, 0x92, 0x47, 0x85, 0xda, 0x1f, 0x24, 0x40, 0xf3, 0x95,
+	0xed, 0x9c, 0x9b, 0xd2, 0x8f, 0xe9, 0x66, 0xed, 0xf7, 0x12, 0x54, 0xd3, 0xe5, 0xec, 0x9c, 0x7b,
+	0xd7, 0x7e, 0x54, 0xf7, 0xfe, 0x9e, 0x81, 0xd5, 0x54, 0x11, 0x7b, 0x51, 0xef, 0xbe, 0x80, 0x75,
+	0xd3, 0xa0, 0x13, 0xd7, 0x09, 0xa8, 0xad, 0x9f, 0x69, 0x16, 0x7d, 0x4c, 0x2d, 0xb9, 0xc6, 0x37,
+	0x8d, 0xdd, 0x6f, 0x2e, 0x93, 0xeb, 0xed, 0x99, 0xde, 0x11, 0x53, 0xdb, 0xdf, 0x68, 0xb7, 0x94,
+	0xe3, 0x5e, 0x77, 0xa0, 0x74, 0x9a, 0x9f, 0x69, 0x27, 0x9d, 0x9f, 0x74, 0xba, 0x9f, 0x74, 0x54,
+	0x64, 0xce, 0xd1, 0xbe, 0xc7, 0x65, 0xdf, 0x03, 0x34, 0xef, 0x14, 0xbe, 0x0c, 0xcb, 0xdc, 0x42,
+	0x2f, 0xe0, 0x0d, 0x58, 0xeb, 0x74, 0xb5, 0x7e, 0xbb, 0xa5, 0x68, 0xca, 0xfd, 0xfb, 0x4a, 0x73,
+	0xd0, 0x17, 0x0f, 0x1f, 0x31, 0x7b, 0x90, 0x5a, 0xe0, 0xb5, 0xdf, 0x65, 0x61, 0x63, 0x89, 0x27,
+	0xb8, 0x11, 0x5e, 0x59, 0xc4, 0x2d, 0xea, 0x9d, 0x8b, 0x78, 0x5f, 0x67, 0x35, 0x43, 0x8f, 0x78,
+	0x41, 0x78, 0xc3, 0xb9, 0x01, 0x2c, 0x4a, 0x76, 0x60, 0x0e, 0x4d, 0xea, 0x85, 0xef, 0x44, 0xe2,
+	0x1e, 0xb3, 0x36, 0xc3, 0xc5, 0x53, 0xd1, 0xdb, 0x80, 0x5d, 0xc7, 0x37, 0x03, 0xf3, 0x31, 0xd5,
+	0x4c, 0x3b, 0x7a, 0x54, 0x62, 0xf7, 0x9a, 0x9c, 0x8a, 0x22, 0x49, 0xdb, 0x0e, 0x62, 0xb6, 0x4d,
+	0x47, 0x64, 0x8e, 0xcd, 0x36, 0xf3, 0xac, 0x8a, 0x22, 0x49, 0xcc, 0xbe, 0x06, 0x15, 0xc3, 0x99,
+	0xb2, 0x62, 0x4f, 0xf0, 0xd8, 0xd9, 0x21, 0xa9, 0x65, 0x81, 0xc5, 0x94, 0xb0, 0x8c, 0x9f, 0xbd,
+	0x66, 0x55, 0xd4, 0xb2, 0xc0, 0x04, 0xe5, 0x3a, 0xac, 0x91, 0xd1, 0xc8, 0x63, 0xc6, 0x23, 0x43,
+	0xe2, 0x62, 0x52, 0x8d, 0x61, 0x4e, 0xdc, 0x7a, 0x00, 0xc5, 0x28, 0x0e, 0xec, 0xa8, 0x66, 0x91,
+	0xd0, 0x5c, 0x71, 0xdb, 0xce, 0xec, 0x94, 0xd4, 0xa2, 0x1d, 0x09, 0xaf, 0x41, 0xc5, 0xf4, 0xb5,
+	0xd9, 0xe3, 0x7c, 0x66, 0x3b, 0xb3, 0x53, 0x54, 0xcb, 0xa6, 0x1f, 0x3f, 0x6c, 0xd6, 0xbe, 0xca,
+	0x40, 0x35, 0xfd, 0x71, 0x01, 0xb7, 0xa0, 0x68, 0x39, 0x3a, 0xe1, 0xa9, 0x25, 0xbe, 0x6c, 0xed,
+	0x3c, 0xe7, 0x7b, 0x44, 0xfd, 0x28, 0xe4, 0xab, 0xb1, 0xe6, 0xd6, 0xdf, 0x24, 0x28, 0x46, 0x30,
+	0xbe, 0x04, 0x39, 0x97, 0x04, 0x63, 0x6e, 0x2e, 0x7f, 0x90, 0x41, 0x92, 0xca, 0xdb, 0x0c, 0xf7,
+	0x5d, 0x62, 0xf3, 0x14, 0x08, 0x71, 0xd6, 0x66, 0xf3, 0x6a, 0x51, 0x62, 0xf0, 0x5b, 0x8f, 0x33,
+	0x99, 0x50, 0x3b, 0xf0, 0xa3, 0x79, 0x0d, 0xf1, 0x66, 0x08, 0xe3, 0xb7, 0x60, 0x3d, 0xf0, 0x88,
+	0x69, 0xa5, 0xb8, 0x39, 0xce, 0x45, 0x91, 0x20, 0x26, 0xef, 0xc3, 0x95, 0xc8, 0xae, 0x41, 0x03,
+	0xa2, 0x8f, 0xa9, 0x31, 0x53, 0x2a, 0xf0, 0xd7, 0x8d, 0xcb, 0x21, 0xa1, 0x15, 0xca, 0x23, 0xdd,
+	0xda, 0xd7, 0x12, 0xac, 0x47, 0xf7, 0x34, 0x23, 0x0e, 0xd6, 0x31, 0x00, 0xb1, 0x6d, 0x27, 0x48,
+	0x86, 0x6b, 0x31, 0x95, 0x17, 0xf4, 0xea, 0x8d, 0x58, 0x49, 0x4d, 0x18, 0xd8, 0x9a, 0x00, 0xcc,
+	0x24, 0xe7, 0x86, 0xed, 0x2a, 0x94, 0xc3, 0x2f, 0x47, 0xfc, 0xf3, 0xa3, 0xb8, 0xd9, 0x83, 0x80,
+	0xd8, 0x85, 0x0e, 0x6f, 0x42, 0xfe, 0x94, 0x8e, 0x4c, 0x3b, 0x7c, 0x0f, 0x16, 0x8d, 0xe8, 0xfd,
+	0x25, 0x17, 0xbf, 0xbf, 0x1c, 0xfc, 0x5a, 0x82, 0x0d, 0xdd, 0x99, 0xcc, 0xfb, 0x7b, 0x80, 0xe6,
+	0x9e, 0x17, 0xfc, 0x8f, 0xa5, 0xcf, 0x3f, 0x1a, 0x99, 0xc1, 0x78, 0x7a, 0x5a, 0xd7, 0x9d, 0xc9,
+	0xee, 0xc8, 0xb1, 0x88, 0x3d, 0x9a, 0x7d, 0x3f, 0x7d, 0xbc, 0xb7, 0xcb, 0xaa, 0x1e, 0x3f, 0xf1,
+	0x21, 0xf5, 0x5e, 0xa2, 0x54, 0xe5, 0xbc, 0xff, 0x4a, 0xd2, 0x1f, 0x33, 0xd9, 0xc3, 0xde, 0xc1,
+	0x9f, 0x32, 0x5b, 0x87, 0xa2, 0xbf, 0x5e, 0x14, 0x1f, 0x95, 0x0e, 0x2d, 0xaa, 0xb3, 0x31, 0xff,
+	0x2f, 0x00, 0x00, 0xff, 0xff, 0x9a, 0xd0, 0x4c, 0xbb, 0x9c, 0x1d, 0x00, 0x00,
 }
 
 func init() {
diff --git a/types/descriptor/descriptor.proto b/types/descriptor/descriptor.proto
index ed08fcb..3447a0d 100644
--- a/types/descriptor/descriptor.proto
+++ b/types/descriptor/descriptor.proto
@@ -40,7 +40,7 @@
 syntax = "proto2";
 
 package google.protobuf;
-option go_package = "github.com/golang/protobuf/protoc-gen-go/descriptor;descriptor";
+option go_package = "github.com/golang/protobuf/v2/types/descriptor;descriptor_proto";
 option java_package = "com.google.protobuf";
 option java_outer_classname = "DescriptorProtos";
 option csharp_namespace = "Google.Protobuf.Reflection";
diff --git a/types/plugin/plugin.pb.go b/types/plugin/plugin.pb.go
index bbc38cf..0beb617 100644
--- a/types/plugin/plugin.pb.go
+++ b/types/plugin/plugin.pb.go
@@ -1,15 +1,29 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // source: google/protobuf/compiler/plugin.proto
 
-package plugin_go
+package plugin_proto
 
 import (
+	fmt "fmt"
+	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"
 	descriptor "github.com/golang/protobuf/v2/types/descriptor"
+	math "math"
 )
 
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
 // The version number of protocol compiler.
 type Version struct {
 	Major *int32 `protobuf:"varint,1,opt,name=major" json:"major,omitempty"`
@@ -43,12 +57,30 @@
 func (m xxx_Version) ProtoMutable() {}
 
 func (m *Version) Reset()         { *m = Version{} }
-func (m *Version) String() string { return "not implemented" }
+func (m *Version) String() string { return proto.CompactTextString(m) }
 func (*Version) ProtoMessage()    {}
 func (*Version) Descriptor() ([]byte, []int) {
 	return fileDescriptor_3562add825dafed5, []int{0}
 }
 
+func (m *Version) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Version.Unmarshal(m, b)
+}
+func (m *Version) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Version.Marshal(b, m, deterministic)
+}
+func (m *Version) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Version.Merge(m, src)
+}
+func (m *Version) XXX_Size() int {
+	return xxx_messageInfo_Version.Size(m)
+}
+func (m *Version) XXX_DiscardUnknown() {
+	xxx_messageInfo_Version.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Version proto.InternalMessageInfo
+
 func (m *Version) GetMajor() int32 {
 	if m != nil && m.Major != nil {
 		return *m.Major
@@ -127,12 +159,30 @@
 func (m xxx_CodeGeneratorRequest) ProtoMutable() {}
 
 func (m *CodeGeneratorRequest) Reset()         { *m = CodeGeneratorRequest{} }
-func (m *CodeGeneratorRequest) String() string { return "not implemented" }
+func (m *CodeGeneratorRequest) String() string { return proto.CompactTextString(m) }
 func (*CodeGeneratorRequest) ProtoMessage()    {}
 func (*CodeGeneratorRequest) Descriptor() ([]byte, []int) {
 	return fileDescriptor_3562add825dafed5, []int{1}
 }
 
+func (m *CodeGeneratorRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CodeGeneratorRequest.Unmarshal(m, b)
+}
+func (m *CodeGeneratorRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CodeGeneratorRequest.Marshal(b, m, deterministic)
+}
+func (m *CodeGeneratorRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CodeGeneratorRequest.Merge(m, src)
+}
+func (m *CodeGeneratorRequest) XXX_Size() int {
+	return xxx_messageInfo_CodeGeneratorRequest.Size(m)
+}
+func (m *CodeGeneratorRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_CodeGeneratorRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CodeGeneratorRequest proto.InternalMessageInfo
+
 func (m *CodeGeneratorRequest) GetFileToGenerate() []string {
 	if m != nil {
 		return m.FileToGenerate
@@ -198,12 +248,30 @@
 func (m xxx_CodeGeneratorResponse) ProtoMutable() {}
 
 func (m *CodeGeneratorResponse) Reset()         { *m = CodeGeneratorResponse{} }
-func (m *CodeGeneratorResponse) String() string { return "not implemented" }
+func (m *CodeGeneratorResponse) String() string { return proto.CompactTextString(m) }
 func (*CodeGeneratorResponse) ProtoMessage()    {}
 func (*CodeGeneratorResponse) Descriptor() ([]byte, []int) {
 	return fileDescriptor_3562add825dafed5, []int{2}
 }
 
+func (m *CodeGeneratorResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CodeGeneratorResponse.Unmarshal(m, b)
+}
+func (m *CodeGeneratorResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CodeGeneratorResponse.Marshal(b, m, deterministic)
+}
+func (m *CodeGeneratorResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CodeGeneratorResponse.Merge(m, src)
+}
+func (m *CodeGeneratorResponse) XXX_Size() int {
+	return xxx_messageInfo_CodeGeneratorResponse.Size(m)
+}
+func (m *CodeGeneratorResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_CodeGeneratorResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CodeGeneratorResponse proto.InternalMessageInfo
+
 func (m *CodeGeneratorResponse) GetError() string {
 	if m != nil && m.Error != nil {
 		return *m.Error
@@ -297,12 +365,30 @@
 func (m xxx_CodeGeneratorResponse_File) ProtoMutable() {}
 
 func (m *CodeGeneratorResponse_File) Reset()         { *m = CodeGeneratorResponse_File{} }
-func (m *CodeGeneratorResponse_File) String() string { return "not implemented" }
+func (m *CodeGeneratorResponse_File) String() string { return proto.CompactTextString(m) }
 func (*CodeGeneratorResponse_File) ProtoMessage()    {}
 func (*CodeGeneratorResponse_File) Descriptor() ([]byte, []int) {
 	return fileDescriptor_3562add825dafed5, []int{2, 0}
 }
 
+func (m *CodeGeneratorResponse_File) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CodeGeneratorResponse_File.Unmarshal(m, b)
+}
+func (m *CodeGeneratorResponse_File) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CodeGeneratorResponse_File.Marshal(b, m, deterministic)
+}
+func (m *CodeGeneratorResponse_File) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CodeGeneratorResponse_File.Merge(m, src)
+}
+func (m *CodeGeneratorResponse_File) XXX_Size() int {
+	return xxx_messageInfo_CodeGeneratorResponse_File.Size(m)
+}
+func (m *CodeGeneratorResponse_File) XXX_DiscardUnknown() {
+	xxx_messageInfo_CodeGeneratorResponse_File.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CodeGeneratorResponse_File proto.InternalMessageInfo
+
 func (m *CodeGeneratorResponse_File) GetName() string {
 	if m != nil && m.Name != nil {
 		return *m.Name
@@ -324,35 +410,45 @@
 	return ""
 }
 
+func init() {
+	proto.RegisterType((*Version)(nil), "google.protobuf.compiler.Version")
+	proto.RegisterType((*CodeGeneratorRequest)(nil), "google.protobuf.compiler.CodeGeneratorRequest")
+	proto.RegisterType((*CodeGeneratorResponse)(nil), "google.protobuf.compiler.CodeGeneratorResponse")
+	proto.RegisterType((*CodeGeneratorResponse_File)(nil), "google.protobuf.compiler.CodeGeneratorResponse.File")
+}
+
+func init() {
+	proto.RegisterFile("google/protobuf/compiler/plugin.proto", fileDescriptor_3562add825dafed5)
+}
+
 var fileDescriptor_3562add825dafed5 = []byte{
-	// 417 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0xcf, 0x6a, 0x14, 0x41,
-	0x10, 0xc6, 0x19, 0x77, 0x63, 0x98, 0x8a, 0x64, 0x43, 0x13, 0xa5, 0x09, 0x39, 0x8c, 0x8b, 0xe2,
-	0x5c, 0x32, 0x0b, 0xc1, 0x8b, 0x78, 0x4b, 0x44, 0x3d, 0x78, 0x58, 0x1a, 0xf1, 0x20, 0xc8, 0x30,
-	0x99, 0xd4, 0x74, 0x5a, 0x66, 0xba, 0xc6, 0xee, 0x1e, 0xf1, 0x49, 0x7d, 0x0f, 0xdf, 0x40, 0xfa,
-	0xcf, 0x24, 0xb2, 0xb8, 0xa7, 0xee, 0xef, 0x57, 0xd5, 0xd5, 0x55, 0x1f, 0x05, 0x2f, 0x25, 0x91,
-	0xec, 0x71, 0x33, 0x1a, 0x72, 0x74, 0x33, 0x75, 0x9b, 0x96, 0x86, 0x51, 0xf5, 0x68, 0x36, 0x63,
-	0x3f, 0x49, 0xa5, 0xab, 0x10, 0x60, 0x3c, 0xa6, 0x55, 0x73, 0x5a, 0x35, 0xa7, 0x9d, 0x15, 0xbb,
-	0x05, 0x6e, 0xd1, 0xb6, 0x46, 0x8d, 0x8e, 0x4c, 0xcc, 0x5e, 0xb7, 0x70, 0xf8, 0x05, 0x8d, 0x55,
-	0xa4, 0xd9, 0x29, 0x1c, 0x0c, 0xcd, 0x77, 0x32, 0x3c, 0x2b, 0xb2, 0xf2, 0x40, 0x44, 0x11, 0xa8,
-	0xd2, 0x64, 0xf8, 0xa3, 0x44, 0xbd, 0xf0, 0x74, 0x6c, 0x5c, 0x7b, 0xc7, 0x17, 0x91, 0x06, 0xc1,
-	0x9e, 0xc1, 0x63, 0x3b, 0x75, 0x9d, 0xfa, 0xc5, 0x97, 0x45, 0x56, 0xe6, 0x22, 0xa9, 0xf5, 0x9f,
-	0x0c, 0x4e, 0xaf, 0xe9, 0x16, 0x3f, 0xa0, 0x46, 0xd3, 0x38, 0x32, 0x02, 0x7f, 0x4c, 0x68, 0x1d,
-	0x2b, 0xe1, 0xa4, 0x53, 0x3d, 0xd6, 0x8e, 0x6a, 0x19, 0x63, 0xc8, 0xb3, 0x62, 0x51, 0xe6, 0xe2,
-	0xd8, 0xf3, 0xcf, 0x94, 0x5e, 0x20, 0x3b, 0x87, 0x7c, 0x6c, 0x4c, 0x33, 0xa0, 0xc3, 0xd8, 0x4a,
-	0x2e, 0x1e, 0x00, 0xbb, 0x06, 0x08, 0xe3, 0xd4, 0xfe, 0x15, 0x5f, 0x15, 0x8b, 0xf2, 0xe8, 0xf2,
-	0x45, 0xb5, 0x6b, 0xcb, 0x7b, 0xd5, 0xe3, 0xbb, 0x7b, 0x03, 0xb6, 0x1e, 0x8b, 0x3c, 0x44, 0x7d,
-	0x84, 0x7d, 0x82, 0x93, 0xd9, 0xb8, 0xfa, 0x67, 0xf4, 0x24, 0x8c, 0x77, 0x74, 0xf9, 0xbc, 0xda,
-	0xe7, 0x70, 0x95, 0xcc, 0x13, 0xab, 0x99, 0x24, 0xb0, 0xfe, 0x9d, 0xc1, 0xd3, 0x9d, 0x99, 0xed,
-	0x48, 0xda, 0xa2, 0xf7, 0x0e, 0x8d, 0x49, 0x3e, 0xe7, 0x22, 0x0a, 0xf6, 0x11, 0x96, 0xff, 0x34,
-	0xff, 0x7a, 0xff, 0x8f, 0xff, 0x2d, 0x1a, 0x66, 0x13, 0xa1, 0xc2, 0xd9, 0x37, 0x58, 0x86, 0x79,
-	0x18, 0x2c, 0x75, 0x33, 0x60, 0xfa, 0x26, 0xdc, 0xd9, 0x2b, 0x58, 0x29, 0x6d, 0xd1, 0x38, 0x45,
-	0xba, 0x1e, 0x49, 0x69, 0x97, 0xcc, 0x3c, 0xbe, 0xc7, 0x5b, 0x4f, 0x19, 0x87, 0xc3, 0x96, 0xb4,
-	0x43, 0xed, 0xf8, 0x2a, 0x24, 0xcc, 0xf2, 0x4a, 0xc2, 0x79, 0x4b, 0xc3, 0xde, 0xfe, 0xae, 0x9e,
-	0x6c, 0xc3, 0x6e, 0x06, 0x7b, 0xed, 0xd7, 0x37, 0x52, 0xb9, 0xbb, 0xe9, 0xc6, 0x87, 0x37, 0x92,
-	0xfa, 0x46, 0xcb, 0x87, 0x65, 0x0c, 0x97, 0xf6, 0x42, 0xa2, 0xbe, 0x90, 0x94, 0x56, 0xfa, 0x6d,
-	0x3c, 0x6a, 0x49, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xf7, 0x15, 0x40, 0xc5, 0xfe, 0x02, 0x00,
-	0x00,
+	// 416 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0xcf, 0x6a, 0xd5, 0x40,
+	0x14, 0xc6, 0x89, 0xbd, 0xb5, 0xe4, 0x54, 0x7a, 0xcb, 0x50, 0x65, 0x28, 0x5d, 0xc4, 0x8b, 0x62,
+	0x56, 0x09, 0x5c, 0x04, 0x17, 0xee, 0x5a, 0x51, 0x17, 0x2e, 0x2e, 0x83, 0xb8, 0x10, 0x24, 0xa4,
+	0xe9, 0xb9, 0xe9, 0x48, 0x32, 0x67, 0x9c, 0x99, 0x14, 0x7d, 0x51, 0xdf, 0xc3, 0x37, 0x90, 0xf9,
+	0x93, 0x56, 0x2e, 0xde, 0x55, 0xf2, 0xfd, 0xbe, 0x33, 0x33, 0xe7, 0x7c, 0x1c, 0x78, 0xd9, 0x13,
+	0xf5, 0x03, 0xd6, 0xda, 0x90, 0xa3, 0xeb, 0x69, 0x5b, 0x77, 0x34, 0x6a, 0x39, 0xa0, 0xa9, 0xf5,
+	0x30, 0xf5, 0x52, 0x55, 0xc1, 0x60, 0x3c, 0x96, 0x55, 0x73, 0x59, 0x35, 0x97, 0x9d, 0x17, 0xbb,
+	0x17, 0xdc, 0xa0, 0xed, 0x8c, 0xd4, 0x8e, 0x4c, 0xac, 0x5e, 0x75, 0x70, 0xf4, 0x05, 0x8d, 0x95,
+	0xa4, 0xd8, 0x19, 0x1c, 0x8e, 0xed, 0x77, 0x32, 0x3c, 0x2b, 0xb2, 0xf2, 0x50, 0x44, 0x11, 0xa8,
+	0x54, 0x64, 0xf8, 0xa3, 0x44, 0xbd, 0xf0, 0x54, 0xb7, 0xae, 0xbb, 0xe5, 0x07, 0x91, 0x06, 0xc1,
+	0x9e, 0xc1, 0x63, 0x3b, 0x6d, 0xb7, 0xf2, 0x27, 0x5f, 0x14, 0x59, 0x99, 0x8b, 0xa4, 0x56, 0x7f,
+	0x32, 0x38, 0xbb, 0xa2, 0x1b, 0xfc, 0x80, 0x0a, 0x4d, 0xeb, 0xc8, 0x08, 0xfc, 0x31, 0xa1, 0x75,
+	0xac, 0x84, 0xd3, 0xad, 0x1c, 0xb0, 0x71, 0xd4, 0xf4, 0xd1, 0x43, 0x9e, 0x15, 0x07, 0x65, 0x2e,
+	0x4e, 0x3c, 0xff, 0x4c, 0xe9, 0x04, 0xb2, 0x0b, 0xc8, 0x75, 0x6b, 0xda, 0x11, 0x1d, 0xc6, 0x56,
+	0x72, 0xf1, 0x00, 0xd8, 0x15, 0x40, 0x18, 0xa7, 0xf1, 0xa7, 0xf8, 0xb2, 0x38, 0x28, 0x8f, 0xd7,
+	0x2f, 0xaa, 0xdd, 0x58, 0xde, 0xcb, 0x01, 0xdf, 0xdd, 0x07, 0xb0, 0xf1, 0x58, 0xe4, 0xc1, 0xf5,
+	0x0e, 0xfb, 0x04, 0xa7, 0x73, 0x70, 0xcd, 0x5d, 0xcc, 0x24, 0x8c, 0x77, 0xbc, 0x7e, 0x5e, 0xed,
+	0x4b, 0xb8, 0x4a, 0xe1, 0x89, 0xe5, 0x4c, 0x12, 0x58, 0xfd, 0xce, 0xe0, 0xe9, 0xce, 0xcc, 0x56,
+	0x93, 0xb2, 0xe8, 0xb3, 0x43, 0x63, 0x52, 0xce, 0xb9, 0x88, 0x82, 0x7d, 0x84, 0xc5, 0x3f, 0xcd,
+	0xbf, 0xde, 0xff, 0xe2, 0x7f, 0x2f, 0x0d, 0xb3, 0x89, 0x70, 0xc3, 0xf9, 0x37, 0x58, 0x84, 0x79,
+	0x18, 0x2c, 0x54, 0x3b, 0x62, 0x7a, 0x26, 0xfc, 0xb3, 0x57, 0xb0, 0x94, 0xca, 0xa2, 0x71, 0x92,
+	0x54, 0xa3, 0x49, 0x2a, 0x97, 0xc2, 0x3c, 0xb9, 0xc7, 0x1b, 0x4f, 0x19, 0x87, 0xa3, 0x8e, 0x94,
+	0x43, 0xe5, 0xf8, 0x32, 0x14, 0xcc, 0xf2, 0x12, 0xe1, 0xa2, 0xa3, 0x71, 0x6f, 0x7f, 0x97, 0x4f,
+	0x36, 0x61, 0x37, 0x43, 0xbc, 0xf6, 0xeb, 0x9b, 0x5e, 0xba, 0xdb, 0xe9, 0xda, 0xdb, 0x75, 0x4f,
+	0x43, 0xab, 0xfa, 0x87, 0x65, 0xbc, 0x5b, 0xd7, 0xee, 0x97, 0x46, 0x9b, 0xb6, 0xf9, 0x6d, 0xfc,
+	0x34, 0xc1, 0xff, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xa3, 0xfc, 0xb6, 0x26, 0xfc, 0x02, 0x00, 0x00,
 }
 
 func init() {
diff --git a/types/plugin/plugin.proto b/types/plugin/plugin.proto
index 5b55745..e368027 100644
--- a/types/plugin/plugin.proto
+++ b/types/plugin/plugin.proto
@@ -49,7 +49,7 @@
 option java_package = "com.google.protobuf.compiler";
 option java_outer_classname = "PluginProtos";
 
-option go_package = "github.com/golang/protobuf/protoc-gen-go/plugin;plugin_go";
+option go_package = "github.com/golang/protobuf/v2/types/plugin;plugin_proto";
 
 import "google/protobuf/descriptor.proto";
 
